Rathole 高性能 NAT 隧道教程
Rathole 是一款用 Rust 编写的高性能 NAT 隧道工具,类似于 frp 但具有更好的性能和更低的资源消耗。它专注于安全可靠的内网穿透,支持 TCP 和 UDP 端口转发,具备 TLS 加密和 Token 认证功能。根据基准测试,Rathole 的吞吐量比 frp 高出数倍,是追求性能的用户的理想选择。
一、Rathole 特点
- 高性能:Rust 实现,零拷贝转发,性能超越 frp。
- 低资源:内存占用极低,适合小型 VPS。
- 安全性:支持 TLS 加密和 Token 认证。
- 热重载:修改配置后无需重启服务。
- TCP/UDP:同时支持 TCP 和 UDP 端口转发。
二、安装 Rathole
wget https://github.com/rapiz1/rathole/releases/latest/download/rathole-x86_64-unknown-linux-gnu.zip
unzip rathole-x86_64-unknown-linux-gnu.zip
mv rathole /usr/local/bin/
chmod +x /usr/local/bin/rathole
rathole --version
三、服务端配置(搬瓦工 VPS)
mkdir -p /etc/rathole
cat > /etc/rathole/server.toml << 'EOF'
[server]
bind_addr = "0.0.0.0:2333"
[server.transport]
type = "tcp"
[server.services.web]
token = "your-secret-token-here"
bind_addr = "0.0.0.0:8080"
[server.services.ssh]
token = "your-secret-token-here"
bind_addr = "0.0.0.0:2222"
[server.services.db]
token = "your-secret-token-here"
bind_addr = "0.0.0.0:13306"
EOF
四、客户端配置(内网机器)
cat > /etc/rathole/client.toml << 'EOF'
[client]
remote_addr = "YOUR_VPS_IP:2333"
[client.transport]
type = "tcp"
[client.services.web]
token = "your-secret-token-here"
local_addr = "127.0.0.1:80"
[client.services.ssh]
token = "your-secret-token-here"
local_addr = "127.0.0.1:22"
[client.services.db]
token = "your-secret-token-here"
local_addr = "127.0.0.1:3306"
EOF
五、启动服务
# 启动服务端
rathole /etc/rathole/server.toml
# 启动客户端
rathole /etc/rathole/client.toml
六、启用 TLS 加密
# 服务端 TLS 配置
[server.transport]
type = "tcp"
[server.transport.tls]
pkcs12 = "/etc/rathole/identity.pfx"
pkcs12_password = "your-pfx-password"
生成证书:
# 生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=rathole"
# 转换为 PKCS12 格式
openssl pkcs12 -export -out /etc/rathole/identity.pfx -inkey key.pem -in cert.pem -password pass:your-pfx-password
七、Systemd 服务
cat > /etc/systemd/system/rathole.service << 'EOF'
[Unit]
Description=Rathole NAT Tunnel Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/rathole /etc/rathole/server.toml
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable rathole
systemctl start rathole
八、UDP 端口转发
# 服务端配置 UDP 服务
[server.services.dns]
type = "udp"
token = "your-secret-token-here"
bind_addr = "0.0.0.0:5353"
# 客户端配置
[client.services.dns]
type = "udp"
token = "your-secret-token-here"
local_addr = "127.0.0.1:53"
九、性能对比
- Rathole vs frp:Rathole 吞吐量更高(约 2-3 倍),内存占用更低。
- Rathole vs Bore:Rathole 支持多服务和 UDP,Bore 更简单。
十、常见问题
Token 不匹配
确保服务端和客户端同一个服务使用完全相同的 Token 值。
连接失败
检查防火墙是否开放了控制端口(2333)和服务端口,确认服务端正在运行。
ufw allow 2333/tcp
ufw allow 8080/tcp
ufw allow 2222/tcp
总结
Rathole 是目前性能最好的开源 NAT 隧道工具之一,Rust 实现带来了卓越的性能和极低的资源开销。TOML 配置格式清晰易读,适合管理多个内网穿透服务。如果你对性能要求较高,Rathole 是比 frp 更好的选择。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受折扣。如有问题可通过搬瓦工官网提交工单。