自建RustDesk远程桌面服务

12/28/2022

# 一、RustDesk

在日常使用中,向日葵远控是一款不可或缺的远控软件。能满足日常中绝大部分需求。但也有一些弊端,免费版使用的人很多,某些时段,操作画面会很卡。有低概率客户端卡死,链接不上服务。Android端需要开通会员等。

在V2ex常常会看到贴友们比较倾向于自建服务,喜欢自主可控。这其中就友贴友推荐自建远控服务RustDesk

RustDesk (opens new window)是一款免费开源的远程桌面软件。开箱即用,无需其他配置。

RustDesk提供了本地客户端、中继服务端。在中继服务器中配置好相应的端口和运行服务后,本地安装好客户端软件,配置好中继服务器IP + 加密Key就能实现多端远程控制。

本次实例是运行在 Ubuntu 18.04.6 LTS。RustDesk对CPU和内存的要求极低。

# 二、部署 RustDesk 服务

网上有一些 RustDisk 的相关内容,不多比较零散。阅读后了解到大致有这几个重要步骤

# 开放端口

ufw allow 21115:21119/tcp
ufw allow 8000/tcp
ufw allow 21116/udp
sudo ufw enable

# 下载 rustdesk-server 服务

官网文档还算全面,刚开始看的是翻译后的英文版文档。问题出在下载资源阶段。因为一些资源在 github 。资源就是下载不下来。解决办法就是多次重试。

wget https://raw.githubusercontent.com/dinger1986/rustdeskinstall/master/install.sh
chmod +x install.sh
./install.sh

还有另一种方法,就是手动下载 (opens new window)到服务器。其中有两个可执行文件:

hbbs - RustDesk ID注册服务器
hbbr - RustDesk 中继服务器

# 运行 rustdesk-server 服务

在服务器(CentOS 或 Ubuntu)上运行 hbbs/hbbr

./hbbs -r <relay-server-ip[:port]> 
./hbbr 

默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。务必在防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP。其中21115是hbbs用作NAT类型测试,21116/UDP是hbbs用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务,21117是hbbr用作中继服务, 21118和21119是为了支持网页客户端。如果你不需要网页客户端(21118,21119)支持,对应端口可以不开。

# 三、设置 hbbs/hbbr 地址

安装客户端

在客户端设置 hbbs/hbbr 地址

在 ID 服务器输入框中(被控端+主控端)输入 hbbs 主机或 ip 地址,另外两个地址可以不填,RustDesk会自动推导(如果没有特别设定),中继服务器指的是hbbr(21117)端口。

在客户端设置 hbbs/hbbr 地址

# Key 的获取

hbbs在第一次运行时,会自动产生一对加密私钥和公钥(分别位于运行目录下的id_ed25519和id_ed25519.pub文件中),其主要用途是为了通讯加密。

如果你在上一步骤中没有填写Key:(公钥文件id_ed25519.pub中的内容),不影响连接,但是连接无法加密。

cat ./id_ed25519.pub

如果你禁止没有key的用户建立非加密连接,请在运行hbbs和hbbr的时候添加-k _参数

./hbbs -r <relay-server-ip[:port]> -k _
./hbbr -k _

# 四、使用感受

RustDesk总体感受还是很不错的,客户端占用的带宽和 CPU 都不高,还能对 Android 进行操作。日常办公绝对不输于向日葵。

由于服务器带宽只有 1M(平均就是168K上下)。当画面内容变化较大,服务器带宽就会跟不上,就会显得卡。升级宽带能解决这个问题。

在游戏方面画面延迟就很明显,这也受限上方提的服务器带宽不够。

Android 延迟非常大,猜测也受限于服务器带宽。

# 参见

rustdesk.com

rustdesk GitHub (opens new window)

Docs of RustDesk (opens new window)

RustDesk文档 (opens new window)

Last Updated: 12/29/2022, 4:03:29 PM