前言
wireguard是次世代的vpn,它足够安全且小巧,核心代码仅四千余行,并且已合并入了linux内核,效率足够高。
它为了追求高效率低延时,仅支持udp传输。
udp传输不是问题,但国内网络运营商对udp的不待见会导致其时不时断连,这非常影响体验!
解决办法
把wireguard传输使用一些办法转成tcp,牺牲一些效率换来更多稳定。
我使用gost把wireguard转换成ss传输
说说怎么实现
wireguard监听51820端口
服务端: gost -L relay+ss://:1088
节点:gost -L udp://:1088/wireguard_IP:51820 -F relay+ss://服务端IP:1088
wireguard node设置不需要动,peer把对端改成gost监听的1088端口。
简单测试了下性能
测试方法:iperf3测试单条TCP连接速度 持续30秒
实测数据如下
不通过gost转发 54Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-30.00 sec 193 MBytes 54.0 Mbits/sec sender
[ 4] 0.00-30.00 sec 193 MBytes 54.0 Mbits/sec receiver
通过gost转发 52.9 Mbits/sec
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-30.00 sec 189 MBytes 52.9 Mbits/sec sender
[ 4] 0.00-30.00 sec 189 MBytes 52.8 Mbits/sec receiver
性能损耗微小(起码是在我这种家宽上传带宽有限的环境下,没有那种千兆对等的线路,无法实测大带宽环境下的传输损耗。PS:对端为N5105虚拟openwrt软路由,本地为MacminiM1版,gost转发对端使用的是N5105的lxc容器,本地使用的是一台群晖DS218+),在PT高速下载时不会出现断连了。