性能测试:跨墙的内网穿透工具选择
性能测试:跨墙的内网穿透工具选择
由于需要将家里HomeLab
的服务内网穿透到外网服务器上,如果使用Zerotier
一类的服务进行穿透的话,在经过GFW
以后速度会暴跌。因此需要使用带加密的服务来进行建立连接。
在大约一年前的时候使用了Frp
作为跨墙的内网穿透工具,但是因为不知名的原因,当时Frps
和Frpc
的连接总是容易断开,当时也没有做具体的原因分析。这段时间在新购买了海外VPS之后决定花一些时间对不同的内网穿透工具在跨越GFW
的情况下的性能和丢包做一个对比
省流不看
综合性能、带宽和丢包率来看,最新版本的Frp
已经是不错的选择。不过目前还不确定在特殊时期Frp
能否经历防火墙的考验,而V2Ray
虽然在Benchmark
的结果上不如人意,但是在跨墙可用性来说是身经百战的。Rathole
在个人当前的应用场景下则没有太大的优势。
测试流程
机器
- 内网虚拟机一台,配置为
2C4G
,后文简称client
。该机器位于家庭宽带环境中,没有公网IP。 - 外网机器一台,配置为
1C1G
,后文简称server
。使用的是洛杉矶的机器,国内线路有做优化。
测试工具
- V2RAY:使用
ws+tls
协议,其中tls
部分由nginx
进行处理。版本为:5.4.1 - FRP:服务端除了
auth.token
不添加任何多余的参数,性能方面均以默认配置文件为主。版本为:0.53.2 - Rathole:同样以默认配置文件为主,最新的源码
65b27f076c
编译而来的二进制文件。版本为:0.5.0
其中V2RAY
与FRP
均使用Docker
的方式进行部署,Rathole
通过screen
直接运行在后台。
该测试环境存在诸多不合理的地方,该测试主要为自己的特定使用场景做参考。如果有问题还请斧正
测试流程
通过三套不同的工具,分别将
client
上的5201
端口转发到server
的5201(v2ray)
,15201(frp)
和25201(rathole)
上。在
server
端输入以下指令,以Json
文件获取120s
内tcp
连接的带宽和稳定性1
iperf3 -J --logfile ./xxx_result.log -c localhost -p xxx -t 120s
将测试结果统计后以可视化的形式进行对比
结果分析
配置难度
- V2Ray:部署复杂度较高,配置文件可读性较差。对于
ws+tls
来说,不但要部署v2ray
本身,在服务端还需要额外的域名和Nginx
进行转发。同时如果我有多个client
的时候,会出现不确定到底是代理到哪个机器的问题,在不进行额外配置的情况下容易出现502
报错。 - FRP;部署难度极低,配置文件可读性极好,上手难度极低。
- Rathole:部署难度中等,每次添加端口需要同时修改服务端和客户端的配置文件,后续维护是最麻烦的。
性能对比
在通过上述测试流程后,对日志进行分析统计,可以得到以下统计图表:
- 带宽:
Frp
和Rathole
没有明显差距,V2Ray
的带宽相对来说较低,但是没有拉开明显差距 - 丢包率:
Frp
相比Rathole
略有优势,在晚高峰的时候依旧能保证丢包率控制在30以下。V2Ray
相比之下则更容易丢包 - 由于网站只有小范围用户使用,因此对拥塞控制并没有很高的需求。不过从这份
Benchmark
中也可以看出,在高并发场景下,Rathole
可能会更有优势 - 资源占用:
V2Ray
由于加密解密的严谨性,资源消耗相比Rathole
与Frp
都要多。在资源占用这一点上,Frp
几乎是毫无悬念的领先
综合考虑
综上,从配置难度以及性能对比的角度来看,暂时使用Frp
会是一个不错的选择。如果后续出现了性能的不稳定性也会在这里进行补充说明。
性能测试:跨墙的内网穿透工具选择
https://halc.top/p/59e029c8