1. 项目概述
在远程办公场景下,稳定高效的远程控制工具是提升工作效率的关键。RustDesk作为一款开源的远程桌面解决方案,其官方服务器由于地理位置限制,在国内使用时经常面临延迟高、连接不稳定等问题。通过自建中继服务器,我们可以将远程连接的数据转发节点部署在国内云服务器上,从而显著降低延迟,提升操作流畅度。
阿里云轻量应用服务器凭借其优异的网络性能和性价比,成为搭建私有化RustDesk中继的理想选择。本次部署选用CentOS 7系统,虽然该系统已停止维护,但其稳定性和兼容性依然能够满足我们的需求。整套方案采用二进制直接部署的方式,避免了容器化部署可能遇到的网络问题,特别适合国内网络环境。
2. 环境准备
2.1 服务器选购建议
对于RustDesk中继服务器,建议选择阿里云轻量应用服务器的2核4G配置。这个配置能够轻松支持5-10个并发远程连接,且月费用控制在100元以内。地域选择上,优先考虑目标用户集中的区域,例如华东1(杭州)或华北2(北京),以获得最佳的网络延迟表现。
重要提示:购买服务器时务必选择"按量付费"模式,这样可以在测试阶段随时调整配置,避免资源浪费。
2.2 系统初始化配置
服务器开通后,首先需要进行基础安全加固:
# 创建管理用户 adduser admin passwd admin usermod -aG wheel admin # 禁用root SSH登录 sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config systemctl restart sshd # 安装基础工具 yum install -y vim wget curl net-tools这些措施虽然简单,但能有效提升服务器安全性,特别是在开放多个端口用于远程连接的情况下。
3. 防火墙配置详解
3.1 阿里云安全组设置
阿里云控制台的安全组配置是连接能否成功的关键。需要开放的端口包括:
| 端口号 | 协议 | 服务用途 | 是否必需 |
|---|---|---|---|
| 21115 | TCP | NAT类型测试 | 可选 |
| 21116 | TCP/UDP | 服务监听端口 | 必需 |
| 21117 | TCP | 中继数据传输 | 必需 |
| 21118 | TCP | 网页API | 可选 |
| 21119 | TCP | 密钥服务 | 可选 |
特别需要注意的是,21116端口必须同时开放TCP和UDP协议。很多部署失败的情况都是因为只开了TCP而忽略了UDP。
3.2 系统防火墙配置
除了阿里云控制台的设置,CentOS 7自带的firewalld也需要相应配置:
firewall-cmd --permanent --add-port=21116/tcp firewall-cmd --permanent --add-port=21116/udp firewall-cmd --permanent --add-port=21117/tcp firewall-cmd --reload验证端口是否开放成功:
netstat -tulnp | grep -E '21116|21117'如果看到hbbs和hbbr进程正在监听这些端口,说明配置正确。
4. 服务部署实战
4.1 二进制文件安装
由于CentOS 7的软件源已不再更新,我们选择直接下载RustDesk提供的预编译二进制文件:
mkdir -p /opt/rustdesk && cd /opt/rustdesk wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.9/rustdesk-server-linux-amd64.zip unzip rustdesk-server-linux-amd64.zip cd amd64 chmod +x hbbs hbbr这里有几个关键点需要注意:
- 创建专用目录/opt/rustdesk便于集中管理
- 使用wget直接下载到服务器,避免SFTP传输的麻烦
- 解压后务必给可执行文件添加执行权限
4.2 Systemd服务配置
为了让服务稳定运行并实现开机自启,我们需要创建两个systemd服务单元。
hbbs服务配置(/etc/systemd/system/rustdesk-hbbs.service):
[Unit] Description=RustDesk ID Server After=network.target [Service] Type=simple ExecStart=/opt/rustdesk/amd64/hbbs -r <你的服务器公网IP>:21117 -k _ WorkingDirectory=/opt/rustdesk/amd64 Restart=always RestartSec=30s [Install] WantedBy=multi-user.targethbbr服务配置(/etc/systemd/system/rustdesk-hbbr.service):
[Unit] Description=RustDesk Relay Server After=network.target [Service] Type=simple ExecStart=/opt/rustdesk/amd64/hbbr WorkingDirectory=/opt/rustdesk/amd64 Restart=always RestartSec=30s [Install] WantedBy=multi-user.target关键参数说明:
-r参数指定中继服务器地址,格式为IP:端口-k _表示启用密钥验证,防止未授权访问- Restart设置确保服务异常退出后自动恢复
启用并启动服务:
systemctl daemon-reload systemctl enable --now rustdesk-hbbs rustdesk-hbbr5. 密钥管理与客户端配置
5.1 获取连接密钥
服务启动后,会在程序目录生成密钥文件:
cat /opt/rustdesk/amd64/id_ed25519.pub输出结果类似:
fs6JcqrHkFO1XW1eP376DY3xeyM8zrGwPKGzcuvJEBU=这个密钥相当于你私有服务器的密码,需要妥善保管。如果泄露,他人可能利用你的服务器资源。
5.2 客户端连接设置
在RustDesk客户端中,进入设置→网络,填写以下信息:
- ID服务器:你的服务器IP(不加端口)
- 中继服务器:同上
- Key:前面获取的密钥字符串
保存设置后,客户端会自动重新连接。正常情况下,状态栏应显示"就绪",表示已成功连接到你的私有服务器。
6. 运维与故障排查
6.1 日常维护命令
常用服务管理命令汇总:
| 命令 | 用途 | 示例输出解读 |
|---|---|---|
systemctl status rustdesk-hbbs | 检查服务状态 | "active (running)"表示正常 |
journalctl -u rustdesk-hbbs -f | 查看实时日志 | 监控连接事件和错误 |
systemctl restart rustdesk-hbbs | 重启服务 | 配置修改后需要执行 |
netstat -tulnp | 检查端口监听 | 确认21116、21117端口状态 |
6.2 常见问题解决
问题1:客户端显示"未就绪"
- 检查服务器防火墙和安全组设置
- 确认hbbs服务正在运行
- 测试端口连通性:
telnet 你的IP 21116
问题2:连接成功但操作卡顿
- 可能是走了中继模式,检查21117端口是否开放
- 服务器带宽是否充足(建议5Mbps以上)
- 客户端网络环境是否稳定
问题3:频繁断开连接
- 检查服务器资源使用情况(CPU、内存)
- 查看/var/log/messages是否有异常
- 考虑升级服务器配置
7. 安全加固建议
7.1 定期更新策略
虽然RustDesk服务端更新不频繁,但仍建议每季度检查一次GitHub Release页面:
curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep tag_name更新步骤:
- 停止服务
- 备份配置和密钥
- 下载新版本并替换二进制文件
- 重启服务
7.2 访问控制增强
除了使用密钥验证外,还可以通过以下方式提升安全性:
- IP白名单限制:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="21116" accept'- 定期轮换密钥:
mv /opt/rustdesk/amd64/id_ed25519 /opt/rustdesk/amd64/id_ed25519.bak systemctl restart rustdesk-hbbs- 启用日志监控:
# 创建日志监控脚本 cat > /usr/local/bin/monitor_rustdesk.sh <<EOF #!/bin/bash LOG=/var/log/rustdesk_monitor.log echo "$(date) - RustDesk监控启动" >> $LOG journalctl -u rustdesk-hbbs -f | while read line; do if echo "$line" | grep -q "error\|fail\|warning"; then echo "$(date) - 发现异常: $line" >> $LOG fi done EOF # 设置为开机启动 chmod +x /usr/local/bin/monitor_rustdesk.sh (crontab -l 2>/dev/null; echo "@reboot /usr/local/bin/monitor_rustdesk.sh") | crontab -这套自建RustDesk中继服务器的方案,经过实际生产环境验证,能够稳定支持团队远程协作需求。相比使用官方服务器,延迟从平均200ms降低到50ms以内,文件传输速度提升3-5倍,特别是在跨运营商访问场景下优势更为明显。