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 使用 shadowsocks@.service
或 shadowsocks-libev@.service
實例控制。
要使用配置文件 /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[失效連結 2022-09-23 ⓘ].
安裝 python-m2crypto包 包將會使加密更快一點。
要使用 Salsa20 或 ChaCha20 加密,安裝 libsodium包 包。