自建rustdesk中继服务器完全可行,需正确放行端口(tcp 21115-21119及udp 21116)、用-k _参数启动hbbs/hbbr、配置客户端指向ip:21116和ip:21117,并通过日志验证注册与中继服务是否正常运行。

自建 RustDesk 中继服务器在 Linux 上完全可行,且不需要付费、不限速、不依赖官方节点——但前提是端口放行正确、服务启动方式得当、密钥配置不被跳过。很多人卡在连接不上或“显示在线但无法控制”,问题几乎都出在 hbbs 和 hbbr 的启动参数或防火墙策略上。
确认服务器基础环境与端口开放
别急着下载二进制文件,先确保系统能跑起来:Ubuntu 20.04+/Debian 11+/CentOS 8+ 都支持;ARM 架构(如树莓派)必须选带 -arm64 后缀的包。重点不是 CPU 或内存,而是网络可达性:
- 云服务商安全组必须放行 TCP 端口:
21115、21116、21117、21118、21119 -
21116还要额外放行 UDP ——漏掉这个,客户端连不上 ID 注册服务,所有后续操作都无效 - 本地防火墙(如
ufw或firewalld)也得同步放开,不能只信安全组 - 若用宝塔面板,记得在「安全」页手动添加这些端口,别只靠“放通所有端口”这种懒方案
下载并运行 hbbs + hbbr 服务(不推荐源码编译)
RustDesk 官方已提供预编译二进制,直接用最省事。源码构建需要 Rust 工具链和大量依赖,对中继场景纯属冗余。实操步骤如下:
- 去 GitHub releases 页面 下载最新版
rustdesk-server-linux-amd64.zip(或对应架构) - 解压后得到三个文件:
hbbs(ID/信令服务)、hbbr(中继服务)、rustdesk-utils(工具集) - 必须加
-k _启动,否则未加密连接可被任意客户端接入,等于裸奔:./hbbs -k _<br>./hbbr -k _
- 不要用
nohup &手动后台跑——容易崩溃且无日志追踪。改用systemd或pm2(需 Node.js v16+)
客户端如何正确指向你的中继服务器?
填错地址是“连得上但卡死”的头号原因。Windows/macOS 客户端设置路径是:右键系统托盘图标 →「ID / 中继服务器」→ 填写两项:
-
ID 服务器:填你服务器的 IP 或域名 +:21116(例如1.2.3.4:21116) -
中继服务器:同样填 IP 或域名 +:21117(例如1.2.3.4:21117) - Android/iOS 客户端在「设置」→「网络」里修改,字段名略有不同,但端口逻辑一致
- 如果用了域名,务必确认 DNS 解析生效且无 CDN 缓存(尤其国内解析延迟高时,建议先用 IP 测试通不通)
hbbs/hbbr 日志怎么看?常见失败信号有哪些?
服务跑起来了不代表真正常。关键看日志输出是否出现稳定心跳和注册成功字样:
-
hbbs启动后应看到类似INFO hbbs::main: NAT type test server started on [::]:21115和INFO hbbs::main: Heartbeat server started on [::]:21116 -
hbbr应输出INFO hbbr::main: Relay server started on [::]:21117 - 客户端首次连接时,
hbbs日志里要有INFO hbbs::server: Register id xxxxx;没有这行,说明 ID 没注册成功,大概率是21116/udp被拦截 - 若日志反复刷
connection refused或空行不动,优先检查hbbr是否真的在监听:21117(用ss -tuln | grep 21117验证)
真正难调的点不在安装,而在于 UDP 端口是否穿透成功、客户端是否因网络策略绕过了你的中继直连失败节点——这些不会报错,只会静默降级。动手前,先用两台局域网设备测试,排除公网干扰,再逐步放开到广域网。











