性能测试:跨墙的内网穿透工具选择

性能测试:跨墙的内网穿透工具选择

由于需要将家里HomeLab的服务内网穿透到外网服务器上,如果使用Zerotier一类的服务进行穿透的话,在经过GFW以后速度会暴跌。因此需要使用带加密的服务来进行建立连接。

在大约一年前的时候使用了Frp作为跨墙的内网穿透工具,但是因为不知名的原因,当时FrpsFrpc的连接总是容易断开,当时也没有做具体的原因分析。这段时间在新购买了海外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

其中V2RAYFRP均使用Docker的方式进行部署,Rathole通过screen直接运行在后台。

该测试环境存在诸多不合理的地方,该测试主要为自己的特定使用场景做参考。如果有问题还请斧正

测试流程

  1. 通过三套不同的工具,分别将client上的5201端口转发到server5201(v2ray)15201(frp)25201(rathole)上。

  2. server端输入以下指令,以Json文件获取120stcp连接的带宽和稳定性

    1
    iperf3 -J --logfile ./xxx_result.log -c localhost -p xxx -t 120s
  3. 将测试结果统计后以可视化的形式进行对比

结果分析

配置难度

  • V2Ray:部署复杂度较高,配置文件可读性较差。对于ws+tls来说,不但要部署v2ray本身,在服务端还需要额外的域名和Nginx进行转发。同时如果我有多个client的时候,会出现不确定到底是代理到哪个机器的问题,在不进行额外配置的情况下容易出现502报错。
  • FRP;部署难度极低,配置文件可读性极好,上手难度极低。
  • Rathole:部署难度中等,每次添加端口需要同时修改服务端和客户端的配置文件,后续维护是最麻烦的。

性能对比

在通过上述测试流程后,对日志进行分析统计,可以得到以下统计图表:

性能测试

  • 带宽:FrpRathole没有明显差距,V2Ray的带宽相对来说较低,但是没有拉开明显差距
  • 丢包率:Frp相比Rathole略有优势,在晚高峰的时候依旧能保证丢包率控制在30以下。V2Ray相比之下则更容易丢包
  • 由于网站只有小范围用户使用,因此对拥塞控制并没有很高的需求。不过从这份Benchmark中也可以看出,在高并发场景下,Rathole可能会更有优势
  • 资源占用:V2Ray由于加密解密的严谨性,资源消耗相比RatholeFrp都要多。在资源占用这一点上,Frp几乎是毫无悬念的领先

综合考虑

综上,从配置难度以及性能对比的角度来看,暂时使用Frp会是一个不错的选择。如果后续出现了性能的不稳定性也会在这里进行补充说明。


性能测试:跨墙的内网穿透工具选择
https://halc.top/p/59e029c8
作者
HalcyonAzure
发布于
2024年1月27日
许可协议