CentOS 搭建 Shadowsocks (ss)
说到翻墙,就不得不说shadowsocks,由于大陆GFW的封锁,也就是俗称的墙,所以很多外网上不去,例如Google,Facebook,想要上就必须翻过去,一般将这种方式称为科学上网,科学上网的方式开始时是VPN,后来被封锁的狠了,就催生出了shadowsocks(ss)这样一个专门用来翻墙的工具,而shadowsocksR(ssr)则在ss的基础上更进一步,提供了更强的混淆能力,可以说,ss和ssr就是为了翻墙而生。当然,ss和ssr没有孰优孰劣之分,ssr比ss多了混淆方式。
shadowsocksR的搭建方式可看:ssrpanel:搭建shadowsocksr流量监控和用户管理面板,这个教程里面包含如何搭建ssr,以及如何搭建相应的面板,以实现流量使用详情、用户管理等功能。
但有的时候,没有混淆就是最好的混淆。这样肯定就有人纠结于要用ss还是用ssr了,不过好在ssr也可以兼容ss,所以如果实在无法抉择,就用ssr吧。
安装
直接依次执行下列命令:
1 | yum install python-setuptools |
即可完成Shadowsocks服务端安装。
配置
加密方式:
- 默认加密方式存在已知弱点,所以推荐用
chacha20-ietf-poly1305
加密方式,但是直接用chacha20-ietf-poly1305
加密方式不行,必须安装llibsodium
,将下列文档保存为.sh脚本执行即可:
1 | #!/bin/bash |
新建 /etc/shadowsocks.json
文件,内容如下:
1 | { |
"server"
;服务器IP,不用更改"server_port"
;服务器端口,即用于给用户连接的端口,范围0-65535,任选一个端口,只要不与常用端口冲突就行,不过不推荐使用80\443等网站用端口,也不推荐大多数ss的默认端口8388"local_address"
;本机地址,不用更改"local_port"
;本地端端口,不用更改"password"
;账户的密码"timeout"
;超时时间(秒),不用改"method"
;加密方式,推荐用 chacha20-ietf-poly1305 ,不用默认的 rc4-md5 或者 aes-256-cfb,因为默认的太多人用,容易被墙"fast_open"
;true 或 false。如果服务器 Linux 内核在 3.7+,可以开启 fast_open 以降低延迟。开启方法: echo 3 > > /proc/sys/net/ipv4/tcp_fastopen 开启之后,将 fast_open 的配置设置为 true 即可
多个账号:
1 | { |
- 脚本使用json语言,每一行必须以 逗号 结尾,但最后一行不用逗号结尾
运行
- 前台运行(Ctrl+C或者关闭终端服务会自动停止):
1 | ssserver -c /etc/shadowsocks.json |
- 后台运行(推荐,关闭终端后服务会继续运行):
1 | ssserver -c /etc/shadowsocks.json -d start |
其他
限速和限制登陆设备数量
iptables -A INPUT -p tcp --sport 8000 -m limit --limit 10/s --limit-burst 10
该选项就是对主机进行限速
--limit 10/s
:10/s是每秒发个10个包,网卡的MTU值一般为1500B,换算成KB,1500/1024=1.46KB,也就是每个包大小理想情况下是1.46KB,每秒10个包,那就是每秒1.46x10=14.6KB/S--limit-burst 10
:最大峰值也是10个包
日志
1 | /var/log/shadowsocks.log |
uwp应用
uwp应用由于安全限制,需要手动添加代理例外
将下列文本保存为 批处理
文件执行
1 | @echo OFF |
或者设置系统 默认直接连接
,即不经过代理:cmd(管理员模式)
1 | netsh winhttp import proxy source=ie |
问题解决
- 注意:为方便看到日志,在出错的时候建议用
ssserver -c /etc/shadowsocks.json
启动ss,以便看到运行日志。
启动 ssserver -c /etc/shadowsocks.json
时显示:
1 | socket.error: [Errno 98] Address already in use |
即端口被占用,解决办法就是更改配置文件 /etc/shadowsocks.json 中所使用的端口。
另:查看系统正在占用的端口:
1 | netstat -lnp |