这是因为高版本的ubuntu没有低版本的libcrypto.so1.0 libcrypto.so.1.1文件。
可以下载指定版本并安装,即可解决找不到文件的问题。
1. 直接下载deb包
wget https://debian.mirror.ac.za/debian/pool/main/o/openssl/libssl1.1_1.1.1w-0%2Bdeb11u1_amd64.deb
sudo dpkg -i libssl1.1_1.1.1o-1_amd64.deb
2. 在官网下载源码
#从官网下载
# wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
#腾讯云提供的镜像wget https://mirrors.cloud.tencent.com/openssl/source/openssl-1.1.1g.tar.g
#安装
tar -xvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make && make install
代理服务器是一种服务器应用程序,充当最终用户和Internet资源之间的网关。通过代理服务器,最终用户能够出于各种目的控制和监视其Web流量,包括隐私、安全和缓存。例如,您可以使用代理服务器从与您自己的IP地址不同的IP地址发出Web请求。您还可以使用代理服务器来研究不同司法管辖区的网络服务方式,或避免某些监视或网络流量限制方法。
Dante 是一个稳定、流行、开源的SOCKS代理。在本教程中,您将安装和配置Dante以在Ubuntu 20.04服务器上提供SOCKS代理。
先决条件
要完成本指南,您将需要:
- Ubuntu 20.04服务器和具有sudo权限的非root用户。您可以在我们的Ubuntu 20.04初始服务器设置指南中了解有关如何设置具有这些权限的用户的更多信息。
在本教程中,您将使用域名your_domain,但应将其替换为您自己的域名或IP地址。
第1步 — 安装Dante
Dante是一个开源的SOCKS代理服务器。SOCKS是一种不太广泛使用的协议,但它对于某些点对点应用程序更有效,并且对于某些类型的流量,它比HTTP更受欢迎。首先,以非root用户身份运行以下命令,以更新软件包列表并安装Dante:
sudo apt update
sudo apt install dante-server
Dante还会自动设置后台服务,并在安装后启动。但是,它被设计为在首次运行时正常退出并显示错误消息,因为它在出厂时禁用了所有功能。您可以使用以下命令进行验证:systemctl
systemctl status danted.service
Output● danted.service - SOCKS (v4 and v5) proxy daemon (danted)
Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-12-15 21:48:22 UTC; 1min 45s ago
Docs: man:danted(8)
man:danted.conf(5)
Main PID: 14496 (code=exited, status=1/FAILURE)
Dec 15 21:48:21 proxies systemd[1]: Starting SOCKS (v4 and v5) proxy daemon (danted)...
Dec 15 21:48:22 proxies systemd[1]: Started SOCKS (v4 and v5) proxy daemon (danted).
Dec 15 21:48:22 proxies danted[14496]: Dec 15 21:48:22 (1639604902.102601) danted[14496]: warning: checkconfig(): no socks authentication methods enabled. This means all socks requests will be blocked after negotiation. Perhaps this is not intended?
要成功启动Dante的服务,您需要在配置文件中启用它们。
默认情况下,Dante的配置文件在 中提供。如果您使用或您喜欢的文本编辑器打开此文件,您将看到一长串配置选项,所有这些选项都被禁用。您可以尝试浏览此文件并逐行启用某些选项,但实际上删除此文件并从头开始替换它会更有效、更易读。不要担心这样做。您可以随时通过导航到其在线手册来查看Dante的默认配置,如果您愿意,您甚至可以从Ubuntu的软件包列表中手动重新下载软件包以重新获取库存配置文件。同时,继续删除它:/etc/danted.confnano
sudo rm /etc/danted.conf
现在,您可以用更简洁的内容替换它。如果文件不存在,使用文本编辑器打开文件将自动创建该文件,因此通过使用或您喜欢的文本编辑器,您现在应该得到一个空的配置文件:nano
sudo nano /etc/danted.conf
添加以下内容:
/etc/danted.conf文件
logoutput: syslog
user.privileged: root
user.unprivileged: nobody
# The listening network interface or address.
internal: 0.0.0.0 port=1080
# The proxying network interface or address.
external: eth0
# socks-rules determine what is proxied through the external interface.
socksmethod: username
# client-rules determine who can connect to the internal interface.
clientmethod: none
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
现在,您有一个可用的SOCKS服务器配置,该配置在端口1080上运行,这是SOCKS的常见约定。您还可以逐行分解此配置文件的其余部分:
- logoutput指Dante将如何记录连接,在本例中为常规系统日志记录
- user.privileged允许Dante具有检查权限的权限root
- user.unprivileged不授予服务器以非特权用户身份运行的任何权限,因为在不授予更精细的权限时,这是不必要的
- internal连接详细信息指定运行服务的端口以及可以连接的IP地址
- external连接详细信息指定用于出站连接的网络接口,默认情况下在大多数服务器上eth0
其余的配置详细信息涉及身份验证方法,下一节将对此进行讨论。如果您使用以下命令,请不要忘记在防火墙中打开端口1080:
sudo ufw allow 1080
此时,您可以重新启动Dante并连接到它,但您将拥有一个向全世界开放的SOCKS服务器,您可能不想要它,因此您将首先学习如何保护它。
第2步 — 保护Dante
如果您到目前为止遵循了本教程,Dante将使用常规的Linux用户帐户进行身份验证。这很有帮助,但用于该连接的密码将通过纯文本发送,因此创建一个没有任何其他登录权限的专用SOCKS用户非常重要。为此,您将使用不会将登录shell分配给用户的标志,然后设置密码:
sudo useradd -r -s /bin/false your_dante_user
sudo passwd your_dante_user
您还需要避免通过不安全的无线连接登录此帐户或过于广泛地共享服务器。否则,恶意行为者可以并且将会反复尝试登录。
Dante支持其他身份验证方法,但许多将连接到SOCKS代理的客户端(即应用程序)仅支持基本的用户名和密码身份验证,因此您可能希望将该部分保持原样。作为替代方法,您可以做的是将访问限制为仅特定IP地址。这不是最复杂的选择,但考虑到这里使用的技术组合,这是一个明智的选择。您可能已经从我们的先决条件教程中学习了如何限制对特定IP地址的访问,但您也可以直接在Dante中执行此操作。编辑您的 :
sudo nano /etc/danted.conf
/etc/danted.conf文件
…
client pass {
from: your_ip_address/0 to: 0.0.0.0/0
}
为了支持多个IP地址,您可以使用 CIDR表示法,或者只添加另一个配置块:client pass {}
/etc/danted.conf文件
client pass {
from: your_ip_address/0 to: 0.0.0.0/0
}
client pass {
from: another_ip_address/0 to: 0.0.0.0/0
}
之后,您终于可以使用配置更改重新启动Dante。
sudo systemctl restart danted.service
这一次,当您检查服务状态时,您应该看到它正在运行,没有任何错误:
systemctl status danted.service
Output● danted.service - SOCKS (v4 and v5) proxy daemon (danted)
Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enable>
Active: active (running) since Thu 2021-12-16 18:06:26 UTC; 24h ago
在下一步中,您将最终连接到您的代理。
第3步 — 通过Dante连接
为了演示您的Dante服务器,您将使用一个名为 的命令行程序,该程序在发出不同类型的Web请求时很受欢迎。通常,如果要验证给定连接在理想情况下是否应在浏览器中工作,则应始终首先使用 进行测试。为此,您将在本地计算机上使用curl – 默认情况下,它安装在所有现代Windows、Mac和Linux环境中,因此您可以打开任何本地shell来运行此命令:
curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
Output* Trying 138.197.103.77...
* TCP_NODELAY set
* SOCKS5 communication to www.google.com:80
* SOCKS5 connect to IPv4 142.250.189.228 (locally resolved)
* SOCKS5 request granted.
* Connected to 138.197.103.77 (138.197.103.77) port 1080 (#0)
> GET / HTTP/1.1
…
代理服务器是一种服务器应用程序,充当最终用户和Internet资源之间的网关。通过代理服务器,最终用户能够出于各种目的控制和监视其Web流量,包括隐私、安全和缓存。例如,您可以使用代理服务器从与您自己的IP地址不同的IP地址发出Web请求。您还可以使用代理服务器来研究不同司法管辖区的网络服务方式,或避免某些监视或网络流量限制方法。
Squid 是一个稳定、流行、开源的HTTP代理。在本教程中,您将安装和配置Squid以在Ubuntu 20.04服务器上提供HTTP代理。
先决条件
要完成本指南,您将需要:
- Ubuntu 20.04服务器和具有sudo权限的非root用户。您可以在我们的Ubuntu 20.04初始服务器设置指南中了解有关如何设置具有这些权限的用户的更多信息。
在本教程中,您将使用域名your_domain,但应将其替换为您自己的域名或IP地址。
第1步 — 安装Squid代理
除了路由单个用户的出站流量之外,Squid还有许多用例。在大规模服务器部署的上下文中,它可以用作分布式缓存机制、负载平衡器或路由堆栈的其他组件。但是,一些水平扩展服务器流量的方法通常涉及代理服务器,但其受欢迎程度已被容器化框架(如Kubernetes)所超越,这些框架分发了应用程序的更多组件。同时,使用代理服务器以个人用户身份重定向Web请求对于保护您的隐私变得越来越流行。在使用开源代理服务器时,记住这一点很有帮助,这些服务器在低优先级维护模式下可能看起来有数十种功能。代理的用例随着时间的推移而变化,但基本技术没有变化。
首先,以非root用户身份运行以下命令,以更新软件包列表并安装Squid Proxy:
sudo apt update
sudo apt install squid
Squid会自动设置后台服务,并在安装后启动。您可以检查服务是否正常运行:
systemctl status squid.service
Output● squid.service - Squid Web Proxy Server
Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-12-15 21:45:15 UTC; 2min 11s ago
默认情况下,Squid不允许任何客户端从此服务器外部连接到它。为了启用此功能,您需要对其配置文件进行一些更改,该文件存储在 .在您喜欢的文本编辑器中打开它:/etc/squid/squid.confnano
请注意,Squid的默认配置文件非常非常长,并且包含大量选项,这些选项通过在它们所在的行的开头放置a来暂时禁用,也称为被注释掉。您很可能希望搜索文件以查找要编辑的行。在 中,这是通过按 ,输入搜索词,按 ,然后根据需要反复按以查找该词的下一个实例来完成的。#nanoCtrl+WEnterAlt+W
首先导航到包含短语 的行。您应该会看到一个文本块,解释Squid的默认访问规则:http_access deny all
/etc/squid/squid.conf
. . .
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
include /etc/squid/conf.d/*
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
. . .
由此,您可以看到当前行为 – 是允许的;其他连接则不然。请注意,这些规则是按顺序解析的,因此最好将规则保留在此配置块的底部。您可以将该规则更改为 ,使任何人都可以连接到您的代理服务器,但您可能不想这样做。相反,您可以在上面添加一行,其中包含您自己的IP地址,如下所示:localhostdeny allallow allhttp_access allow localhost
/etc/squid/squid.conf
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
include /etc/squid/conf.d/*
# Example rule allowing access from your local networks.
acl localnet src your_ip_address
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost
- acl 表示 Access Control List,这是权限策略的常用术语
- 在本例中,localnet 是ACL的名称。
- src 是此ACL下请求的来源,即您的IP地址。
如果您不知道自己的本地IP地址,最好访问"我的IP是什么"之类的网站,它可以告诉您从哪里访问它。进行更改后,保存并关闭文件。如果您使用的是 ,请按 ,然后在出现提示时按 ,然后按 。nanoCtrl+XYEnter
此时,您可以重新启动Squid并连接到它,但为了首先保护它,您可以执行更多操作。
第2步 — 保护Squid
大多数代理和连接到代理的大多数客户端应用程序(例如Web浏览器)都支持多种身份验证方法。这些可以包括共享密钥或单独的身份验证服务器,但最常见的是常规的用户名-密码对。Squid允许您使用内置的Linux功能创建用户名-密码对,作为通过IP地址限制对代理访问的附加或替代步骤。为此,您将创建一个名为Squid的文件,并将Squid的配置指向该文件。/etc/squid/passwords
首先,您需要从Apache项目中安装一些实用程序,以便访问Squid喜欢的密码生成器。
sudo apt install apache2-utils
此软件包提供了命令,您可以使用该命令为新的Squid用户生成密码。Squid的用户名不会以任何方式与系统用户名重叠,因此您可以根据需要使用与登录时相同的名称。系统还会提示您添加密码:htpasswd
sudo htpasswd -c /etc/squid/passwords your_squid_username
这将存储您的用户名以及新密码的哈希值,这将被Squid用作身份验证源。之后,您可以查看该文件,看看它是什么样子的:/etc/squid/passwordscat
sudo cat /etc/squid/passwords
在验证您的用户名和密码已存储后,您可以更新Squid的配置以使用您的新文件。使用或您喜欢的文本编辑器,重新打开Squid配置文件并添加以下突出显示的行:/etc/squid/passwordsnano
sudo nano /etc/squid/squid.conf
…
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
include /etc/squid/conf.d/*
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# Example rule allowing access from your local networks.
acl localnet src your_ip_address
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all
…
这些附加指令告诉Squid在新文件中签入可以使用该机制解析的密码哈希,并要求身份验证才能访问您的代理。您可以查看 Squid的文档,了解有关此身份验证方法或其他身份验证方法的更多信息。之后,您终于可以使用配置更改重新启动Squid。这可能需要一些时间才能完成。passwordsbasic_ncsa_auth
sudo systemctl restart squid.service
如果您使用以下命令,请不要忘记在防火墙中打开端口3128:ufw
sudo ufw allow 3128
在下一步中,您将最终连接到您的代理。
第3步 — 通过Squid连接
为了演示您的Squid服务器,您将使用一个名为 的命令行程序,该程序在发出不同类型的Web请求时很受欢迎。通常,如果要验证给定连接在理想情况下是否应在浏览器中工作,则应始终首先使用 进行测试。为此,您将在本地计算机上使用curl – 默认情况下,它安装在所有现代Windows、Mac和Linux环境中,因此您可以打开任何本地shell来运行此命令:
curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 http://www.google.com/
该参数将代理服务器传递给curl,在本例中,您正在使用该协议,为该服务器指定您的用户名和密码,然后连接到已知有效的网站,例如 .如果命令成功,应看到以下输出:
Output* Trying 138.197.103.77...
* TCP_NODELAY set
* Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0)
* Proxy auth using Basic with user 'sammy'
> GET http://www.google.com/ HTTP/1.1
也可以使用Squid代理访问网站,而无需进行任何进一步的配置更改。它们使用一个单独的代理指令,以在客户端和服务器之间保留SSL:https://CONNECT
curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 https://www.google.com/
Output* Trying 138.197.103.77...
* TCP_NODELAY set
* Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to www.google.com:443
* Proxy auth using Basic with user 'sammy'
> CONNECT www.google.com:443 HTTP/1.1
> Host: www.google.com:443
> Proxy-Authorization: Basic c2FtbXk6c2FtbXk=
> User-Agent: curl/7.55.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* CONNECT phase completed!
1. nethogs:nethogs是一个Linux命令行工具,可以实时显示网络流量,并确定哪些应用程序正在使用网络。安装命令如下:
sudo apt install nethogs
安装完成后,你可以使用以下命令来查看网络流量:
nethogs eth0
其中,eth0是网卡名称,你可以根据实际情况替换为本身的网卡名称。
2. ethstatus:ethstatus是一个监控实时网卡带宽占用的工具。安装命令如下:
sudo apt-get install ethstatus
安装完成后,你可以使用以下命令来查看ADSL的速度:
ethstatus -i eth0
其中,eth0是网卡名称,你可以根据实际情况替换为本身的网卡名称。
3. bmon:bmon是一个用于监视网络性能的工具。安装命令如下:
sudo apt-get install bmon
安装完成后,你可以使用以下命令来查看网络流量:
bmon -p eth0 -I distribution:multicast -o null -O html:path=/var/htdocs/ 2> /dev/null &
其中,eth0是网卡名称,你可以根据实际情况替换为本身的网卡名称。上述命令会将网络流量信息输出到 /var/htdocs/ 目录下的名为nethogs的HTML文件中,你可以通过浏览器查看网络流量。
修复命令:
sudo apt install lsb-core
sudo apt install fuse squashfuse
需要安装squashfs。
要获得带有squashfs文件系统的工作系统:
sudo apt-get install live-boot live-boot-initramfs-tools extlinux
sudo update-initramfs -u
从引导或运行的ubuntu文件系统创建一个squashfs文件,其中包含您想要的任何可用软件包。https://help.ubuntu.com/community/LiveCDCustomizationFromScratch 为创建要构建的去引导系统提供了很好的说明。使用ext2/3/4格式化目标驱动器并启用可引导标志。在目标驱动器上创建文件夹布局并安装extlinux:
mkdir -p ${TARGET}/boot/extlinux ${TARGET}/live
extlinux -i ${TARGET}/boot/extlinux
dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdX #X is the drive letter
cp /boot/vmlinuz-$(uname -r) ${TARGET}/boot/vmlinuz
cp /boot/initrd.img-$(uname -r) ${TARGET}/boot/initrd
cp filesystem.squashfs ${TARGET}/live
创建${TARGET}/boot/extlinux/extlinux.conf,内容如下:
DEFAULT Live
LABEL Live
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd boot=live toram=filesystem.squashfs
TIMEOUT 10
PROMPT 0
现在,您应该能够从目标驱动器引导到解压的系统。
安装命令如下:
sudo apt-get update && sudo apt-get install squashfs-tools
sudo apt update
sudo apt install snapd
注意:安装包的名称是snapd。
要在linux/ubuntu系统中永久禁用 IPv6,可以通过本文编辑器来修改 /etc/sysctl.conf 文件:
将以下 3 行内容添加到 /etc/sysctl.conf 配置文件当中:
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
1. 一般安装docker已经有了docker用户组,以下命令可能返回已存在的信息。
sudo groupadd docker
2.将当前用户添加到 docker 组中
sudo usermod -aG docker 用户名
3.更新 docker 用户组
newgrp docker
4.重启 docker 服务
sudo service docker restart