ZeroTier是一款适用于智能可编程以太网交换机。它允许所有联网设备、虚拟机、容器和应用程序进行通信,就好像它们都驻留在同一个物理数据中心或云区域中一样。Zerotier采用VLAN(虚拟局域网)技术将不同设备连接到一个虚拟的局域网中,从而让这些设备随时随地都可以互相访问。
Zerotier是一个加密的虚拟主干网,允许多台机器像在一个网络上一样通信。Zerotier的核心方案是使用UDP打洞,无论两台设备是否在一个内网中,只要这两个局域网的NAT方式达到了打洞的要求,就可以进行打洞,建立一条通信隧道,使得不同设备之间可以互相访问。
使用Zerotier作为内网穿透工具,好处是个人用户使用基本免费,还可以创建多个局域网段。使用Zerotier十分简单,只要下载各个平台的客户端就行,包括iOS,常用的软路由与群晖也有可视化客户端。当然,直接使用免费版本的Zerotier,也存在不少缺点,在打洞失败的情况下,所有的流量都会通过Zerotier的公共服务器进行数据中转,使用海外服务器直连,延迟很高,基本上无法正常使用。自建Zerotier Moon可以解决中转服务器的问题,当然,在网络情况较好的情况下,是不需要自建Moon服务器的,因为每次打洞都会成功,Moon服务器不会被访问到。
可以在Zerotier官网创建账号,并创建一个虚拟网络,保存好NetworkID,各个平台的客户端可以在Zerotier Download处下载,并通过NetworkID加入到虚拟网络中。(需要在Zerotier管理页面勾选auth加入设备)
curl -s https://install.zerotier.com | sudo bash脚本安装Zerotier,然后通过zerotier-cli join <NetworkID>加入虚拟网络。相较于Tailscale,WireGuard,nps等内网穿透工具可以看到,Zerotier的使用非常简单,只需要下载客户端,输入NetworkID就可以加入到虚拟网络中,不需要进行任何配置,确实算是一款非常简单易用的内网穿透工具。
Zerotier Moon是Zerotier的一个子项目,可以用来加速Zerotier的内网穿透,可以将Zerotier的中转服务器替换为自建的Moon服务器,从而提高Zerotier的内网穿透速度,让虚拟网络更稳定的运行。
bash#安装Zerotier
curl -s https://install.zerotier.com | sudo bash
#加入虚拟网络
zerotier-cli join <NetworkID>
进入Zerotier所在的目录,默认为/var/lib/zerotier-one。
bash#生成moon.json配置文件
zerotier-idtool initmoon identity.public >> moon.json
#修改moon.json文件中的stableEndpoints,替换为服务器的公网IP地址
#生成.moon文件
zerotier-idtool genmoon moon.json
#将生成的.moon文件移动到moons.d目录
mkdir moons.d
mv <xxx.moon> moons.d
#重启Zerotier服务
systemctl restart zerotier-one
zerotier-cli.bat orbit <MoonID> <MoonID>指定Moon服务器,其中MoonID为Moon服务器的ID,可以通过zerotier-cli listmoons查看。通过zerotier-cli.bat listpeers可以查看节点的状态。zerotier-cli orbit <MoonID> <MoonID>指定Moon服务器,通过zerotier-cli listpeers可以查看节点的状态。使用Zerotier Moon为内网穿透加速