相信所有搞内网穿透的小伙伴,都有一颗热爱工作的心。
最近忽然有了远程办公的需求,苦于单位的电脑没有公网IP,且最近TeamViewer时不时的抽风,因此UP主密集的试用了很多内网穿透工具。除了前面提到的TeamViewer,也用了向日葵、Frp、Ngrok等工具,总是不甚满意。直到发现了ZeroTier,个人感觉还是挺香的。
1 为啥选ZeroTier
先看看UP主对用过几款内网穿透软件的对比:(仅对免费版进行对比,土豪请略过):
软件 | 是否两端都需要安装软件 | 是否需要有公网IP服务器 | 是否支持点对点直连 | 缺点 |
---|---|---|---|---|
Ngrok | 否 | 否* | 否 | 需经第三方服务器转发,速度受限于服务器带宽;免费版第三方服务器域名不定时更换,需经常修改 |
TeamViewer | 是 | 否 | 否 | 需经第三方服务器转发,速度受限于服务器带宽;第三方服务器位于国外,连接不稳定 |
Frp | 否 | 是 | 否 | 需要有一台具有公网IP的服务器,速度受限于服务器带宽 |
向日葵 | 是 | 否 | 否 | 需经第三方服务器转发,速度受限于服务器带宽;免费版限速2Mbps |
ZeroTier | 是 | 否 | 是 | 初次连接需经第三方服务器建立点对点直通路由;第三方服务器位于国外,连接不稳定;存在建立点对点直通路由失败的情况 |
UP主选择ZeroTier,最开始就是看上了它的 点对点的直连。
注:也可自行搭建Ngrok的服务器,此时需要条件及瓶颈类似Frp
2 啥是ZeroTier
ZeroTier is a smart Ethernet switch for planet Earth.
ZeroTier官网对自己的解释已经很透彻了:ZeroTier就是一个全球化的只能以太网交换机。我们知道,交换机是一个L2设备。不同的设备通过网线/无线连接到同一台交换机上,交换机通过MAC地址寻址进而完成节点间的互联。ZeroTier的原理也一样,大致如下:
- 所有的设备在安装软件后,会在操作系统中生成一张虚拟网卡。设备的虚拟网卡通过互联网接到ZeroTier提供的根服务器上(官方称此根服务器为Planet,是一个由12个分布在主要大洲的服务器构成的集群,并号称这样设计以后几乎所有设备到Planet的延迟都不会超过100ms)
- Planet为每一个连接到它的设备分配一个全球唯一的40bit的加密后的地址(类似MAC地址)
- 任意两个节点进行首次连接时,Planet服务器会将两个网络信息发送给对方(官方称为rendezvous messages),指导两个节点建立点对点连接
- 两个节点收到rendezvous message后,会尝试建立点对点连接,如果建立成功后续数据将不再经过Planet转发
由此可见,ZeroTier仅在连接之初需要第三方服务器转发数据,之后的数据直接直通。因此,连接速率不再受限于第三方服务器,可以充分利用家里和单位的带宽。
3 安装ZeroTier
ZeroTier几乎支持所有平台:Windows、MacOS、Linux、IOS、Android,甚至支持群晖、OpenWRT,简直丧心病狂。不过Android平台下需要先安装谷歌服务套件(GMS)。(作为刚换了华为手机的UP主,内心真是B了狗了。)
ZeroTier的安装也很简单,几乎不需要配置,下载对应平台的安装包直接安装就行。网址:https://www.zerotier.com/download/。
安装之后,就可已组建自己的虚拟局域网了。具体步骤如下:
- 注册ZeroTier账号,网址:https://my.zerotier.com/
-
创建网络,并配置IP段
- 在想要互联的设备上,加入该网络ID(以Windows、Linux为例)
-
Windows
- Linux
sudo zerotier-cli join 步骤2中的网络ID
- 返回ZeroTier网站,授权设备接入网络,网址:https://my.zerotier.com/
- 可以根据分配的IP尽心ping测了。下图是ping测的结果。两台设备都是电信的网络。可明显看出时延开始很大,慢慢变小了。
至此,大功告成。设备们就相当于在一个局域网之中了。什么远程桌面啊、ssh啊就可以直接搞起了。UP主这几天用下来,无论时延还是速率表现的都不错。Planet服务器也算稳定(至少比TeamViewer强多了)。当然,如果手头有公网IP的服务器的话,还可以自己搭建根服务器的备份(官方称之为Moon节点)。这样的话,设备间首次建立连接时就不用再大老远跑到ZeroTier的服务器上了。
至于如何搭建Moon节点,且听下回分解吧。。。