最近又有一大波 vps 遭殃了,和以前的某个端口被干扰不同,这次被 gfw 盯上的主机算是完全的“失联”了,以至于像 ssh、ping 这样的数据包都完全被阻断。而一旦你的 ip 被像这样阻断后,这个 ip 在一个无法预估的时间内都无法正常使用,因此很多服务商也会拒绝换 ip、换数据中心这样的操作。那么只好利用 CloudFlare 这样的 CDN 服务做跳板,配合 simple-obfs 或 V2Ray 这样的流量混淆服务来拯救了。
这个方法的核心流程分为两步,一是要将以前的shadowsocks流量使用simple-obfs或V2Ray这样的混淆插件来重新封包成HTTP等常用流量特征;二是利用CloudFlare这样的 CDN 服务来进行流量中转,以隐藏真实的主机地址。由于屏蔽 CDN 影响大、同时 CDN 服务商的 ip 也很多,所以使用这种方法可以一定程度上可以避免自己的一两个 ip 一旦被封就永久与世界失联的情况。
P.S. 如果你的服务器之前没有配置使用simple-obfs或V2Ray这样的流量混淆,那你还是要远程登陆服务器进行操作的。如果你像我一样手头上所有的vps都遭到封禁,可以临时开一台AWS EC2来做跳板机对远程服务器进行操作。
我选择的是使用原版Shadowsocks配合V2Ray的流量混淆,混淆方法选用TLS和WebSocket。
准备工作
整个部署过程中,需要准备:
一个CloudFlare账户,用来设置你的CDN服务。在Profile页面中获取你的API key并记下账户邮箱。
一个域名,并将这个域名完全的托管到CloudFlare上面。可以申请各种免费域名来用,如.cf域名。
先来设置CloudFlare的部分:添加一个域名托管,在域名服务商那里将你的域名的ns服务器设置为CloudFlare的ns服务器,并在CloudFlare的设置面板中添加一个DNS解析,地址为你真实的vps地址。完成后,dig你这个新添加的域名,如果能解析出CloudFlare的ip地址,则大功告成。
服务端设置
然后是远程服务器的设置:首先是要在远程机器上安装Shadowsocks和V2Ray相关的包,这个不再赘述。
在配置V2Ray的时候,由于是伪装成了TLS通信,所以一个合法的证书仍然是需要的。可以使用acme.sh脚本来一键申请一个免费的证书。使用如下的命令安装acme.sh:
接着使用acme.sh一键申请证书时需要修改DNS解析,而这个操作是需要授权的,添加以下环境变量:
然后执行以下命令申请一个新的证书,注意domain应该是你在CloudFlare上加了DNS的那个:
启动服务
此时就可以开启你的Shadowsocks与V2Ray插件了,具体的命令行取决于你的Shadowsocks的实现,如我的启动命令是:
同样启动本地的服务,注意插件的参数是和服务端不同的,不需要加server;参数:
Enjoy it!