Shadowsocks (简体中文)

From ArchWiki
Jump to: navigation, search

Shadowsocks是一个轻量级socks5代理,有多种实现方式。

安装

可自[community]中安装已打包好的shadowsocks。

shadowsocks-libevshadowsocks shadowsocks基本包
libsodium
python2-numpy
python2-salsa20
Salsa20和Chacha20支持;

配置

shadowsocks以json为配置文件格式,以下是一个样例:

/etc/shadowsocks/config.json
{
	"server":"remote-shadowsocks-server-ip-addr",
	"server_port":443,
	"local_address":"127.0.0.1",
	"local_port":1080,
	"password":"your-passwd",
	"timeout":300,
	"method":"chacha20-ietf",
	"fast_open":false,
	"workers":1
}
提示: shadowsocks: 若需同时指定多个服务端ip,可参考"server":["1.1.1.1","2.2.2.2"],
提示: shadowsocks-libev: 若需同时指定多个服务端ip或利用多处理器核心提高sockets处理性能,可启用多个shadowsocks-libev实例并绑定同一个端口,因为其支持SO_REUSEPORT(内核级CPU负载平衡)
server 服务端监听地址(IPv4或IPv6)
server_port 服务端端口,一般为443
local_address 本地监听地址,缺省为127.0.0.1 可用-b参数设置
local_port 本地监听端口,一般为1080
password 用以加密的密匙
timeout 超时时间(秒)
method 加密方法,默认的table是一种不安全的加密。建议使用chacha20-ietf
fast_open 是否启用TCP-Fast-Open
wokers worker数量,如果不理解含义请不要改

客户端

命令行

config.json所在目录下运行sslocal(shadowsocks-libev 使用 ss-local)即可;若需指定配置文件的位置:

# sslocal -c /etc/shadowsocks/config.json
注意: 有用户报告无法成功在运行时加载config.json
,或可尝试手动运行:
# sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法

配合nohup和&可以使之后台运行,关闭终端也不影响:

#nohup sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法 &

以守护进程形式运行客户端

注意: shadowsocks和shadowsocks-libev的systemd 系统单元使用相同的配置文件路径 (/etc/shadowsocks

Shadowsocks的systemd服务可在/etc/shadowsocks/里调用不同的conf-file.json(以conf-file为区分标志),例: 在/etc/shadowsocks/中创建了foo.json配置文件,那么执行以下语句就可以调用该配置:

# systemctl start shadowsocks@foo

若需开机自启动:

# systemctl enable shadowsocks@foo
提示: 可用journalctl -u shadowsocks@foo来查询日志;

图形界面客户端

安装 shadowsocks-qt5

提示: 也可以使用shadowsocks-gui@gitHub,如果不希望自己编译的话到shadowsocks-gui@sourceforge直接下载。

浏览器配置

提示: 浏览器直接使用SOCKS代理时,你可能需要使用privoxy等辅助程序,因为一般浏览器会泄漏你的DNS请求,从而减少你的匿名。
Firefox

以下是本地监听端口127.0.0.1:1080配置完毕后,Firefox使用代理服务器的方法示例。

安装代理插件foxyproxy:打开浏览器右上角菜单,进入扩展管理,在搜索框中输入foxyproxy,安装foxyproxy代理插件,安装完毕后重启浏览器。

设置代理:找到foxyproxy插件,单击进入foxyproxy的设置界面,在代理服务器目录左侧选择添加代理服务器,为新加代理起一个名字,然后在代理服务器设置里选择手动设置代理服务器,ip地址栏填写127.0.0.1,勾选SOCKS代理服务器,点选SOCKS V5,然后确定。

开启快速添加(可选):在foxyproxy设置中,选择快速添加,勾选启用,在进入某些需要代理的网站时可以按下Alt+f2将网址添加到设定的代理中(!此功能需要foxyproxy标准版)。

使用代理:在foxyproxy上鼠标右键点击,指针移动到添加的代理上,就可以选择使用此代理服务器。也可以根据个人需求给某些特定域名添加到代理列表,使指定域名使用相应的代理设置。

更多有关foxyproxy内容,请到foxyproxy官网查看。

Chrome/Chromium

以下是本地监听端口127.0.0.1:1080配置完毕后,Chrome/Chromium使用代理服务器的方法示例。

方法一:

请安装 Proxy SwitchyOmega插件(SwitchySharp已停止开发),若商店打不开的话可以直接下载Github上面的crx文件可参考该扩展提供的图解流程

另外提供老版Proxy SwitchySharp扩展因为它诞生早,经过了更多用户的考验,且基本功能完备。

也可以选用其他代理扩展,设置方法类似。

方法二:

1.直接指定Chromium走socks代理似乎不能远程dns解析,这未必是用户的期望,可使用privoxy等软件转化socks代理为http代理。

编辑privoxy配置文件(不要漏下1080后面的点)

/etc/privoxy/config
forward-socks5   /               127.0.0.1:1080 .
listen-address  127.0.0.1:8118

重启服务应用更改:

# /etc/init.d/privoxy restart

2.假设转化后的http代理为127.0.0.1:8118,则在终端中启动:

$ chromium %U --proxy-server=127.0.0.1:8118

服务端

提示: 普通用户无需配置服务端;

命令行运行服务端

方法一:

  1. 在服务器上cdconfig.json所在目录:
  2. 运行ssserver

如果想在后台一直运行,可改执行:nohup ssserver > log &

方法二: 若不想加载config.json,可手动运行:

# ssserver -s 监听地址(通常为0.0.0.0) -p 监听端口 -k 密码 -m 加密方法 -t 超时时间(秒)

配合nohup和&可使之后台运行,关闭终端也不影响,例如:

# nohup ssserver -s 0.0.0.0 -p 443 -k a29rw4pacnj2ahmf -m aes-192-cfb -t 600 &

以守护进程形式运行服务端

以上只是启动了客户端的守护进程,如果架设的是服务器,则需要:

# systemctl start shadowsocks-server@foo
# systemctl enable shadowsocks-server@foo
提示: 如果使用的服务端端口号小于1024,需要修改usr/lib/systemd/system/shadowsocks-server@.service使得user=root,之后使用systemctl daemon-reload重新载入守护进程配置,即可开启监听。当然也可以用root权限运行,来开启端口号小于1024的监听

加密方法

注意: 默认加密方法table速度很快,但很不安全。请不要使用rc4,它不安全。

可选的加密方式:

  • aes-256-cfb(Shadowsocks经典、传统的加密算法,也是Shadowsocks的作者推荐过的加密算法,移动平台可能开销稍高)
  • aes-128-cfb
  • aes-192-cfb
  • aes-256-ofb
  • aes-128-ofb
  • aes-192-ofb
  • aes-128-ctr
  • aes-192-ctr
  • aes-256-ctr
  • aes-128-cfb8
  • aes-192-cfb8
  • aes-256-cfb8
  • aes-128-cfb1
  • aes-192-cfb1
  • aes-256-cfb1
  • aes-256-gcm
  • aes-128-gcm
  • aes-192-gcm
  • bf-cfb
  • camellia-128-cfb
  • camellia-192-cfb
  • camellia-256-cfb
  • cast5-cfb
  • chacha20
  • idea-cfb
  • rc2-cfb
  • rc4-md5
  • salsa20
  • seed-cfb


提示: 安装M2Crypto可略微提升加密速度,对于Python2来说,安装python2-m2crypto即可。
注意: 官方软件源的shadowsocks不支持全部加密方式,官方软件源Chacha20以及salsa20的支持可以安装libsodium(For salsa20 and chacha20 support) 。若对非主流加密方式有需求,可尝试aur中的shadowsocks-nodejsAUR[broken link: archived in aur-mirror]

加密类别列表参见[1]。 并且可以使用[2]脚本来比较和找出在你机器上运行最快的加密方法。

参阅