1. 配置目标
本文记录在云服务器上部署 RustDesk 自建服务器的基本流程,用于替代 RustDesk 官方公共服务器,实现私有化的 ID 服务与中继服务。
服务器公网 IP:<YOUR_SERVER_IP>
服务器域名:<YOUR_DOMAIN>
系统环境:Linux / Alibaba Cloud Linux / CentOS / Ubuntu 等
RustDesk Server 组件:hbbs / hbbr
RustDesk 自建服务主要包括两个核心进程:
hbbs:ID / rendezvous server,用于设备注册、ID 解析、NAT 打洞协调
hbbr:relay server,用于无法直连时的数据中继
2. RustDesk 常用端口
TCP 21115:NAT 类型测试
TCP 21116:ID 服务,hbbs
UDP 21116:打洞、心跳、连接协调,hbbs
TCP 21117:中继服务,hbbr
TCP 21118:Web Client 相关,hbbs
TCP 21119:Web Client 相关,hbbr
最关键的是:
ID Server = 21116
Relay Server = 21117
常见错误:把 21117 填到 ID 服务器中。21117 是中继服务器端口,不是 ID 服务器端口。
错误示例:
ID 服务器:<YOUR_SERVER_IP>:21117
中继服务器:空
正确示例:
ID 服务器:<YOUR_SERVER_IP>:21116
中继服务器:<YOUR_SERVER_IP>:21117
API 服务器:留空
Key:<YOUR_RUSTDESK_PUBLIC_KEY>
3. 检查 RustDesk Server 是否运行
在服务器上检查端口监听:
ss -lntup | grep -E '21115|21116|21117|21118|21119'
正常情况下应该看到类似端口监听:
UDP 21116 hbbs
TCP 21115 hbbs
TCP 21116 hbbs
TCP 21117 hbbr
TCP 21118 hbbs
TCP 21119 hbbr
也可以查看进程:
ps -ef | grep -E 'hbbs|hbbr' | grep -v grep
如果没有看到相关进程,说明 RustDesk Server 没有启动,需要检查安装方式、启动脚本或 Docker 容器状态。
4. 放行服务器系统防火墙端口
如果服务器使用 firewalld,需要放行 RustDesk 端口:
firewall-cmd --permanent --add-port=21115-21119/tcp
firewall-cmd --permanent --add-port=21116/udp
firewall-cmd --reload
检查是否生效:
firewall-cmd --list-all | grep 211
注意:服务器内部防火墙放行后,还需要在云厂商安全组中继续放行同样端口。
5. 云服务器安全组配置
以阿里云 ECS 为例,需要在当前实例绑定的安全组入方向规则中添加:
允许 自定义 TCP 21115-21119 0.0.0.0/0
允许 自定义 UDP 21116 0.0.0.0/0
注意事项:
- 必须配置入方向规则;
- 必须配置在当前 ECS 实例绑定的安全组上;
- TCP 和 UDP 要分别配置;
- UDP 21116 不能遗漏;
- 如果只允许某个固定公网 IP,其他网络下的设备可能无法注册到 RustDesk Server。
测试阶段可以使用 0.0.0.0/0 便于排错。正式使用时可以根据实际场景收紧来源 IP,但如果需要多地、多设备访问,来源 IP 过窄会导致部分设备无法连接。
6. RustDesk 客户端配置
在 RustDesk 客户端中进入:
设置 -> 网络 -> ID/中继服务器
填写:
ID 服务器:<YOUR_SERVER_IP>:21116
中继服务器:<YOUR_SERVER_IP>:21117
API 服务器:留空
Key:<YOUR_RUSTDESK_PUBLIC_KEY>
如果使用域名:
ID 服务器:<YOUR_DOMAIN>:21116
中继服务器:<YOUR_DOMAIN>:21117
API 服务器:留空
Key:<YOUR_RUSTDESK_PUBLIC_KEY>
控制端和被控端都需要配置同一套参数:同一个 ID Server、同一个 Relay Server、同一个 Key。如果只有一端配置自建服务器,另一端仍使用官方服务器,通常无法正常发现和连接。
7. 获取 RustDesk Server Public Key
客户端的 Key 应填写服务器生成的公钥,通常文件名为:
id_ed25519.pub
可以在服务器上查找:
find / -name "id_ed25519.pub" 2>/dev/null
找到后查看内容:
cat <RUSTDESK_SERVER_DIR>/id_ed25519.pub
将输出的整行内容复制到 RustDesk 客户端的 Key 中。
- 填的是
.pub公钥,不是私钥; - 不要公开实际 Key;
- 不要把服务器密码、SSH key、邮箱等填到这里;
- 控制端和被控端必须使用相同 Key。
8. 本地测试端口连通性
在本地电脑测试 TCP 端口是否能访问:
nc -vz <YOUR_SERVER_IP> 21116
nc -vz <YOUR_SERVER_IP> 21117
成功时通常显示:
Connection to <YOUR_SERVER_IP> 21116 port [tcp/*] succeeded!
Connection to <YOUR_SERVER_IP> 21117 port [tcp/*] succeeded!
如果失败,例如超时或连接拒绝,需要检查 RustDesk Server 是否启动、服务器端口是否监听、firewalld 是否放行、云服务器安全组是否放行、是否配置到了正确的安全组、是否遗漏 UDP 21116,以及本地网络或代理是否干扰连接。
UDP 21116 不容易用 nc 直接准确测试,但它对 RustDesk 打洞和连接协调很重要,必须放行。
9. 常见问题与定位方法
9.1 RustDesk 显示“无网络”
常见原因包括:ID Server 端口填错、ID Server 填成 Relay Server 端口、Key 不匹配、安全组或 firewalld 未放行、hbbs/hbbr 未启动,以及控制端和被控端没有使用同一套服务器配置。
ID Server 应为 <YOUR_SERVER_IP>:21116
Relay Server 应为 <YOUR_SERVER_IP>:21117
9.2 服务器端监听正常,但客户端连接不上
先确认服务器监听:
ss -lntup | grep -E '21115|21116|21117|21118|21119'
如果监听正常但外部客户端仍连不上,优先检查云安全组入方向是否放行 TCP 21115-21119 和 UDP 21116,是否加到了当前实例绑定的安全组,是否误加到了内网规则或错误方向,以及服务器 firewalld 是否放行。
9.3 只配置 firewalld 仍然连不上
云服务器通常有两层访问控制:
第一层:云厂商安全组
第二层:服务器系统防火墙
只执行 firewall-cmd 命令只能放行服务器系统防火墙,不会自动修改云厂商安全组。因此还必须在云控制台中放行对应端口。
9.4 Key 应该填什么
应填写服务器生成的 RustDesk 公钥:
cat <RUSTDESK_SERVER_DIR>/id_ed25519.pub
不要填写私钥 id_ed25519、SSH 私钥、服务器密码、邮箱、阿里云 AccessKey 或随便生成的字符串。
9.5 中继服务器可以留空吗
可以
ID 服务器:<YOUR_SERVER_IP>:21116
中继服务器:<YOUR_SERVER_IP>:21117
显式填写端口可以避免客户端自动推断带来的不确定性。
10. 推荐最终配置
服务器端监听:
TCP 21115
TCP 21116
UDP 21116
TCP 21117
TCP 21118
TCP 21119
服务器 firewalld:
firewall-cmd --permanent --add-port=21115-21119/tcp
firewall-cmd --permanent --add-port=21116/udp
firewall-cmd --reload
云安全组入方向:
TCP 21115-21119 0.0.0.0/0
UDP 21116 0.0.0.0/0
RustDesk 客户端:
ID 服务器:<YOUR_SERVER_IP>:21116
中继服务器:<YOUR_SERVER_IP>:21117
API 服务器:留空
Key:<YOUR_RUSTDESK_PUBLIC_KEY>
验证命令:
ss -lntup | grep -E '21115|21116|21117|21118|21119'
firewall-cmd --list-all | grep 211
nc -vz <YOUR_SERVER_IP> 21116
nc -vz <YOUR_SERVER_IP> 21117
11. 本次配置经验总结
本次配置中,服务器端 hbbs 和 hbbr 实际已经正常运行,端口也已经监听。系统防火墙放行后,服务器内部环境基本正常。
真正需要重点注意的是:
- RustDesk 客户端 ID Server 端口不能填错;
21116是 ID Server,21117是 Relay Server;- 云服务器安全组和系统防火墙都要放行;
- TCP 和 UDP 要分别配置;
- UDP 21116 不能遗漏;
- Key 必须使用服务器的
id_ed25519.pub内容; - 控制端和被控端都要使用同一套自建服务器配置。