关于Glider配合CDN加速的实例
设想
在《利用CDN对单条私有线路负载均衡》中提到,我试图用 Glider 作分流,但没能实现多路复用。最近又研究了一下 Glider 的配置,发现还是有解的。
最终,配出了一条自认为还算不错的方案: tls+ws+mux+ss
Glider 完整支持 TCP / UDP 且同时支持 Server / Client 的有 SOCKS5 / SS / Trojan(c) / Unix,考虑到过 CDN 的安全性,能支持 AEAD 加密的只有 SS,所以我使用 SS 作为基础协议,加密采用 AEAD_AES_128_GCM。
具体实施
Server 安装与启动,以 ubuntu 为例:
dpkg -i glider_x.x.x_linux_amd64.deb systemctl enable glider@glider systemctl start glider@glider # systemctl restart glider@glider
默认配置文件 /etc/glider/glider.conf
,加入 listen=ws://127.0.0.1:[port]/[path],smux://,ss://AEAD_AES_128_GCM:[pass]@
。重启服务。
因为 443 端口还有其他业务,所以我把 tls 的部分交给 nginx 处理
location /[path] { proxy_redirect off; proxy_pass http://127.0.0.1:[port]; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; }
Client 配置:
直连:forward=wss://[host]/[path],smux://,ss://AEAD_AES_128_GCM:[path]@
CDN:forward=wss://[CDN_SERVER]/[path]?serverName=[YOUR_HOST]&host=[YOUR_HOST],smux://,ss://AEAD_AES_128_GCM:c2059aef-6ffb-44d1-a2ee-d9a379826cf1@
其中 CDN_SERVER
可以是 Cloudflare 自选 IP、CDN 提供的 CNAME 等,YOUR_HOST
就是回源服务器。其中,serverName
参数不是必须的,这取决于 CDN,比如:Cloudflare 要求指定,Asians.Group 可以不写。
一点技巧
如果使用 Asians.Group 的服务,host
将作为流量统计依据,这个域名无需真实存在。
例如:在后台填入自编域名 sam.ple,回源到真实的 domain.com:443,配置 Glider 客户端时将 host
指定为 sam.ple 即可。
如果流量不够,可以注册多个账户实现流量叠加,只要加入的域名不同即可,无需(也不可能)为其配置 ssl。
一点问题
以上方案并不能在手机上使用,因为手机没有 Glider,也没有客户端支持 smux 套 SS,更没有什么现成的叠速方案。
如何找到合适的线路
Cloudflare 可以用测速工具,其实就是抽签,速度只能保持一小段时间,个人感觉参考价值不大。我完整测试了全部 ip 段后得出的结论是,系统分配的基本接近最佳,建议用一批 Cloudflare 子域替代 ip,例如 h3.speed.cloudflare.com
、rpki.cloudflare.com
等。
子域挖掘工具:DNS Dumperster 和 Whois XML API剔除掉 NS 子域、固定 ip 子域后,用 Glider 批量验证:
glider 2>&1 | grep --line-buffered Elapsed | awk -F "[: ]" "{print $11}"
去重后填入配置形如:
forward=wss://migp.cloudflare.com/██?serverName=█.██.███&host=█.██.███,smux://,ss://AEAD_AES_128_GCM:████@
forward=wss://blog.cloudflare.com/██?serverName=█.██.███&host=█.██.███,smux://,ss://AEAD_AES_128_GCM:████@
forward=wss://rpki.cloudflare.com/██?serverName=█.██.███&host=█.██.███,smux://,ss://AEAD_AES_128_GCM:████@
#... 适合用 ha 策略
Asians.Group 也可以通过这个方式挖掘出 yk1.net
(其 CNAME 主域)下的线路,有香港、美国、台湾、日本等,分别对应到各个 cluster-xxx 子域上。不过意义不大,因为都很快,直接用 asians.group
就行。
forward=wss://asians.group/██?host=1.██.███,smux://,ss://AEAD_AES_128_GCM:████@
forward=wss://asians.group/██?host=2.██.███,smux://,ss://AEAD_AES_128_GCM:████@
#... 适合用 rr 分流
CloudFront 等其他付费 CDN 请随意。