Shadowsocks (简体中文)
Shadowsocks 是一个轻量级 SOCKS5 代理。
安装
安装 shadowsocks-libev (C) 或 shadowsocks (Python)。推荐使用 shadowsocks-libev。
配置
Shadowsocks 以 JSON 为配置文件格式,以下是软件包中的样例:
/etc/shadowsocks/config.json
{ "server":"my_server_ip", "server_port":8388, "local_address": "127.0.0.1", "local_port":1080, "password":"mypassword", "timeout":300, "method":"chacha20-ietf-poly1305", "fast_open": false, "workers": 1, "prefer_ipv6": false }
- 若需同时指定多个服务端地址,使用如下语法
"server":["1.1.1.1", "2.2.2.2"]
. - 要找出在你的机器上运行最快的方式,可以运行这个脚本。
名称 | 解释 |
---|---|
server | 服务端监听地址 |
server_port | 服务端端口 |
local_address | 本地监听地址 |
local_port | 本地端口 |
password | 用于加密的密码 |
timeout | 超时时间(秒) |
method | 加密方式,默认为 chacha20-ietf-poly1305
|
mode | 是否启用 TCP / UDP 转发,参阅 shadowsocks-libev(8) |
fast_open | 是否启用 TCP Fast Open |
workers | worker 数量 |
使用
客户端
通过命令行
使用 ss-local
命令启动客户端。
要使用 /etc/shadowsocks/config.json
配置文件启动客户端:
$ ss-local -c /etc/shadowsocks/config.json
或者,也可以直接在命令中指定配置:
$ ss-local -s 服务器地址 -p 服务器端口 -l 本地端口 -k 密码 -m 加密方式
要输出详细日志,添加 -v
命令:
$ ss-local -s 服务器地址 -p 服务器端口 -l 本地端口 -k 密码 -m 加密方式 -v
守护进程管理
Shadowsocks 客户端可以通过 systemctl 使用 [email protected]
或 [email protected]
实例控制。
要使用配置文件 /etc/shadowsocks/config.json
,启动并启用 shadowsocks-libev-server@config.service
或 shadowsocks-server@config.service
.
您可能也会对在网络启动后运行 shadowsocks@
或 shadowsocks-libev@
实例感兴趣。
journalctl -u shadowsocks@foo
来查看日志。图形界面客户端
安装 shadowsocks-qt5。
为其它程序配置代理
Shadowsocks 客户端启动后,其它程序并不会直接使用,可使用以下方法对其进行配置。
全局代理
使用 iptables 等工具。
程序设置
不少程序都能在其设置中添加代理。只需要在其设置中找到网络相关配置,添加 SOCKS5 代理,参照本地配置文件中的地址和端口填写即可(例如浏览器可参考下文 #浏览器配置)。
使用工具进行临时代理
例如 proxychains-ng 和 tsocks. 参见 Proxy server#Using a SOCKS proxy.
转换为 HTTP 代理
直接使用 SOCKS5 代理有时未必是用户的期望,可使用 Privoxy 或 Squid 等软件转换为 HTTP 代理。
以 Privoxy 为例,编辑配置文件,添加 SOCKS5 转发:
forward-socks5 / 127.0.0.1:1080 .
默认监听的是本机的 8118 端口,即 localhost:8118
,可更改为监听其他端口:
listen-address 127.0.0.1:8010
127.0.0.1
为 0.0.0.0
或直接删除 127.0.0.1
.重启 privoxy.service
.
假设转换后的 HTTP 代理为 127.0.0.1:8118
,则在终端中启动(以 Chromium 为例):
$ chromium --proxy-server="http://127.0.0.1:8118"
浏览器配置
- Firefox
- 使用如 SwitchyOmega 或 FoxyProxy 等扩展。
- 直接在 首选项 > 常规 > 网络代理 中设置 手动代理配置 或者 自动代理配置的 URL(PAC)。
- 使用 手动代理配置:在 SOCKS 主机 栏填上 Shadowsocks 设置的本地地址和端口,点选 SOCKS v5,保存即可。
- 使用 自动代理配置的 URL(PAC):可使用 genpac 工具生成。
- Chrome/Chromium
- 使用 SwitchyOmega 等插件。
服务端
守护进程管理
shadowsocks-libev: start/enable shadowsocks-libev-server@配置文件.service
shadowsocks: start/enable shadowsocks-server@配置文件.service
多端口运行
将配置文件中的 "server_port"
和 "password"
字段删去,添加 "port_password"
字段配置端口及其密码。
参见 Configure Multiple Users 中的示例。
性能优化
- 使用常用端口如
443
等。Great Firewall 为减轻压力,对常用端口检查相对较少。 - 启用 TCP Fast Open.
- 启用 BBR.
- 安装 python-gevent 提升 shadowsocks 的速度。
- 优化内核参数,参见 Optimizing Shadowsocks.
加密
参见 AEAD Ciphers.
安装 python-m2crypto 包将会使加密更快一点。
要使用 Salsa20 或 ChaCha20 加密,安装 libsodium 包。