Windows 和 Ubuntu 远程桌面连接方案
2024-1-19|2024-9-7
D_SUPER
type
Post
status
Published
date
Jan 19, 2024
slug
remote_desk_protoco
summary
商用软件提供的远程桌面连接免费版,往往限制众多。远距离、复杂网络条件下,效果很差。使用 Rustdesk 或者系统内的 RDP,可以显著提升远程桌面的可用性和稳定性。
category
技术分享
tags
好用软件
icon
Windows 和 Ubuntu 是两个常用的图形化界面系统。市面上的远程连接软件有向日葵、Teamviewer、Anydesk、VNC Server & VNC Viewer 等等,这些软件都能在 Windows 和 Ubuntu 上运行,提供跨系统的连接。其中除了 Anydesk 外的软件我都使用过。向日葵境内连接效果不错,但是免费版不能跨国连接设备。Teamviewer 容易被判为商用,反复折腾。VNC Server & VNC Viewer 软件限制少,但服务器似乎是在境外,连接较为卡顿。总的来说,在免费条件下它们连接的稳定性往往不足,画面卡顿、延迟高。而开源的 Rustdesk 可以自己部署服务器,因此有优化连接的空间,比较前述方案更推荐使用。
另一方面,RDP 连接效果稳定。使用 Windows 远程操作 Windows 系统,自带的远程桌面连接软件十分好用(尤其是 Win10 及以上系统)。同时,在设置好 Ubuntu 的远程控制后, Windows 也可以使用远程桌面软件连接 Ubuntu 桌面。而在 Ubuntu 中使用 Remmina 可以远程连接 Windows 桌面(Win10 使用过),跨国连接的效果都还不错。
RDP 连接需要解决目标设备的公网 IP 问题。现在国内部分设备直接分配到 iPv6,因此可以直接通过 iPv6 连接,但是这又要求当前使用的设备要有 iPv6 访问能力。如果目标设备没有公网则需要利用 FRP 等方法,进行转发。因此,根据目标设备网络条件有如下情形:
目标设备网络条件 | 公网 iPv4 | 公网 iPv6 |
1 | 有 | - |
2 | 无 | 有 |
3 | 无 | 无 |
其中情形1可以直接使用公网 IP 进行 RDP 连接;情形2在当前设备有 iPv6 访问能力时可以使用 iPv6 地址进行 RDP 连接,否则与情形3相同;情形3则需要设置网络转发。
有如下三种远程桌面连接方案(以目标设备 Win10 系统为例):
部署 Rustdesk
- 设置中转服务器(或者使用 Rustdesk 免费服务器)。推荐 Docker 部署,注意:
- TCP(21115, 21116, 21117, 21118, 21119)
- UDP(21116)
开放端口:
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)支持,对应端口可以不开。
使用以下命令,获得通讯的
Key
: sudo docker exec -it hbbs bash cat ./id_ed25519.pub
自建服务器官方教程:地址
- 在目标设备和当前设备安装 Rustdesk,并填入(设置中转服务器后)中转服务器
ip:端口
和通讯的Key
。 [Ubuntu 安装 Rustdesk 教程]
此方法只要一个有公网 IP 的中转服务器,目标设备和当前设备可以通过中转服务器连接,或者打洞直连,连接效果不错。能解决全部的情形1~3问题。
设置 FRP 端口转发
对于目标设备没有公网 IP,或者有 iPv6 但是当前设备不支持 iPv6 连接的,使用 FRP 连接。FRP 可以自建,也可以使用免费线路。推荐一个 Frp内网穿透联盟(China Frp Union):内网穿透.中国。我使用过 SakuraFrp, StarryFrp, LocyanFrp, MossFrp, OpenFrp 等(SakuraFrp 签到给的流量不多,StarryFrp 游戏连接稳定,LocyanFrp 给的流量是真的多!)。
在目标设备中启动 FRP 后,在当前设备的远程桌面连接软件或者 Remmina 种填入 FRP 的服务器地址和端口号,使用账号即可连接。
此方案能解决全部的情形1~3问题,连接速度与穿透节点相关,需要目标设备能稳定运行 FRP。 Windows 可以使用内网穿透提供商的客户端或者 NSSM 后台运行,Ubuntu 可以使用
Systemctl
。设置 iPv6 转发
对于目标设备有公网 iPv6,但是当前设备不支持 iPv6 连接的情形(情形2),可以使用一台公网双栈 VPS 设置转发。使用 X-UI 的
dokodemo-door
模式,实现:当前设备 - iPv4 - > 双栈 VPS - iPv6 - > 目标设备
这个过程。X-UI 推荐使用 FranzKafkaYu 魔改版,一键安装脚本:
FranzKafkaYu 魔改版 bash <(curl -Ls https://raw.githubusercontent.com/FranzKafkaYu/x-ui/master/install.sh) 国内 VPS 使用 bash <(curl -Ls https://raw.gh.fakev.cn/FranzKafkaYu/x-ui/main/install.sh)
总结
以上就是我近期远程工作的解决方案。可能是当前设备 Ubuntu 电脑太老了,使用 Rustdesk 偶尔会引起死机,我才又开始琢磨后两种方法(还可以使用 Cloudflare Tunnel 不过感觉速度肯定不会快)。日常使用采用最后一种方案(东京中转),或者 iPv6 直连;Rustdesk 用来偶尔处理连接异常。总的来说比较稳定,北美到中国大陆的连接没有明显卡顿。
推荐阅读
有关远程连接的配置或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- Twikoo
- Waline
- Cusdis