本文主要是关于使用ZeroTier创建虚拟局域网来实现免费远程桌面的方案的体验,包含了一些对不同方案的优缺点的描述。
最近因为疫情在家不得不通过远程连接实验室电脑,有两种基本的解决方案:
- 连接学校VPN,然后使用系统自带的远程桌面连接;
- 使用TeamViewer连接。
由于学校VPN的速度太慢,造成远程桌面实在卡顿,因此我一般使用TeamViewer,个人版是免费的,连接速度也尚可。然而可能是白嫖过多的原因,TeamViewer不让我用了,说是检测到商业用途,申诉也无门。因此开始研究其他方案。网上很多人推荐的方案是AnyDesk,但是我这边实测连接非常卡顿,而且画质也差。还有一个国产同类软件是向日葵,我没试过。
后来我找到的较为满意的方案是--ZeroTier. ZeroTier是一个虚拟网络解决方案,我们可以用它来创建一个虚拟局域网,让自己的不同设备都加入到这个虚拟局域网中(免费版最多可添加100台机器),然后就可以用分配的IP来直接用系统自带的远程桌面连接了。
更新:蒲公英也可以创建虚拟局域网,实测效果和ZeroTier类似,但免费版限制的客户端个数较少,本文不再展开。
具体操作步骤如下:
前提:
远程主机支持远程桌面连接(可以使用Windows自带的远程桌面连接或者NoMachine等)
操作:
- 访问ZeroTier官网下载页面,下载并安装对应系统的客户端
2. 创建并登录账户,转到ZeroTier Central中创建网络
在网页中点击"Create a Network"就可以创建一个新网络,得到ID。
3. 在两台主机上打开ZeroTier One客户端,将ID输入到客户端中,加入网络
以Windows为例,在任务栏托盘图标右击,选择"Join Network",在弹出的对话框中输入上一步获取的网络ID即可。
操作完成后,上面第一张图对应位置会出现网络ID,前方打勾就代表加入该网络。
4. 在网页端允许主机加入网络,查看分配给主机的IP
在网页端点击刚刚创建的网络ID,就可以进入管理界面。找到Members一栏,把对应主机前打勾就行了。"Managed IP"就是分配的局域网IP。其他地方都可以不修改。
5. 使用IP进行远程桌面连接
以Windows为例,打开自带的“远程桌面连接”,输入局域网IP即可连接,按照要求输入用户名密码即可。
实测通过这种方式连接的响应速度和画质均优于TeamViewer。主要原因应该是在可能的情况下,ZeroTier会建立P2P的连接,两台机器直接相连的速度当然快了。但是使用TeamViewer传输文件操作会比较简便,可以直接拖动。不过有了局域网之后挂载远程硬盘或者通过SFTP, SCP之类传输文件也很简单了,推荐使用XShell和XFTP.
与VPN的解决方案相比,ZeroTier不仅速度快很多,而且由于创建了一个虚拟网卡,因此普通的网络连接不会受到影响,不像使用VPN之后所有流量都要发送到学校,使得上网速度明显变慢。
此外,ZeroTier可以配置Moon节点作为中转来加速访问,如果发现连接速度不快的话可以试试。
在使用中还发现一个问题,使用Windows自带的远程桌面软件进行连接,有时会出现整个远程桌面突然卡住不动的情况,或许是因为网络本身不够稳定。于是便想着换个软件。经过一番尝试之后发现,微软商店里的UWP版的远程桌面就没有这个问题。但还有一个小问题是,UWP版远程桌面在文本编辑模式下的鼠标颜色有问题导致对比度太低看不清,所以我手动调节了光标颜色就好了。在知乎上有看到人推荐mRemoteNG,但是我实际用起来发现它主要是一个远程桌面管理软件,对于多窗口之类的支持较好,但是连接的时候仍然是调用了系统自带的远程桌面。此外,还有人推荐NoMachine来进行连接,据说速度非常快,不过是需要额外安装软件的。然而我自己试了之后不知为何连接总是黑屏,我也没啥耐心去仔细研究,就暂且作罢了。
总结一下,在网络条件合适的情况下,ZeroTier的P2P连接使得远程桌面体验较佳,不管是速度还是画质。而且正常使用也是完全免费的,用来连接自己的远程主机还是很舒服的。虽然略微比使用TeamViewer麻烦一点,但是也值得一试。当然,ZeroTier能做到的事不仅于此,有了虚拟局域网之后就能做各种在局域网中能做的事,不过这就不是本文的范畴了。