Shadowsocks (简体中文)

From ArchWiki
Jump to navigation Jump to search

Shadowsocks 是一个轻量级 SOCKS5 代理。

安装

安装 shadowsocks-libev (Libev) 或 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]

守护进程管理

Start/enable shadowsocks-libev@配置文件.service.

如在 /etc/shadowsocks/ 中创建了 foo.json 配置文件,那么以下命令就可以使用该配置:

# systemctl start shadowsocks-libev@foo.service

为其它程序配置代理

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

服务端

加密方法

警告:
AEAD Cipher
Name Alias Key Size Salt Size Nonce Size Tag Size
AEAD_CHACHA20_POLY1305 chacha20-ietf-poly1305 32 32 12 16
AEAD_AES_256_GCM aes-256-gcm 32 32 12 16
AEAD_AES_128_GCM aes-128-gcm 16 16 12 16
注意: shadowsocks 不支持某些加密方式,chacha20 以及 salsa20 的支持需要 libsodium.

守护进程管理

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

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

多端口运行

注意: shadowsocks-libev 不支持多端口。

将配置文件中的 server_portpassword 配置删去,添加上 "port_password" 字段配置端口及其密码,示例:

/etc/shadowsocks/config.json
{
    "server": "0.0.0.0",
    "port_password": {
        "8381": "foobar1",
        "8382": "foobar2",
        "8383": "foobar3",
        "8384": "foobar4"
    },
    "timeout": 300,
    "method": "aes-256-cfb"
}

性能优化

参阅