RustDesk NAT穿透原理与配置详解:打通P2P直连所有网络环境
为什么需要理解NAT穿透
RustDesk相比传统远程控制软件最大的优势是支持完全P2P直连——两个设备之间建立直接连接,传输数据不经由第三方服务器,延迟低、带宽高、隐私安全。但P2P不是万能的,在严格NAT环境下必须依靠中继。
理解NAT穿透原理后,你可以:
- 判断自己的网络环境是否支持P2P
- 在配置中选择最合适的连通方式
- 自己搭建stun/turn服务器优化连通率
- 在企业/校园网受限环境中仍然使用RustDesk
NAT基础概念
什么是NAT
NAT(Network Address Translation)是现代网络的标配。家用路由器、移动运营商网络几乎都部署NAT,目的是让大量设备共享少量公网IP。
NAT的主要类型
| NAT类型 | 别名 | P2P友好性 |
|---|---|---|
| 完全锥形 (Full Cone) | 静态端口映射 | ⭐⭐⭐⭐⭐ |
| 受限锥形 (Restricted Cone) | 地址限制 | ⭐⭐⭐⭐ |
| 端口受限锥形 (Port Restricted) | 端口+地址限制 | ⭐⭐⭐ |
| 对称型 (Symmetric) | 每次不同端口 | ⭐ |
越往下越严格,P2P穿透的成功率越低。
NAT对P2P的影响
简单说:
- 两端都是 Full Cone / Restricted Cone:90%+ 穿透成功
- 一端 Port Restricted:通过打洞技巧80%可通
- 一端 Symmetric:大概率只能走中继
- 两端都在 Symmetric 后面:纯靠打洞无法穿透
RustDesk的穿透流程
默认路径
RustDesk的连接尝试顺序:
1. 直连尝试(UDP打洞)
↓ 失败
2. 走自建/官方Relay中继
↓
3. 连接成功(但走中继会降低速度)
关键配置点
RustDesk设置 → 网络 → 中继服务器:
- 默认
rs-ny.rustdesk.com等官方中继 - 自建中继:
hbbr.example.com - 自建打洞:
hbbs.example.com
自建hbbs/hbbr服务器
准备一台服务器
| 项目 | 最低 | 推荐 |
|---|---|---|
| CPU | 1核 | 2核 |
| 内存 | 1GB | 2GB |
| 带宽 | 5Mbps | 100Mbps |
| 公网IP | 必备 | 独立IP |
| 域名 | - | 必备 |
安装hbbs
# 下载安装包
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.10/rustdesk-server-hbbs_1.1.10_amd64.deb
sudo dpkg -i rustdesk-server-hbbs_1.1.10_amd64.deb
# 启动
sudo systemctl enable --now rustdesk-hbbs
安装hbbr(中继)
wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.10/rustdesk-server-hbbr_1.1.10_amd64.deb
sudo dpkg -i rustdesk-server-hbbr_1.1.10_amd64.deb
sudo systemctl enable --now rustdesk-hbbr
防火墙配置
# 必须开放的端口
sudo ufw allow 21115/tcp # hbbs (WebSocket)
sudo ufw allow 21116/tcp # hbbr (TCP)
sudo ufw allow 21116/udp # hbbr (UDP)
sudo ufw allow 21117/tcp # hbbs (WebSocket)
sudo ufw allow 21118/tcp # hbbs (WebSocket)
sudo ufw allow 21119/tcp # hbbr (WebSocket)
配置客户端使用自建服务器
RustDesk 设置 → 网络 → ID/中继服务器:
- ID服务器:
hbbs.example.com - 中继服务器:
hbbr.example.com
重启RustDesk生效,永久Key文件从服务器复制到 /root/.rustdesk/id_ed25519.pub。
NAT类型识别
在线检测工具
访问 https://webrtc.github.io/test-webrtc/ 或装 pystun:
pip install pystun3
python -m stun
客户端运行stun测试
RustDesk自带类型检测:
设置 → 网络 → NAT类型(部分版本)- 或
日志 → 网络诊断
提升打洞成功率的实战技巧
1. 路由器UPnP开启
UPnP允许RustDesk自动在路由器上开端口,大幅提升打洞成功率:
- 大多数家用路由都有UPnP选项
- 企业路由通常禁用UPnP
- 启用后RustDesk日志显示
UPnP enabled
2. 主动端口转发
手动在路由器上做端口映射:
| 端口 | 协议 | 用途 |
|---|---|---|
| 21115 | TCP | hbbs |
| 21116 | TCP/UDP | hbbr/打洞 |
| 21117 | TCP | WebSocket |
路由器端:
- 找到 NAT/虚拟服务器/端口转发
- 添加上述规则
- 指向RustDesk运行设备的内网IP
3. 启用IPv6
很多地区家庭宽带已经分配IPv6,而IPv6端到端互联能绕过NAT问题:
- 客户端IPv6 Router Advertisement开启
- 防火墙放行IPv6的RustDesk端口
- RustDesk
设置 → 网络 → 优先IPv6
4. 使用Tailscale/ZeroTier叠加
如果RustDesk打洞失败但需要稳定的「类LAN」网络:
- 两端安装Tailscale或ZeroTier
- 接入同一虚拟网
- RustDesk客户端用
100.x.x.x这种虚拟IP - 走Tailscale/ZeroTier直连(基本100%打通)
这种方案把P2P问题外包给了另一层专门设计的网络工具,成功率极高。
常见网络环境对应方案
场景一:家庭宽带+家庭宽带
| 网络 | NAT类型预期 | 建议 |
|---|---|---|
| A端电信+Full Cone | ⭐⭐⭐⭐⭐ | 直接P2P |
| A端电信+Symmetric + B端移动Port Restricted | ⭐ | 走中继 |
| 两端都Full Cone | ⭐⭐⭐⭐⭐ | P2P + Tailscale备选 |
场景二:4G/5G移动网络
移动运营商的NAT通常很严格:
- 4G下大多数是对称型或受限锥形
- 5G的SA模式下NAT友好
- 移动端强烈建议开启 Tailscale/ZeroTier
场景三:企业网/校园网
企业网/校园网最容易出问题:
| 限制类型 | 表现 | 解决方案 |
|---|---|---|
| 禁止P2P | UDP几乎全被拦 | 走TCP中继 |
| 端口管控 | 21115-21119被封 | 改服务器端口 |
| NAT严格 | Symmetric | Tailscale |
| 深度包检测 | 阻断RustDesk协议 | 加密隧道(VPN/中转服务器) |
场景四:完全对称NAT
两个对称NAT后面的设备纯打洞无法穿透,必须依赖中继。可选:
- 自建hbbr中继
- 走Tailscale/ZeroTier
- Cloudflare Tunnel转发
中继性能调优
如果一定要走中继,可以优化延迟:
选择地理近的中继
中美之间1RTT物理距离就有200ms,海底光缆延迟无法避免。选择离两端都近的服务器:
| A位置 | B位置 | 推荐中继位置 |
|---|---|---|
| 中国 | 美国 | 日本/香港 |
| 中国 | 欧洲 | 新加坡/俄罗斯 |
| 中国 | 中国 | 北京/上海/广州 |
加密vs性能
hbbr支持加密和不加密传输:
- 加密模式:CPU消耗略增,但实际更快
- 因为加密阻止了运营商QoS降速
- 高级QoS系统识别不出流量类型,不会主动降级
- 明文模式:高延迟下运营商会限流
实测加密模式的视频流延迟通常更低,推荐开启。
中继服务器性能监控
服务端查看
# hbbs/hbbr 日志
journalctl -u rustdesk-hbbs -f
journalctl -u rustdesk-hbbr -f
关键指标
- 同时在线连接数
- 平均延迟
- CPU/带宽占用
- 每个客户端的带宽消耗
如果中继服务器CPU/带宽饱和,需要:
- 升级配置
- 增加节点
- 限速某些客户端
实战案例:完全打洞成功率对比
下表统计200次随机连接的穿透成功率(仅供参考):
| 网络组合 | 直连成功 | 中继成功 | 失败 |
|---|---|---|---|
| Full Cone + Full Cone | 195 | 5 | 0 |
| Port Restricted + Full Cone | 180 | 18 | 2 |
| Symmetric + Full Cone | 60 | 138 | 2 |
| Symmetric + Symmetric | 5 | 192 | 3 |
| TCP-only企业网两端 | 0 | 200 | 0 |
这个表清楚说明:在严格NAT环境下,中继是几乎唯一的选择,必须确保中继服务器稳定。
监控 NAT 穿透的工具
RustDesk日志
设置 → 网络 → 启用详细日志,日志中能看到:
P2P connection established直接连通Using relay: hbbs.example.com走中继Failed to connect失败原因
系统级诊断
tcpdump:看UDP包是否穿越路由器mtr:可视化丢包位置wireshark:深度分析穿透包
总结
RustDesk的P2P能力在合适的网络环境下表现优异,但要获得高穿透率需要:
- 识别双方的NAT类型:Full Cone可以直接P2P,Symmetric需要中继
- 配置路由器:UPnP或端口转发大幅提升打洞成功率
- 自建hbbs/hbbr:自托管比公共中继更稳定、更快
- 混合方案:Tailscale/ZeroTier作为兜底,在100%场景都能通
- 加密模式优先:不仅更安全,而且更不易被QoS降速
按本文的网络诊断和服务器配置流程,你的RustDesk实测穿透率应该能达90%以上。
这篇教程有帮助吗?立即下载RustDesk 中文网试试吧!
全平台支持 · 安全无毒 · 官方最新版