内网穿透工具-rathole
2022-01-17 21:56:37 阿炯

rathole是类似于frp和ngrok此类的内网穿透工具,可以让 NAT 后的设备上的服务通过具有公网 IP 的服务器暴露在公网上。主打安全、稳定、高性能、跨平台,采用 Rust 语言编写并在Apache协议下授权。


具有更高的吞吐量,高并发下更稳定。详见Benchmark
内存占用低于同类工具,同见Benchmark。二进制文件最小可以到 ~500KiB,可以部署在嵌入式设备如路由器上。
每个服务单独强制鉴权。Server 和 Client 负责各自的配置,使用 Noise Protocol 可以简单地配置传输加密,而不需要自签证书。同时支持 TLS。
支持配置文件热重载,动态修改端口转发服务。HTTP API 正在开发中。

rathole 的使用和 frp 非常类似,如果你有后者的使用经验,那配置对你来说非常简单,区别只是转发服务的配置分离到了服务端和客户端,并且必须要设置 token。使用 rathole 需要一个有公网 IP 的服务器,和一个在 NAT 或防火墙后的设备,其中有些服务需要暴露在互联网上。

配置文件示例:

# rathole configuration can put in one file as long as running mode is specified via cli

[client]
remote_addr = "localhost:2333"
default_token = "123"

[client.services.foo1]
local_addr = "127.0.0.1:80"

[server]
bind_addr = "0.0.0.0:2333"
default_token = "123"

[server.services.foo1]
bind_addr = "0.0.0.0:5202"

运行方式:
rathole -s config.toml # 服务器
rathole -c config.toml # 客户端


最新版本:0.3.7
包含了多个连接可靠性更新,包括调整 TCP Keepalive 参数来更快的探测断连。具体详见发行说明

项目主页:https://github.com/rapiz1/rathole