说到翻墙,就不得不说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吧。

安装

直接依次执行下列命令:

1yum install python-setuptools
2easy_install pip
3pip install shadowsocks

即可完成Shadowsocks服务端安装。

配置

加密方式:

  • 默认加密方式存在已知弱点,所以推荐用 chacha20-ietf-poly1305 加密方式,但是直接用 chacha20-ietf-poly1305 加密方式不行,必须安装 llibsodium ,将下列文档保存为.sh脚本执行即可:
 1#!/bin/bash
 2# If you suppose your server supports chacha and salsa,
 3# this script must be run.
 4wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.15.tar.gz
 5tar xvzf libsodium-1.0.15.tar.gz
 6cd libsodium-1.0.15
 7./configure
 8make
 9make install
10cd ..
11echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
12ldconfig

新建 /etc/shadowsocks.json 文件,内容如下:

 1{
 2    "server":"0.0.0.0",
 3    "server_port":8389,
 4    "local_address": "127.0.0.1",
 5    "local_port":1080,
 6    "password":"密码",
 7    "timeout":300,
 8    "method":"chacha20-ietf-poly1305",
 9    "fast_open": false
10}
  • "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{
 2    "server":"0.0.0.0",
 3    "port_password":{
 4     "8381":"xxxxxxx",
 5     "8382":"xxxxxxx",
 6     "8383":"xxxxxxx",
 7     "8384":"xxxxxxx"
 8     },
 9    "timeout":300,
10    "method":"chacha20-ietf-poly1305",
11    "fast_open": false
12}
  • 脚本使用json语言,每一行必须以 逗号 结尾,但最后一行不用逗号结尾

运行

  • 前台运行(Ctrl+C或者关闭终端服务会自动停止):
1ssserver -c /etc/shadowsocks.json
  • 后台运行(推荐,关闭终端后服务会继续运行):
1ssserver -c /etc/shadowsocks.json -d start
2ssserver -c /etc/shadowsocks.json -d stop

其他

限速和限制登陆设备数量

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
2echo 清楚所有程序 && CheckNetIsolation.exe LoopbackExempt -c 1>nul
3cd %USERPROFILE%\AppData\Local\Packages
4echo 开始添加程序
5for /d %%i in (*) do echo 添加程序%%i && CheckNetIsolation.exe LoopbackExempt -a -n = %%i 1>nul
6pause

或者设置系统 默认直接连接,即不经过代理:cmd(管理员模式)

1netsh winhttp import proxy source=ie

问题解决

  • 注意:为方便看到日志,在出错的时候建议用 ssserver -c /etc/shadowsocks.json 启动ss,以便看到运行日志。

启动 ssserver -c /etc/shadowsocks.json 时显示:

1socket.error: [Errno 98] Address already in use

即端口被占用,解决办法就是更改配置文件 /etc/shadowsocks.json 中所使用的端口。

另:查看系统正在占用的端口:

1netstat -lnp