Shadowsocks

出自 Arch Linux 中文维基

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 數量

使用[編輯 | 編輯原始碼]

客戶端[編輯 | 編輯原始碼]

警告: udns 用作 DNS 的存根解析程序。為了防止客戶端應用程式(如瀏覽器)的 DNS 請求泄漏,必須使用其他應用程式。例如客戶端上的 Privoxy 或完整的 DNS 解析程序。[1] [2]

通過命令行[編輯 | 編輯原始碼]

使用 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@.serviceshadowsocks-libev@.service 實例控制。

要使用配置文件 /etc/shadowsocks/config.json啟動啟用 shadowsocks-libev-server@config.serviceshadowsocks-server@config.service.

您可能也會對在網絡啟動後[損壞的連結:無效的章節]運行 shadowsocks@shadowsocks-libev@ 實例感興趣。

提示:以 root 運行 journalctl -u shadowsocks@foo 來查看日誌。

圖形界面客戶端[編輯 | 編輯原始碼]

安裝 shadowsocks-qt5

為其它程序配置代理[編輯 | 編輯原始碼]

Shadowsocks 客戶端啟動後,其它程序並不會直接使用,可使用以下方法對其進行配置。

全局代理[編輯 | 編輯原始碼]

使用 iptables 等工具。

注意: 使用全局代理會使所有的連接通過 Shadowsocks 伺服器中轉,一般不建議使用全局代理。
程序設置[編輯 | 編輯原始碼]

不少程序都能在其設置中添加代理。只需要在其設置中找到網絡相關配置,添加 SOCKS5 代理,參照本地配置文件中的地址和端口填寫即可(例如瀏覽器可參考下文 #瀏覽器配置)。

使用工具進行臨時代理[編輯 | 編輯原始碼]

例如 proxychains-ngtsocks. 參見 Proxy server#Using a SOCKS proxy.

轉換為 HTTP 代理[編輯 | 編輯原始碼]

直接使用 SOCKS5 代理有時未必是用戶的期望,可使用 PrivoxySquid 等軟件轉換為 HTTP 代理。

以 Privoxy 為例,編輯配置文件,添加 SOCKS5 轉發:

forward-socks5 / 127.0.0.1:1080 .

默認監聽的是本機的 8118 端口,即 localhost:8118,可更改為監聽其他端口:

listen-address  127.0.0.1:8010
提示:如果希望網絡上其他主機也能使用該 Privoxy 配置,可以更改 127.0.0.10.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"
瀏覽器配置[編輯 | 編輯原始碼]
提示:瀏覽器直接使用 SOCKS 代理時,你可能需要使用 Privoxy 等輔助程序,因為一般瀏覽器會泄漏你的DNS請求,從而降低你的匿名性,參見 #轉換為 HTTP 代理
  • Firefox
    • 使用如 SwitchyOmegaFoxyProxy 等擴展。
    • 直接在 首選項 > 常規 > 網絡代理 中設置 手動代理配置 或者 自動代理配置的 URL(PAC)
      • 使用 手動代理配置:在 SOCKS 主機 欄填上 Shadowsocks 設置的本地地址和端口,點選 SOCKS v5,保存即可。
      • 使用 自動代理配置的 URL(PAC):可使用 genpac 工具生成。
  • Chrome/Chromium

服務端[編輯 | 編輯原始碼]

守護進程管理[編輯 | 編輯原始碼]

shadowsocks-libev: start/enable shadowsocks-libev-server@配置文件.service

shadowsocks: start/enable shadowsocks-server@配置文件.service

多端口運行[編輯 | 編輯原始碼]

將配置文件中的 "server_port""password" 字段刪去,添加 "port_password" 字段配置端口及其密碼。

參見 Configure Multiple Users 中的示例。

性能優化[編輯 | 編輯原始碼]

加密[編輯 | 編輯原始碼]

參見 AEAD Ciphers[失效連結 2022-09-23 ⓘ].

安裝 python-m2crypto 包將會使加密更快一點。

要使用 Salsa20ChaCha20 加密,安裝 libsodium 包。

參閱[編輯 | 編輯原始碼]