最新消息:

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

vps koic_zhzz 480浏览 0评论

在远程桌面方面博主以前一直用的是TeamViewer,官方各种查商用加限制之后换成了国产的ToDesk,但是近来ToDesk也开始炸鱼了,强制登陆加各种限制。最近恰好看到Rustdesk转为开源模式了就摸索着尝试一下它的使用,体验真的很棒~

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

软件官网:https://rustdesk.com

简单总结一下博主这几天使用RustDesk的优势:

(1)轻量:不论服务端还是客户端、不论哪个平台,软件小巧、功能完备。
(2)全平台支持:支持Android、Linux、Windows任意双向控制。
(3)安全可控:软件开源,服务端自建,通信加密。
(4)带宽高效:仅需2-3M即可流畅1080P,支持TCP打洞端对端P2P连接。

除了日常使用的主控、被控手机和电脑之外,要准备的就只有一台服务器。博主办公室是接入的学校的教育网,本身教育网与三大运营商的互联稳定性迄今为止依然一言难尽,加上科研区域的网络不支持P2P打洞,主被控之间延时常常达到150ms以上。这也是在使用ToDesk等软件时造成体验不佳的原因之一,商业化的软件往往不会针对高成本的小众网络进行单独的优化。环顾了一下博主列表的的服务器,博主在腾讯云上海的轻量应用服务器对这个需求是极佳的选择。

腾讯云在2019年开始在BGP中引入了教育网、科技网线路,现在教育网到达腾讯云的服务器无需经过三大运营商的网络,合肥教育网-上海腾讯云仅需14ms。实测通过合肥教育网>上海腾讯云>合肥移动/电信这样的转发链路,RustDesk的往返延迟能降低到35ms左右。除此之外,腾讯云轻量在价格、带宽、易用性方面上都有显著的优势。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

在远程桌面方面博主以前一直用的是TeamViewer,官方各种查商用加限制之后换成了国产的ToDesk,但是近来ToDesk也开始炸鱼了,强制登陆加各种限制。最近恰好看到Rustdesk转为开源模式了就摸索着尝试一下它的使用,体验真的很棒~


一、软件简介

RustDesk,工具如其名,基于高效的Rust语言构建的开源远程桌面工具。这款工具最早我是在V2EX上看到的,但是当时自建服务端需要支付100美金购买授权,用于展示的demo只能实现最简单的演示功能,内置的服务器似乎位于境外,无法作为生产力软件使用。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

最近又看到群友提起,发现RustDesk已经将服务端开源并允许自行搭建中转服务器。开学以来博主频繁用到远程桌面软件,因为即使不在办公室也时常需要在办公室的电脑上录制会议、接收文件、刷网课等。从去年开始博主一直使用的是ToDesk,但是近期几个新版本主控不仅强制登陆还加入了针对Android被控的限制,免费版仅有支持一台设备且并且一个月才能更换一次。软件本身也有点小bug,手机作为主控时断开连接把app置于后台一段时间之后,再打开就会提示“账号未登陆”,只有重启软件后才能继续正常控制账户内的电脑。

简单总结一下博主这几天使用RustDesk的优势:

(1)轻量:不论服务端还是客户端、不论哪个平台,软件小巧、功能完备。
(2)全平台支持:支持Android、Linux、Windows任意双向控制。
(3)安全可控:软件开源,服务端自建,通信加密。
(4)带宽高效:仅需2-3M即可流畅1080P,支持TCP打洞端对端P2P连接。


二、准备工作

除了日常使用的主控、被控手机和电脑之外,要准备的就只有一台服务器。博主办公室是接入的学校的教育网,本身教育网与三大运营商的互联稳定性迄今为止依然一言难尽,加上科研区域的网络不支持P2P打洞,主被控之间延时常常达到150ms以上。这也是在使用ToDesk等软件时造成体验不佳的原因之一,商业化的软件往往不会针对高成本的小众网络进行单独的优化。环顾了一下博主列表的的服务器,博主在腾讯云上海的轻量应用服务器对这个需求是极佳的选择。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

腾讯云在2019年开始在BGP中引入了教育网、科技网线路,现在教育网到达腾讯云的服务器无需经过三大运营商的网络,合肥教育网-上海腾讯云仅需14ms。实测通过合肥教育网>上海腾讯云>合肥移动/电信这样的转发链路,RustDesk的往返延迟能降低到35ms左右。除此之外,腾讯云轻量在价格、带宽、易用性方面上都有显著的优势。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk


三、构建服务端

Rustdesk官方有提供docker一把梭的的部署方式,可以很方便地将服务端搭建起来。不过本文着重记录一下手动配置的方式,毕竟作为Rustdesk本身硬件要求极低,还是要把优势最大化展示出来。

官方文档:https://rustdesk.com/docs/zh-cn/self-host/install/

Rustdesk的服务端(即转发服务器)需要最少3个端口,程序占用另外两个用于实现Web端的远程桌面(参考:http://web.rustdesk.com/)。官方文档对于各端口的用途说明比较简略,下表是一个简要的概述。我引入了一个“锚点”的概念,因为针对Rustdesk服务端的自定义端口设置是通过指定锚点再通过-1、+2来产生的,并不是让你自行随意指定五个端口。

端口号 协议 程序 用途 锚点
21115 tcp HBBS NAT类型测试
21116 tcp/udp HBBS TCP 打洞与连接服务/UDP ID注册与心跳服务 HBBS锚点
21117 tcp HBBR 中继服务 HBBR锚点
21118 tcp HBBS WebSocket服务
21119 tcp HBBR WebSocket转发

HBBR、HBBS服务端64位的Windows/Linux的预编译包可以通过GitHub Release进行获取,其余的架构则需要自行clone源码通过cargo进行编译(https://rustdesk.com/docs/zh-cn/dev/build/)。若构建中遇到问题可以在评论区留言,博主可以协助或者完善本文。

GitHub预编译包:https://github.com/rustdesk/rustdesk-server/releases/latest

官方的文档推荐使用PM2来守护进程(https://rustdesk.com/docs/zh-cn/self-host/windows/),但是我感觉为了一个轻量级的远程桌面工具,装一套Node.js的工具有一点不太合适。博主还是推荐通过systemd实现进程的管理、开机自启。

HBBS

解压出来的hbbs文件先通过chmod +x hbbs赋予可执行权限,然后通过喜欢的编辑器编辑/etc/systemd/system/hbbs.service,将用于参考的以下配置根据需要进行修改并保存。

# systemd配置路径
# /etc/systemd/system/hbbs.service

[Unit]
Description=Rust Desk Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
#设置运行路径
WorkingDirectory=/*程序路径*/rustdesk
#可修改锚点端口,当前为21116(锚点)和21115(锚点-1)和21118(锚点+2),-r用于指定网卡IP(适用多网卡)
ExecStart=/*程序路径*/rustdesk/hbbs -r 0.0.0.0 -p 21116

[Install]
WantedBy=multi-user.target

HBBR

解压出来的hbbr文件先通过chmod +x hbbr赋予可执行权限,然后通过喜欢的编辑器编辑/etc/systemd/system/hbbr.service,将用于参考的以下配置根据需要进行修改并保存。

# systemd配置路径
# /etc/systemd/system/hbbr.service

[Unit]
Description=Rust Desk Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
#设置运行路径
WorkingDirectory=/*程序路径*/rustdesk
#可修改锚点端口,当前为21117(锚点)和21119(锚点+2)
ExecStart=/*程序路径*/rustdesk/hbbr -p 21117

[Install]
WantedBy=multi-user.target

为了简化这个流程,你可以将解压出来预编译的hbbrhbbs放于/home/rustdesk文件夹下,直接执行以下两个txt中的内容创建service。.service设置好后,即可通过service hbbs startservice hbbr start来启动这两项服务,启动后可以通过service hbbs status和service hbbr status查看进程的运行状态,显示绿色的Active即无误。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

确认无误随后即可通过systemctl enable hbbssystemctl enable hbbr允许它们开机自启。最后的最后是端口的放行,iptablesfirewalldufw的命令分别如下,其中的端口请按照你的设置的进行放行(默认21115-21117)(需要注意的是hbbs锚点端口必须同时放行tcp+udp)。WEB端由于正在测试加上博主暂时没有这个需求,就没有去尝试,如果你有好的实践欢迎在评论区分享你的经验~

#CentOS firewalld
firewall-cmd --zone=public --add-port=21115/tcp --permanent
firewall-cmd --zone=public --add-port=21116/tcp --permanent
firewall-cmd --zone=public --add-port=21116/udp --permanent
firewall-cmd --zone=public --add-port=21117/tcp --permanent

#Debian/Ubuntu ufw
ufw allow 21115/tcp
ufw allow 21116/tcp
ufw allow 21116/udp
ufw allow 21117/tcp

#iptables
iptables -I INPUT 1 -p tcp --dport 21115 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 21116 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 21116 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 21117 -j ACCEPT
iptables-save //保存(解决重启失效)

四、配置客户端

在新版的服务中,在hbbs/hbbr运行目录下执行cat id_ed25519可以得到用于客户端与服务器认证的私钥。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

在Rustdesk客户端中,找到【ID/中继服务器】选项点进去设置成我们搭建好hbbs/hbbr的服务器(官方文档)。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

这里ID服务器处以【IP:端口】的形式填写服务器服务器IPhbbs锚点端口,第四项Key将上文获取到的id_ed25519填入(中间两项暂无需填写,那是用于多服务器部署所需的选项),保存后即可和Todesk、Teamviewer等一样通过ID+密钥的形式控制其他客户端。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

需要注意的是不论是主控还是被控,都需要设置为同一个ID/中继服务器才能够正常连接。此外,局域网IP直连可以在被控的设置菜单中开启【允许IP直接访问】,然后在主控端连接框输入【被控IP:21116】即可。其他平台更细节的使用可以参考官方文档(点击前往)进行学习和使用。


五、结语

RustDesk无疑是一款优秀的开源远程桌面工具,在这个远程桌面工具反复被商业公司养鱼、割韭菜的背景之下,它可谓是一股清流打破了这样的局面,给我们带来了更多的选择。

【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

当然RustDesk本身仍有许多改进的空间,比如APP连接之后默认让画面适合屏幕的状态更好、扫码功能启动更流畅些、交互UI更友好一些等等。根据同类的软件猜测RustDesk未来可能会有更高效的组件如NVENC、更完备的账户和控制系统等等,也希望RustDesk能够保持开源的初心并找到合适自己的盈利方式,毕竟光用爱发电是不可能的。这里有一个作者接受捐助的网址(https://ko-fi.com/I2I04VU09),有余力可以考虑支持一下作者。

转载请注明:落伍老站长 » 【Rustdesk】在腾讯轻量上自建远程桌面服务替代Todesk

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址