Rathole:新一代高性能内网穿透工具,比FRP更轻量的rust替代方案
Rathole 是一款用 Rust 语言编写的开源内网穿透工具,类似于 frp 和 ngrok。它允许位于 NAT 或防火墙后的设备通过具有公网 IP 的服务器将服务暴露到公网。
相较于FRP有着更少的占用情况下,提供更大的高并发,更大的带宽,内存占用更少。
123网盘(v0.5.0) :https://www.123912.com/s/ekeA-BqP4
核心特点
性能优势
-
高吞吐量:TCP/UDP 吞吐量比 frp 高数倍
-
低资源占用:内存占用从 60-70MiB 减少到 10MiB 以下
-
小巧精悍:最小二进制文件约 500KiB,适合嵌入式设备
-
高并发稳定:在高并发情况下表现更稳定
安全特性
-
强制鉴权:每个服务都需要单独的 token 验证
-
传输加密:支持 Noise Protocol 和 TLS 加密
-
配置分离:服务端和客户端各自负责配置,提升安全性
实用功能
-
热重载:支持配置文件热重载,无需重启服务
-
多协议:支持 TCP、UDP 协议转发
-
简单易用:单可执行文件,配置类似 frp
安装方式
官方下载
# 从 GitHub Releases 下载
https://github.com/rapiz1/rathole/releases
系统要求
-
注意:要求 GLIBC 2.18 以上版本
-
支持 Windows、macOS、Linux
-
服务器端需要公网 IP
配置详解
基本配置结构
Rathole 使用 TOML 格式配置文件,服务端和客户端配置分离:
服务端配置 (server.toml)
[server] bind_addr = "0.0.0.0:2333" [server.services.my_service] token = "your_secret_token" bind_addr = "0.0.0.0:8080"
客户端配置 (client.toml)
[client] remote_addr = "your_server.com:2333" [client.services.my_service] token = "your_secret_token" local_addr = "127.0.0.1:80"
加密传输配置
支持 Noise Protocol 进行传输加密:
# 生成密钥 rathole --genkey
# 服务端 [server.transport] type = "noise" [server.transport.noise] local_private_key = "your_private_key" # 客户端 [client.transport] type = "noise" [client.transport.noise] remote_public_key = "server_public_key"
使用场景
SSH 服务穿透
# 服务端 [server.services.ssh] token = "ssh_token" bind_addr = "0.0.0.0:5202" # 客户端 [client.services.ssh] token = "ssh_token" local_addr = "127.0.0.1:22"
HTTP 服务穿透
配合 Nginx 反向代理:
server { listen 80; server_name your_domain.com; location / { proxy_pass http://127.0.0.1:8080; } }
性能表现
基准测试结果
-
延迟:与 frp 相近
-
带宽:在高并发时提供更大带宽
-
内存:占用显著低于 frp
-
稳定性:在高并发下更稳定
实际使用体验
-
在资源受限环境下表现优异
-
相比 frp 在某些场景下更稳定
-
配置分离增加安全性但稍显繁琐
优缺点分析
优点
-
性能卓越:高吞吐、低内存占用
-
安全性强:强制鉴权、支持加密
-
轻量级:单文件部署,适合嵌入式设备
-
热重载:动态修改配置无需重启
缺点
-
配置稍复杂:相比 frp 需要更多配置
-
生态较弱:社区活跃度不如 frp
-
系统要求:需要较新的 GLIBC 版本
-
更新频率:项目维护相对缓慢
与 Frp 对比
特性 | Rathole | Frp |
---|---|---|
内存占用 | ~10MiB | 60-70MiB |
吞吐量 | 更高 | 标准 |
配置方式 | 服务端客户端分离 | 集中式配置 |
加密支持 | Noise Protocol + TLS | TLS |
易用性 | 中等 | 优秀 |
社区生态 | 较小 | 繁荣活跃 |
适用场景
推荐使用场景
-
资源受限环境(VPS、路由器)
-
需要高并发穿透的服务
-
对安全性要求较高的场景
-
嵌入式设备部署
注意事项
-
对于简单需求,frp 可能更合适
-
需要一定的技术背景进行配置
-
生产环境建议充分测试
总结
Rathole 是一款在性能和资源占用方面表现突出的内网穿透工具,特别适合资源受限环境和高并发场景。虽然配置相对复杂且生态系统不如 frp 完善,但其出色的性能和安全性使其成为特定场景下的优秀选择。