翻墙教程 · 2019年6月5日

SS 使用AEAD加密算法,开tls混淆

翻墙技术的基本要求就是不能被GFW识别。

也就是说:
1. 给出一段流量,GFW能否识别出使用了翻墙技术?
2. 给出一个服务器,GFW能否识别出它是一个翻墙服务器?
Bandwagon一键脚本搭的SS版本不够新,技术上有个缺陷。不满足2
简单地说原理是这样的:
1. SS协议里有个关键字段的位置是固定的,定义了服务器要做的动作。
2. SS的加密本身是可靠的,第三方不能精确修改这个字段。但是SS之前的加密算法是流加密,也就是说密文和原文是一一对应的。第三方可以通过穷举这个字段的办法想办法命中这个字段的特殊值,一但发生服务器在某些情况下收到一段随机数据后没有断开连接,则猜测这个服务器是SS服务器。

最新版的SS增加了一些AEAD类的加密算法,从流加密变成了块加密。这样就不能直接只针对那个字段穷举,大大增加了探测难度。
AEAD算法包括:
AES-128-GCM
AES-192-GCM
AES-256-GCM
ChaCha20-IETF-Poly1305
XChaCha20-IETF-Poly1305
在具备 AES 加速的 CPU(桌面,服务器)上,建议使用 AES-XXX-GCM 系列,移动设备建议使用 ChaCha20-IETF-Poly1305 系列。

为了装最新版的SS,要手动跑脚本。顺便装个BBR。(原来是用的Bandwagon的一键脚本,CentOS 6,没有BBR)
1. 把Bandwagon VPS停掉,重新安装操作系统,选Debian 8 x64。
2. 装BBR

wget https://raw.githubusercontent.com/kuoruan/shell-scripts/master/ovz-bbr/ovz-bbr-installer.sh
chmod +x ovz-bbr-installer.sh
./ovz-bbr-installer.sh

3. 跑秋水逸冰的SS/SSR四合一脚本

wget –no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

选Shadowsocks-libev,安装过程中选择加密算法chacha20-ietf-poly1305,开混淆(obfs),混淆模式选tls,同时端口开在443
*是否要开混淆,端口开在哪里,现在在SS圈子成了一个玄学,网上各有各有说法。