远控方案
远控方案
上学/出差在外,总有远程控制电脑的需求。我折腾过一些,将经验写于此处。
我的刚需:Android 控制电脑;P2P 低延迟。
一体化方案
这里主要是企业级一体化的解决方案,一个方案包揽了全平台的服务端与客户端,并且不需要涉及公网等,一般具有容易上手的 GUI。
向日葵远程控制
老牌远程控制软件了,以前我用了很久。其拥有优秀的客户端界面交互和无人值守。可惜的是免费版流量会经过官方服务器,无法做到 P2P,延迟还是比较高的。
Parsec
也是之前我很喜欢的远控软件,用来 Android 控制 Windows 非常好用。它主打 P2P 的低延迟。与向日葵相比:
- 优点:
- 低延迟
- 性能占用极低
- 缺点:
- 全英文
- 需要自己解决驱动兼容性问题(如果有的话)
- 手机端控制电脑不够友好(无法右击;无法像向日葵一样调出鼠标),建议自带轻便键鼠
- 早期版本可能会有音频撕裂问题
不过后来 Parsec 进行了商业化,现在我在 Windows 上甚至一直无法登录(重装系统后也不行,所以是服务端问题),显示连接到 /v2/auth
啥啥啥的超时,所以只能尝试其他的远控方案。
RustDesk
一个开源的服务端/客户端软件,需要自己用服务器搭建。本质上还是需要让流量走中转服务器,延迟与丢包取决于中转的质量。
我从不买国内服务器,于是否决了。而且即使这玩意是 Rust 写的,它也有爆出过安全漏洞。
ToDesk
跟向日葵差不多,都是中心化连接。UI 会好看一点,但是我感觉没有向日葵好用。
TeamViewer
很早之前试过一次,感觉难用,不用了。这玩意国外用得应该更广泛一些。
分离式方案
由于企业级一体化方案基本没有 P2P(有也不能用),因此我将重心放到了分离式方案上。分离式指用户需要自己部署客户端、服务端、内网穿透等模块,具有复杂与高度自定义化的特点。
内网穿透
分离式方案要想实现 P2P,关键就在内网穿透这一步。如果我们使用支持 P2P 的虚拟组网内网穿透,就可以享受低延迟的快感。
皎月连
是一个国内的免费内网穿透服务,支持 P2P 和虚拟组网。一般国内教程里都跟 sunshine + moonlight 配套出现。试了一下还行。
- 在受控端上安装皎月连,建立帐号并登录;然后在服务端里开启组网模式,开启服务并设为自动开启。最后再让系统开机自启皎月连即可。
- 在控制端安装皎月连,使用已有帐号登录,然后选中网络,连接即可。
VNC
VNC 也是 Linux 乃至许多系统上的成熟远控方案。严格来说这是一套协议,服务端和客户端都可以任选。
VNC 的缺点是传输的是屏幕图像的变化部分而不是视频流,因此不支持修改码率,可能会对带宽造成压力。
sunshine + moonlight
这是一个广泛使用的游戏串流方案,也可以用到远控上。其中 sunshine 是被控端,moonlight 是主控端。二者之间还需要一个虚拟组网的内网穿透进行连接。(需要虚拟组网的原因是,sunshine 用了很多端口,写映射的话比较麻烦)
- sunshine 安装可以用 scoop (extras bucket):
scoop install sunshine
。- 安装完后,记得在安装目录下 scripts 里以管理员权限执行 install-service.bat, autostart-service.bat 等脚本,以便开机自启。
- 打开网页面板,设置里可以改中文语言,然后要在 Network 里把 UPnP 打开。
- moonlight 官方 APP 并不好用,例如无法发送特殊按键。所以这里建议使用第三方 fork,对键盘有增强。
- 打开 APP,点击右上角加号,将组网里的受控端 IP 填写进去即可。
- 实际上也可以将特殊按键的职责交给输入法,使用例如 Unexpected Keyboard 可以比较轻松地发送特殊键。
- 官方 APP 是拖动指针鼠标,第三方是触摸鼠标,但是我两种鼠标都要用,而它们并没有一个切换鼠标样式的选项。因此我是不满意的。