如何在Ubuntu上设置Shadowsocks-libev代理服务器
本教程将向您展示如何在Ubuntu上设置Shadowsocks代理服务器。 Shadowsocks是一个轻便,快速且安全的Socks5代理,可绕过Internet审查。 我们将学习如何在Ubuntu上设置服务器端以及如何配置桌面客户端。 Shadowsocks的实现有很多,本教程向您展示如何使用Shadowsocks-libev,因为
- 它是用C编写的,即使在低端计算机上也非常快。
- 维护良好。
- 这是功能最丰富的实现。 支持TCP快速打开,多用户,管理API,重定向模式,隧道模式,UDP中继,AEAD密码和插件。
先决条件
要完成本教程,您将需要:
- VPS(虚拟专用服务器)。 我推荐Vultr。 他们以每月2.5美元的价格提供512M内存的高性能VPS,非常适合您的私有代理服务器。
- 然后在您的VPS上安装Ubuntu。
步骤1:在Ubuntu上安装Shadowsocks-libev Server
SSH到您的远程Ubuntu服务器。 Shadowsocks-libev
从17.04开始就包含在Ubuntu存储库中,因此您可以使用以下命令进行安装:
sudo apt update sudo apt install shadowsocks-libev
Ubuntu 16.04用户可以通过运行以下命令从PPA安装它。 software-properties-common
如果要从PPA安装软件,则需要。 它可能在您的Ubuntu服务器上丢失。
sudo apt install software-properties-common -y sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y sudo apt update sudo apt install shadowsocks-libev
钠密码库(libsodium)将与shadowsocks-libev一起安装。 如果要使用安全快速的ChaCha20-Poly1305加密方法,这是必需的。 安装完成后,编辑配置文件。
sudo nano /etc/shadowsocks-libev/config.json
文件的默认内容如下。
{ "server":["::1", "127.0.0.1"], "mode":"tcp_and_udp", "server_port":8388, "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" }
我们需要改变 127.0.0.1
至 0.0.0.0
,因此Shadowsocks-libev服务器将侦听公共IP地址。 然后改变 server_port
到其他端口号(例如8888)。密码是随机生成的,因此您可以保持原样。
保存并关闭文件。 然后重新启动shadowsocks-libev服务以使更改生效。
sudo systemctl restart shadowsocks-libev.service
在启动时启用自动启动。
sudo systemctl enable shadowsocks-libev.service
检查其状态。 确保它正在运行。
systemctl status shadowsocks-libev.service
如果看到以下错误。
This system doesn't provide enough entropy to quickly generate high-quality random numbers. The service will not start until enough entropy has been collected.
您可以通过安装来解决此错误 rng-tools
。
sudo apt-get install rng-tools
然后跑
sudo rngd -r /dev/urandom
现在,您可以启动Shadowsocks-libev服务。
步骤2:配置防火墙
如果您在服务器上使用iptables防火墙,则需要允许Shadowsocks正在侦听TCP和UDP端口的流量。 例如,如果Shadowsocks使用端口8888,则运行以下命令:
sudo iptables -I INPUT -p tcp --dport 8888 -j ACCEPT sudo iptables -I INPUT -p udp --dport 8888 -j ACCEPT
如果使用UFW防火墙,请运行以下命令:
sudo ufw allow 8888
如果您使用的是AWS或Google Cloud,则需要在基于Web的控制面板上配置防火墙。
步骤3:安装和配置Shadowsocks-libev客户端
Ubuntu桌面
的 shadowsocks-libev
软件包同时包含服务器软件和客户端软件。 在Ubuntu 20.04、18.04桌面上,运行以下命令以安装Shadowsocks-libev。
sudo apt update sudo apt install shadowsocks-libev
在Ubuntu 16.04桌面上,运行以下命令以安装Shadowsocks-libev。
sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y sudo apt update sudo apt install shadowsocks-libev
Shadowsocks-libev(服务器)将在安装后自动启动。 您需要在Ubuntu桌面上停止Shadowsocks服务器。
sudo systemctl stop shadowsocks-libev
另外,在引导时禁用自动启动。
sudo systemctl disable shadowsocks-libev
Shadowsocks客户端二进制文件名为 ss-local
。 有一个模板系统服务单元: /lib/systemd/system/[email protected]
。 在启动客户端之前,我们需要创建客户端配置文件。 我们可以将Shadowsocks-libev服务器配置复制到客户端配置文件。
sudo cp /etc/shadowsocks-libev/config.json /etc/shadowsocks-libev/location-of-your-server.json
您可以更换 location-of-your-server
使用SFO,LAX之类的东西。 然后编辑客户端配置文件。
sudo nano /etc/shadowsocks-libev/location-of-your-server.json
将服务器地址更改为服务器的公共IP地址,并添加以下行以告诉客户端侦听127.0.0.1。
"local_address":"127.0.0.1",
因此客户端配置文件将如下所示:
{ "server":"your-server-ip-address", "mode":"tcp_and_udp", "server_port":8888, "local_address":"127.0.0.1", "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" }
保存并关闭文件。 然后,我们可以通过以下方式启动客户端:
sudo systemctl start [email protected]
并在引导时启用自动启动。
sudo systemctl enable [email protected]
检查其状态。 确保它正在运行。
systemctl status [email protected]
现在,ss-local进程在Ubuntu桌面上监听127.0.0.1:1080,并将其连接到Shadowsocks服务器。
Windows桌面
Windows用户可以下载此Shadowsocks客户端。 安装完成后,您可以在客户端软件中添加新服务器。 指定服务器IP地址,端口和密码。 请点击 Apply
纽扣
如果您有多个代理服务器,则可以单击 Add
按钮添加更多代理服务器。 请注意,一次仅使用一个代理服务器。
步骤4:配置Web浏览器以使用Socks代理
要使您的程序使用袜子代理,该程序必须支持袜子代理。 诸如Firefox,Google Chrome和Dropbox之类的程序允许用户使用代理。 我将向您展示如何配置Firefox和Google Chrome。
火狐浏览器
在Firefox中,转到 编辑 > 优先 > 一般 (要么 工具类 -> 选件 -> 一般)。 然后向下滚动到底部并单击 设定值 在 网络代理。 在里面 连接设定 窗口中,选择 手动代理配置。 然后选择 袜子v5 因为Shadowsocks是Socks5代理。 输入 127.0.0.1
在“ SOCKS主机”字段中, 1080
在端口字段中。 确保 使用SOCKS v5时的代理DNS 已启用。 请点击 好 应用这些修改。
谷歌浏览器
虽然您可以从命令行配置Google Chrome和Chromium浏览器的代理,但我建议安装Proxy SwitchyOmega扩展来管理代理。
在Google Chrome浏览器中安装扩展程序后,请按以下步骤配置代理服务器:
- 选择
SOCKS5
协议。 - 组
127.0.0.1
作为服务器地址。 - 组
1080
作为端口号。
应用更改。 然后单击右上角的扩展程序图标,然后单击 Proxy SwithyOmega
。
默认情况下,SwithyOmega使用操作系统的代理设置。 我们需要从 system proxy
至 proxy
。
现在您的代理应该可以正常工作了。
步骤5:DNS泄漏测试
转到dnsleaktest.com。 您将看到Shadowsocks服务器的IP地址,表明您的代理正在工作。
单击标准测试。 确保您的本地ISP不在测试结果中。
命令行中的代理
要让您的命令行程序使用代理,您可以安装 tsocks
。
sudo apt install tsocks
然后编辑配置文件。
sudo nano /etc/tsocks.conf
找到以下行:
server = 192.168.0.1
更改为
server = 127.0.0.1
保存并关闭文件。 现在,您可以允许您的命令行程序使用Shadowsocks代理,如下所示:
sudo tsocks apt update
还有一个类似的程序称为proxychains。
启用TCP快速打开
您可以通过启用TCP快速打开来加快Shadowsocks的速度。 TCP是面向连接的协议,这意味着只能在建立连接后才能交换数据,这是通过三向握手完成的。 换句话说,传统上,数据只能在三向握手完成后才能交换。 TCP快速开放(TFO)是一种机制,它允许在三向握手完成之前交换数据,从而节省多达1个往返时间(RTT)。
从3.7版开始,TCP快速打开支持已合并到Linux内核,从3.13版开始默认启用。 您可以通过运行以下命令检查内核版本:
uname -r
要检查Ubuntu服务器上的TCP快速打开配置,请运行
cat /proc/sys/net/ipv4/tcp_fastopen
它可以返回4个值。
- 0表示禁用。
- 1表示已启用传出连接(作为客户端)。
- 2表示已启用传入连接(作为服务器)。
- 3表示已启用传出和传入连接。
我所有的Ubuntu VPS(虚拟专用服务器)已退回 1
运行以上命令后。 我们希望在服务器上将tcp_fastopen设置为3。 为此,我们可以编辑sysctl配置文件。
sudo nano /etc/sysctl.conf
然后将以下行粘贴到文件末尾。
net.ipv4.tcp_fastopen=3
重新加载sysctl设置以使更改生效。
sudo sysctl -p
然后,您还需要在Shadowsocks配置文件中启用TCP快速打开。
sudo nano /etc/shadowsocks-libev/config.json
添加以下行。
"fast_open": true
因此,您的Shadowsocks服务器配置文件将如下所示:
{ "server":"your-server-ip-address", "server_port":8388, "local_port":1080, "password":"focobguph", "timeout":60, "method":"chacha20-ietf-poly1305", "fast_open": true }
请注意,最后一个配置行没有逗号。 保存并关闭文件。 然后重新启动Shadowsocks服务器。
sudo systemctl restart shadowsocks-libev
检查它是否正在运行。 (配置文件中的错误可以阻止其重新启动。)
systemctl status shadowsocks-libev
您还需要编辑Shadowsocks客户端配置文件并重新启动它,以在Ubuntu桌面上启用TCP快速打开。
启用TCP BBR
TCP BBR是一种TCP拥塞控制算法,可以大大提高连接速度。 查看以下教程。
- 如何通过启用TCP BBR轻松提升Ubuntu网络性能
有关Shadowsocks的更多用法,请查看手册。
man shadowsocks-libev
故障排除
不时地,我的Shadowsocks-libev代理停止工作,并且当我使用以下命令检查状态时,在服务器端显示以下错误: systemctl
。
ERROR: server recv: Connection reset by peer
在客户端,错误返回 systemctl
是:
ERROR: remote_recv_cb_recv: Connection reset by peer
我不知道为什么会发生,但是重新启动 shadowsocks-libev
服务器上的服务可以解决此问题。
sudo systemctl restart shadowsocks-libev
我不想每次都手动重新启动服务,因此我添加了一个cron作业来定期为我执行该服务。
sudo crontab -e
将以下行放在文件末尾。
0 */3 * * * /bin/systemctl restart shadowsocks-libev
这将每3个小时重新启动一次服务。 也就是说,重启发生在12 am、3am、6am、9am等。 请注意,时间由cron确定。 无法通过计算服务运行多长时间来确定。
如果您在Shadowsocks-libev日志中看到以下错误。
ERROR: unable to resolve www.youtube.com
这意味着Shadowsocks-libev服务器无法成功解析DNS。 在 /etc/shadowsocks-libev/config.json
文件。 只需在文件中添加以下行,然后重新启动shadowsocks-libev服务即可。
"name_server":"1.1.1.1",
如果您在Shadowsocks服务器上运行自己的DNS解析器,则可以将127.0.0.1指定为名称服务器。
"name_server":"127.0.0.1",
请记住,在JSON文件中,最后一行不以逗号结尾。
而已! 我希望本教程可以帮助您在Ubuntu上安装Shadowsocks-libev代理。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻简报以获取更多提示和技巧。