Arch Linux 的官方包索引中就有 Shadowsocks 的 Python 版(包名为 shadowsocks)和 libev 版(包名为 shadowsocks-libev)。本文以 libev 版本(C 实现)为例.
通过命令 sudo su -
切换为 root 用户
具体安装 shadowsocks-libev 的命令如下:
pacman -Sy --noconfirm shadowsocks-libev
安装完成后,会有 ss-local, ss-manager, ss-nat, ss-redir, ss-server, ss-tunnel
命令可用。
添加配置文件
shadowsocks-libev 及 shadowsocks 的服务文件默认都会读取位于 /etc/shadowsocks/ 目录下 .json 格式的配置文件。
(注:如果 /etc/shadowsocks/ 目录不存在,则需要先创建该目录,命令为 mkdir /etc/shadowsocks
)
shadowsocks-libev 不提供默认配置文件,因此我们需要手动创建一个,如 /etc/shadowsocks/server
.json
{ "server": "0.0.0.0", "server_port": 1050, "password": "cetc50", "method": "chacha20-ietf-poly1305", "mode": "tcp_and_udp" }
"server"
: 选填,默认"0.0.0.0"
。配置客户端时填入服务器的实际 IP。"0.0.0.0"
表明服务端接受来自任何网络接口的连接。配置服务端时填入"0.0.0.0"
总是能生效,而不必填入服务器自身的 IP。"server_port"
: 必填。需要在客户端配置时填入相同的值。此处填入服务端要监听的端口。建议选择 1024 或以上的端口号,否则启动ss-server
时将会需要 root 权限。"password"
: 必填。需要在客户端配置时填入相同的值。连接服务端所需的密码,建议替换为复杂密码,避免被攻击者暴力破解。"method"
: 选填,默认"rc4-md5"
。需要在客户端配置时填入相同的值。服务端所用的加密方法,推荐以下几种算法:"chacha20-ietf-poly1305"
具有优秀的安全性,更佳的性能,属于 AEAD 加密算法,少部分客户端(如 iOS Wingy)不支持此算法;"aes-256-cfb"
具有足够安全性,且被各服务端及客户端广泛支持;"rc4-md5"
算法快速,且具有一定的安全性,适合运算能力受限的设备如路由器等。
"mode"
: 选填,默认"tcp_only"
。服务器所要监听的协议,可填"tcp_only"
,"udp_only"
和"tcp_and_udp"
。
填入"tcp_and_udp"
相当于命令行上提供-u
参数;填入"udp_only"
相当于命令行上提供-U
参数。
对于配置服务端,完成以上几项配置就足够了。
启动 Shadowsocks 服务
有了 Shadowsocks 服务端的配置文件后,我们通过 systemd 启动 Shadowsocks 的服务端服务:
systemctl start shadowsocks-libev-server@server
注意,此处的 @server
与上文中我们创建的配置文件 server.json
是相对应的。
如之前创建的配置文件名为 example.json,那么此处的命令就应该为 @example。
不过,无论配置文件取名如何,都应该放在 /etc/shadowsocks/ 目录下,否则服务将无法定位到相应的配置文件。
检查 Shadowsocks 服务状态
要确认 Shadowsocks 的服务运行状态及最新日志,我们可以执行命令:
systemctl status shadowsocks-libev-server@server
要查看 Shadowsocks 服务的全部日志,我们可以执行命令:
journalctl -u shadowsocks-libev-server@server
配置服务开机自启
上文中,我们通过 systemctl start
启动了服务,但是如果我们想要服务能在开机时自动启动,还需要执行以下命令:
systemctl enable shadowsocks-libev-server@server
至此,服务端所需要的所有配置就都已经完成了。