黎小葱 2025-12-17 10:00 采纳率: 98.5%
浏览 6
已采纳

RustDesk服务器配置常见问题:如何正确设置自建中继服务器?

在部署RustDesk自建中继服务器时,常见问题是中继服务无法正常建立连接,客户端显示“P2P失败,尝试中继”。这通常源于未正确配置`hbbs`和`hbbr`服务的公网IP与端口映射,或防火墙未开放必要的TCP/UDP端口(如21115、21116、21117等)。此外,若未在启动参数中正确设置`--api`和`--relay`地址,或DNS解析与实际IP不匹配,也会导致中继注册失败。需确保服务端配置文件与客户端ID绑定逻辑一致,并启用日志排查通信异常。
  • 写回答

1条回答 默认 最新

  • 娟娟童装 2025-12-17 10:00
    关注

    1. 常见现象与初步排查

    在部署 RustDesk 自建中继服务器时,最常见的表现是客户端连接显示“P2P失败,尝试中继”,随后连接中断或卡顿。这表明 P2P 直连未成功,系统已切换至中继模式,但中继服务未能正常响应。初步判断应从网络可达性入手,确认 hbbs(ID 服务器)和 hbbr(中继服务器)是否已在公网正确暴露。

    • 检查服务器公网 IP 是否固定且可访问
    • 确认 DNS 解析是否指向正确的公网 IP
    • 验证客户端配置中的 ID 服务器地址(--api)与中继地址(--relay)是否准确

    2. 端口映射与防火墙配置

    RustDesk 中继通信依赖多个关键端口,若未正确映射或被防火墙拦截,将直接导致中继注册失败。
    服务端口协议用途
    hbbs21114TCPID 注册与心跳
    hbbs21115UDPNAT 穿透打洞
    hbbr21116TCP中继数据通道
    hbbr21117UDP中继媒体流(可选)
    Web API21118TCPAPI 接口(如启用)

    需确保云服务商安全组、本地防火墙(如 iptables、firewalld)及路由器 NAT 规则均开放上述端口,并完成公网 IP 到内网服务的端口转发。

    3. 启动参数与服务配置一致性

    hbbshbbr 的启动参数必须显式指定公网可达地址,否则内部生成的 token 或 relay 地址可能包含私网 IP,导致客户端无法连接。
    # hbbs 启动示例
    ./hbbs -i 0.0.0.0 --api 1.2.3.4:21114 --relay 1.2.3.4:21116 --key ./id_ed25519
    
    # hbbr 启动示例
    ./hbbr -i 0.0.0.0 --api 1.2.3.4:21114 --key ./id_ed25519

    其中 --api 指定 hbbs 的 TCP 服务地址,--relay 指定 hbbr 提供中继服务的公网入口。若使用域名,需确保 DNS 解析稳定且 TTL 较低,避免 IP 变更后缓存延迟。

    4. 配置文件与客户端 ID 绑定逻辑

    RustDesk 客户端通过唯一 ID 向 hbbs 注册,服务器需维护 ID 到连接状态的映射表。若多实例部署未共享状态或配置不一致(如密钥不匹配),会导致注册冲突或中继寻址失败。
    1. 确保所有服务使用同一套密钥对(id_ed25519
    2. 避免多个 hbbs 实例同时运行造成 ID 冲突
    3. 定期清理过期会话(可通过日志观察心跳超时)
    4. 启用持久化存储(如 SQLite)以支持重启后状态恢复

    5. 日志分析与通信链路追踪

    启用详细日志是定位中继失败的核心手段。通过分析 hbbshbbr 输出日志,可判断:
    • 客户端是否成功注册到 hbbs
    • hbbs 是否向 hbbr 正确转发中继请求
    • UDP 打洞是否触发,NAT 类型是否受限
    • TLS 握手失败或证书校验异常
    2025-04-05 10:23:45.123 INFO [hbbs] Client(ID: abc123) registered from 203.0.113.45:54321
    2025-04-05 10:23:46.789 WARN [hbbs] Relay request for abc123 → xyz789, but target offline
    2025-04-05 10:23:47.001 DEBUG [hbbr] Incoming relay stream from 1.2.3.4:21116 to 203.0.113.45 failed: timeout

    6. 网络拓扑与中继流程可视化

    以下 Mermaid 流程图展示客户端通过中继建立连接的关键步骤: graph TD A[客户端A启动] --> B{能否P2P直连?} B -- 否 --> C[连接hbbs注册ID] C --> D[hbbs记录在线状态] D --> E[客户端B请求连接A] E --> F[hbbs通知A] F --> G[A无法直连B] G --> H[hbbs返回中继地址] H --> I[双方连接hbbr中继] I --> J[数据经hbbr转发] J --> K[连接建立成功]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 12月18日
  • 创建了问题 12月17日