使用Hysteria与GOST加速回源
前因
最近我买了一台BuyVM的卢森堡VPS,挂载了块存储作为一个小网盘使用,但是实测速度较差,移动到了晚上单线程只有20k左右。随即我又买了一台xTOM日本东京作为反代,同时也为图床分流使用。反代之后单线程速度达到了96Mbps,但是这肯定不是这两个机器的最快速度。如果使用DD生成一个空文件放在xTOM上,单线程速度可以到350Mbps左右。想到Hysteria是一个功能丰富的,基于修改版的QUIC协议的,专为恶劣网络环境进行优化的双边加速的工具,我想试试能不能用这个工具改善BuyVM到xTOM之间的速度。
正文
首先假设BuyVM的IP为107.114.5.14,在BuyVM上设置web服务器,使用http模式,端口假设是14253,监听域名设置为origin.example.com。然后安装Hysteria,安装完成后配置Config.json,配置方法因为政策原因请自行到Hysteria Docs查看。在BuyVM上设置好Hysteria的服务端之后,转到xTOM上,根据服务端配置来设置Hysteria的客户端,启用Socks5,将监听IP设置为127.0.0.1,端口这里假设为11451,转换成配置文件的片段就是:
"socks5": {
"listen": "127.0.0.1:11451"
},
然后新建一个screen,在其中启动Hysteria并退出那个screen。之后再使用命令:
curl -x socks5://127.0.0.1:11451 ip.sb
如果返回的结果不是报错或者xTOM的IP而是BuyVM的IP就代表Hysteria配置完成了。但是仅仅有一个Socks5是不够的,Nginx和Caddy似乎都不支持(或者是我不知道)使用Socks5回源,因此这里使用GOST的代理链和端口转发功能。在xTOM上也安装一个GOST,同样因为政策原因这里不展示安装过程。安装完GOST之后,假设我们希望让xTOM的Web服务器使用端口19198进行回源,则新建一个screen,在其中执行命令:
gost -L=tcp://127.0.0.1:19198/107.114.5.14:14253 -F socks5://127.0.0.1:11451
执行后退出screen,再使用下面的命令来检查是否生效:
curl 127.0.0.1:19198
如果输出的是网页的内容,而不是报错之类的就代表生效了。之后再在xTOM的Web服务器上配置一下反向代理即可。比如Caddy2可以这样设置:
https://example.com:443 {
reverse_proxy * 127.0.0.1:19198 {
header_up Host origin.example.com
header_down Access-Control-Allow-Origin https://web.example.com
header_down Access-Control-Allow-Methods GET
header_down Access-Control-Allow-Headers *
}
}
最后,如果希望速度再快一点可以调整一下系统UDP的接收和发送buffer大小
sysctl -w net.core.rmem_max=33554432
sysctl -w net.core.wmem_max=33554432
优点
- 大幅提升速度,大约可以跑到300Mbps左右了。
- 回源是强加密,且无需在源站Web服务器上设置。
缺点
- 首字节速度较慢,更适合用于下载站和视频站。
- 对双方机器的CPU性能有一定要求。
- 可能会被某些IDC误认为是DDoS攻击。
- Hysteria本身并非专门为此类应用设计。
大佬牛逼?