CentOS部署RustDesk私有中继服务器:从零搭建到安全配置

张开发
2026/7/1 9:15:46 15 分钟阅读
CentOS部署RustDesk私有中继服务器:从零搭建到安全配置
1. 为什么需要私有化部署RustDesk中继服务器远程办公已经成为现代企业不可或缺的工作方式但很多团队在使用公共远程桌面服务时常常遇到连接不稳定、数据传输速度慢的问题。更让人头疼的是敏感数据经过第三方服务器时总让人心里不踏实。RustDesk作为一款开源的远程控制软件允许我们自建中继服务器就像在公司内部搭建专属的数据高速公路。我在帮一家设计公司部署私有中继服务器时他们的设计师经常需要传输大型PSD文件。使用公共服务器时一个500MB的文件传输需要近20分钟而切换到自建服务器后同样的文件3分钟内就能完成传输。更重要的是所有设计稿都在内网流转完全避开了互联网传输的风险。CentOS系统以其稳定性和安全性著称特别适合作为中继服务器的运行环境。相比直接使用RustDesk的公共服务器私有部署带来三个明显优势首先是网络延迟大幅降低其次是数据传输不再受限于公共带宽最重要的是所有远程会话都在自己掌控的网络安全边界内完成。2. 基础环境准备与依赖安装2.1 系统环境检查在开始之前建议使用CentOS 7或8的稳定版本。我遇到过有人在CentOS 6上尝试安装结果被各种依赖问题折腾得够呛。先用这个命令检查系统版本cat /etc/redhat-release内存建议至少2GB我之前在1GB内存的机器上测试当多个会话同时传输大文件时会出现内存不足的情况。磁盘空间不需要太大20GB足够但要注意/var分区要有足够空间存放日志文件。2.2 Node.js环境配置RustDesk服务器依赖Node.js环境这里有个小技巧不要用yum直接安装因为默认仓库的版本通常比较旧。我推荐手动安装LTS版本cd /usr/local wget https://registry.npmmirror.com/-/binary/node/v16.18.1/node-v16.18.1-linux-x64.tar.gz tar -zxvf node-v16.18.1-linux-x64.tar.gz配置环境变量时建议在/etc/profile.d/下新建单独的文件而不是直接修改/etc/profile这样更便于管理echo export NODE_HOME/usr/local/node-v16.18.1-linux-x64 /etc/profile.d/nodejs.sh echo export PATH$PATH:$NODE_HOME/bin /etc/profile.d/nodejs.sh source /etc/profile.d/nodejs.sh验证安装时除了检查版本号最好再测试下npm能否正常安装包node -v npm -v npm install -g yarn2.3 PM2进程管理工具PM2是Node.js应用的守护进程管理器它能确保服务意外退出时自动重启。安装时建议加上--unsafe-perm参数避免权限问题npm install pm2 -g --unsafe-perm安装完成后先别急着用我们需要优化几个配置。创建一个PM2的启动配置文件pm2 startup pm2 save这样系统重启时PM2会自动恢复所有托管进程。我建议再设置下日志轮转防止日志文件过大pm2 install pm2-logrotate pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 73. RustDesk服务器部署实战3.1 服务器组件安装RustDesk服务器包含两个核心组件hbbsID服务器和hbbr中继服务器。下载时要注意架构匹配现在大多数云服务器都是x86_64架构cd /usr/local wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.10-3/rustdesk-server-linux-amd64.zip unzip rustdesk-server-linux-amd64.zip解压后会得到一个amd64目录里面包含可执行文件。我习惯创建一个软链接方便后续管理ln -s /usr/local/amd64 /opt/rustdesk-server3.2 服务启动与守护启动服务时那个-k _参数很关键它表示使用自动生成的密钥对。如果以后需要更换密钥只需要删除id_ed25519文件重新启动服务即可cd /opt/rustdesk-server pm2 start hbbs -- -k _ pm2 start hbbr -- -k _检查服务状态时不要只看PM2的列表最好用netstat确认端口监听情况netstat -tulnp | grep -E hbbs|hbbr正常情况下应该看到21115-21119端口的监听状态。如果发现端口没起来可以检查~/.pm2/logs下的错误日志。3.3 防火墙配置技巧防火墙配置是个容易出错的地方。除了开放TCP端口千万别忘了21116的UDP端口这是用于P2P打洞的关键端口firewall-cmd --permanent --add-port21115-21119/tcp firewall-cmd --permanent --add-port21116/udp firewall-cmd --reload在云服务器环境下还需要在安全组规则中添加相应放行规则。不同云厂商的配置界面不同但核心都是放行上述端口。我曾经遇到过客户在阿里云上配置了防火墙但忘了配置安全组排查了半天才发现问题。4. 安全加固与生产环境优化4.1 密钥管理与更换安装完成后id_ed25519.pub文件中的公钥需要妥善保管。这个密钥相当于服务器的身份证客户端连接时需要验证。查看公钥的命令cat /opt/rustdesk-server/id_ed25519.pub如果需要更换密钥比如员工离职只需停止服务、删除密钥文件后重新启动pm2 delete hbbs hbbr rm -f /opt/rustdesk-server/id_ed25519* pm2 start hbbs -- -k _ pm2 start hbbr -- -k _4.2 网络隔离与访问控制生产环境中我强烈建议将中继服务器放在DMZ区域并通过防火墙规则限制访问源IP。比如只允许公司办公网络的IP访问21115-21119端口firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoltcp port21115-21119 accept firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoludp port21116 accept4.3 日志监控与告警PM2自带的日志功能比较基础我们可以配置日志转发到集中式日志系统。这里介绍一个简单的方案使用logrotate配合webhook告警。首先创建日志轮转配置cat /etc/logrotate.d/rustdesk EOF /root/.pm2/logs/*.log { daily missingok rotate 7 compress delaycompress notifempty sharedscripts postrotate curl -X POST https://your-webhook-url -d {text:RustDesk日志已轮转} endscript } EOF对于关键业务还可以设置进程存活性检查crontab -l | { cat; echo * * * * * pgrep hbbs || { pm2 restart hbbs; echo hbbs restarted | mail -s RustDesk Alert adminexample.com; }; } | crontab -5. 客户端配置与使用技巧5.1 客户端连接配置在RustDesk客户端中需要配置两个关键参数ID服务器填写服务器公网IP或域名Key填写之前获取的id_ed25519.pub内容如果服务器部署在内网需要通过端口映射将21115-21119端口映射到公网。这里有个细节很多路由器默认不支持UDP端口映射需要特别检查21116 UDP端口的映射是否生效。5.2 网络优化建议对于跨地域访问可以在不同地区部署多个中继服务器然后在客户端配置多个备用服务器。RustDesk支持服务器集群配置只需要在各服务器的hbbs启动时指定相同的-k参数值即可。如果遇到连接速度慢的问题可以尝试调整MTU值。我在帮一个客户排查问题时发现他们的VPN隧道MTU设置不当导致分片过多将MTU从1500调整为1200后性能提升明显# 在客户端机器上执行 ifconfig eth0 mtu 12005.3 常见问题排查当连接出现问题时可以按照以下步骤排查检查服务器端口是否通畅telnet your-server-ip 21115检查PM2日志pm2 logs hbbs检查防火墙规则firewall-cmd --list-all如果是云服务器检查安全组规则检查客户端与服务器的时间是否同步超过3分钟时差会导致连接失败我在实际运维中发现80%的连接问题都是由于防火墙或安全组配置不当引起的。建议建立一个检查清单每次部署新服务器时逐项核对。

更多文章