管理杂谈OA答疑ERP答疑教程搜索

[点晴永久免费OA]rathole:一款高性能、安全稳定的内网穿透工具


你是否曾想过,如何将家中NAS的SSH服务、个人博客或游戏服务器暴露到公网上?传统的内网穿透工具如frp和ngrok虽然功能强大,但在性能、资源消耗和安全性方面仍有提升空间。今天,我要向大家介绍一款由Rust语言编写的高性能内网穿透工具—— rathole 。它不仅性能卓越,资源占用极低,还提供了强大的安全保障,是开发者和技术爱好者的理想选择。

rathole,像frp和ngrok一样,可以帮助你将NAT设备后的服务通过公网IP服务器暴露到互联网上。

为什么选择rathole?

在众多内网穿透工具中,rathole凭借其独特的优势脱颖而出。让我们来看看它的核心特性:

1. 高性能

rathole的吞吐量远高于frp,在处理大量连接时更加稳定。根据官方提供的基准测试数据,rathole在HTTP吞吐量和TCP比特率方面表现优异,能够满足高并发场景的需求。

2. 低资源消耗

与同类工具相比,rathole的内存占用显著降低。更重要的是,它的二进制文件可以压缩到 约500KiB ,非常适合资源受限的设备,如嵌入式路由器。这意味着你可以在各种硬件上轻松部署rathole,无需担心性能瓶颈。

3. 安全性

rathole在安全性方面下足了功夫。每个服务都需要强制性的token验证,且服务间token相互独立。服务器和客户端各自负责自己的配置,确保了服务的安全性。此外,rathole支持可选的Noise协议加密,无需创建自签名证书即可轻松配置加密。当然,传统的TLS加密也同样支持。

4. 热重载

rathole支持配置文件的热重载功能,你可以动态添加或移除服务,而无需重启程序。虽然HTTP API仍在开发中,但这一功能已经极大地提升了使用便利性。

快速上手:三步搞定内网穿透

假设你有一台位于NAT后的NAS,希望将其SSH服务暴露到互联网上。使用rathole,只需三步即可实现:

第一步:在公网IP服务器上配置rathole

创建一个名为 server.toml
的配置文件,内容如下:

# server.toml
[server]
bind_addr = "0.0.0.0:2333" # rathole监听客户端的端口
[server.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # 用于验证客户端的token,请更改为任意值
bind_addr = "0.0.0.0:5202" # 将my_nas_ssh暴露到互联网的端口

然后运行:

./rathole server.toml

第二步:在NAS上配置rathole客户端

创建一个名为 client.toml
的配置文件,内容如下:

# client.toml
[client]
remote_addr = "myserver.com:2333" # 服务器的地址,端口必须与server.bind_addr相同
[client.services.my_nas_ssh]
token = "use_a_secret_that_only_you_know" # 必须与服务器相同以通过验证
local_addr = "127.0.0.1:22" # 需要转发的服务地址

然后运行:

./rathole client.toml

第三步:连接你的NAS

现在,客户端会尝试连接到服务器的 myserver.com:2333
,任何发往 myserver.com:5202
的流量都会被转发到客户端的 22
端口。你可以通过 ssh myserver.com:5202
来访问你的NAS。

深入配置:解锁rathole的全部潜能

rathole的配置非常灵活,可以根据你的需求进行定制。让我们来看看一些高级配置选项:

1. 日志控制

与其他Rust程序一样,rathole使用环境变量来控制日志级别。你可以设置 RUST_LOG
来指定日志级别,如 error
、 warn
、 info
、 debug
或 trace

RUST_LOG=error ./rathole config.toml

上述命令将只记录错误级别的日志。如果未设置 RUST_LOG
,默认日志级别为 info

2. 性能调优

从v0.4.7版本开始,rathole默认启用TCP_NODELAY,这有助于降低延迟,特别适合像RDP、Minecraft服务器这样的交互式应用。不过,这可能会略微降低带宽。如果带宽更重要,你可以通过设置 nodelay = false
来禁用TCP_NODELAY。

3. 加密传输

rathole支持多种加密方式,包括TCP、TLS和Noise协议。你可以根据安全需求选择合适的加密方式。配置时,只需在 transport
块中指定类型即可。

[client.transport]
type = "tls" # 可选值:["tcp", "tls", "noise"]
[client.transport.tls]
trusted_root = "ca.pem" # CA证书文件
hostname = "example.com" # 可选,用于验证证书的主机名

性能基准测试:数据说话

官方提供的基准测试数据充分证明了rathole的性能优势。在HTTP吞吐量测试中,rathole的表现明显优于frp,特别是在高并发场景下。

在TCP比特率方面,rathole同样表现出色,能够提供更高的传输速率。

重要提示: 不要误以为rathole能让你的转发服务速度提升数倍。基准测试是在本地回环接口上进行的,表明任务受CPU限制时性能提升显著。如果网络不是瓶颈,你可以获得相当大的性能提升。然而,对许多用户来说,网络往往是瓶颈。在这种情况下,rathole的主要优势是更低的资源消耗,而带宽和延迟可能不会显著改善。

未来规划:更多功能值得期待

rathole的开发团队正在积极规划新功能,其中HTTP API配置功能已经提上日程。虽然目前一些功能不在开发计划中(详见 Out of Scope :https://github.com/rapiz1/rathole/blob/main/docs/out-of-scope.md ),但rathole已经具备了足够强大的功能来满足大多数用户的需求。

结语:rathole,内网穿透的新选择

无论是个人开发者还是企业用户,rathole都提供了一个高性能、安全稳定的内网穿透解决方案。它的低资源占用使其能够在各种设备上运行,而强大的加密功能确保了数据传输的安全性。如果你正在寻找一款比frp和ngrok更优秀的内网穿透工具,rathole绝对值得一试。

GitHub项目地址: https://github.com/rapiz1/rathole

阅读原文:原文链接


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn