ZeroTier是远程组建局域网的利器
优点是P2P穿透模式速度快不会过度依赖中继服务器
在4G网络这种无法打洞的情况下可以自动切换到自建的中继服务器来中继流量

由于是在局域网中,使用内网IP所有的应用都可以使用,适用面更广。
比如TeamViewer现在频繁提示商业用途,但使用局域网不通过TV服务器的远程是不受限制无限使用的,而ZeroTier可以跨设备跨网络跨地域组建局域网,利用这一点我们就可以自由的使用TV的局域网模式来远程控制设备,而不会出现商业用途提示,你可以在你想控制的多台设备上安装ZeroTier和TV通过加入同一个局域网来相互远程控制,为了保证联通性,有条件建议尽量搭建一个中继服务器,其他的内网穿透比如FRP、NPS这些就要麻烦的多,一个中继服务器用来支持多个设备也比较麻烦,而且ZeroTier还不只是可以配合TV远程协助,它构建了一个真实的局域网,平常局域网能做的它都能做到。

当然你也可以使用微软自带的远程桌面,我使用TV主要是跨平台,可以macOS控制Windows也可以反之,很灵活,另外一点就是在ZeroTier万一临时连不上或者自建的中继服务器有问题,我们还可以使用TV自带的远程来控制设备,而日常我们就使用ZeroTier构建的局域网模式,使用内网IP来使用TV有问题时我们使用TV自带的远程控制功能,偶尔使用并不会提示商业用途,所以使用TV不仅日常可以通过局域网使用,还有了个备用的远程控制功能,一举二得。

另外就是ZeroTier不像VPN会影响本身的网络,正常VPN是全局模式,会导致日常上网变慢,而ZeroTier只是局域网的部分互通,正常上网不受影响,需要用到ZeroTier的地方使用局域网的IP就可以了,比如局域网游戏,然后就是ZeroTier在家庭宽带这种网络中基本都可以成功打洞,不依赖中继服务器,延迟低速度也基本能跑满带宽,设置中继服务器主要是用于4G或特殊网络环境无法打洞的情况下使用的。



好了,目的和优势阐述完了,下面说说具体操作,首先注册一个ZeroTier账号,进入网站 https://my.zerotier.com 注册验证邮箱就可以了,进入网络设置里面创建一个新网络,自定义下名字然后把网段设置为 192.168.192.* 这个好记一点,其他的都行,别的就没啥设置的了。



接下来部署一个中继服务器,我使用的是阿里云的特惠机,一百多一年上海地区的5M带宽1T流量,价格便宜又实惠,特别适合干这个,而且只占用一个端口,弄好之后机器还可以用在其他地方。
服务器我用的是CentOS 7首先安装ZeroTier一个命令搞定。

curl -s https://install.zerotier.com/ | sudo bash

脚本会把程序自动安装在下面的目录,我们需要进去操作一波。

cd /var/lib/zerotier-one

接着用下面命令把ID文件转换成可以修改的JSON文件

sudo zerotier-idtool initmoon identity.public > moon.json

上面命令整完了/var/lib/zerotier-one/ 目录下面就会出现一个moon.json文件,打开编辑一下。
把这一段修改成下面那样 "stableEndpoints": []
"stableEndpoints": [ "服务器的公网IP/9993" ]

弄好了之后保存,接着用下面的命令生成moon文件,如果客户端要在打洞失败后使用中继服务器,就需要用到这个文件。

sudo zerotier-idtool genmoon moon.json 

完了之后 /var/lib/zerotier-one 目录下就会有一个类似 00000018fasd2319.moon 这样的文件
先把这个文件下载下来保存一份 然后在 /var/lib/zerotier-one/ 目录里新建个名为 moons.d 的文件夹
然后把 00000018fasd2319.moon 文件移动到 moons.d 文件夹里

然后重启下ZeroTier

service zerotier-one restart

这样中继服务器就部署好了,不要忘了打开防火墙9993端口 tcp udp 都要打开。
这玩意是开机自启的,不用担心启动的问题。



中继服务器弄好了,接着就是客户端了,到官网下载对应客户端,下面是下载链接,这里介绍Windows和macOS的操作方法,其他的平台暂时没弄大家自行测试吧。
https://www.zerotier.com/download/

首先Windows下载好之后安装好,开始菜单里面有快捷方式图标,桌面好像没有,这玩意是英文的客户端,没有汉化,不过很简单没啥设置的,打开了之后右键点击里面的 Join Network 就是加入网络,加入的当然是你创建的那个网络,然后把在ZeroTier网站上创建的网络ID填进去,Network ID 就是十几位的字母数字的那个,然后点 Join 等一会就会提示有新网络加入,确定下就行了。

然后需要登录ZeroTier网站进入网络管理那里,往下翻 Members 这一块里面就会出现一个新客户端,在扳手左边打勾那里勾选一下就是允许加入的意思,因为私有网络都是需要授权才能访问内网的,所以即使别人知道你的ID也需要你的授权才能加入,自己要添加新的设备也是这样,先在客户端中加入,然后在网站上允许加入。

这时候再点任务栏图标右键,就可以看到那个ID了,ID后面就是自己自定义的Name也就是昵称。

为了让客户端在打洞失败时可以使用中继服务器,我们需要把服务器生成的moon文件搞进去。

打开服务程序 services.msc 找到服务 ZeroTier One 并且在属性内找到该服务可执行文件路径,我的环境下为 C:\ProgramData\ZeroTier\One\zerotier-one_x64.exe 打开该文件夹,在其目录下新建个 moons.d 文件夹,然后将服务器下生成的 000xxxx.moon 文件拷贝到此文件夹内,操作跟服务器上一样,然后重启下服务,注意此处重启的是该项服务,不是电脑右下角的图标程序,先点停止再点启动,然后右键任务栏的ZeroTier图标,点击 Preferences 也就是设置,把里面的 Launch ZeroTier on startup 勾选上,然后点OK保存,这个是设置开机自启,弄好了之后重启下电脑。

由于设置了开机自启,开机之后应该就自动连接上了,接下来我们验证下我们添加的中继服务器有没有生效,先在桌面创建个cmd的快捷方式,然后用管理员权限打开cmd命令,进入上一步操作moon文件的那个目录,一般是 C:\ProgramData\ZeroTier\One 这个。

cd C:\ProgramData\ZeroTier\One

输入命令

zerotier-cli listpeers

看输出应该是下面这样的就对了

200 listpeers e4282620cq xx.xx.xx.xx/9993;314;264 51 1.4.2 MOON

xxxx 是中继服务器的IP,还有后面的那个MOON都对的上就说明没问题。
右键任务栏图标点击 Show Network 就可以看到分配的内网IP了,后期需要连接远程啥的就用这个IP就行了。

好了,Windows弄好了已经加入到我们创建的私有局域网中了,但一个电脑也玩不转不是,如果另一台电脑也是Windows那么重复上面的操作即可,每台设备都会分配不同的IP到时候根据需要连接就行了。



由于个人主要使用macOS系统,所以macOS也需要设置一下,大体操作基本一致,下面是详细说明。
首先下载macOS版客户端
https://www.zerotier.com/download/

下载安装好之后打开点图标里的 Join Network 加入网络,输入 Network ID 然后去ZeroTier网站上授权加入。
同样为了让客户端在打洞失败时可以使用中继服务器,我们需要把服务器生成的moon文件搞进去。
macOS打开访达,前往文件夹 /Library/Application Support/ZeroTier/One 进这个目录。
在其目录下新建个 moons.d 文件夹,然后将服务器下生成的 000xxxx.moon 文件拷贝到此文件夹内,然后重启电脑。

开机后打开 ZeroTier 然后打开终端来验证下和中继服务器的对接是否配置对了。
在终端里进入 ZeroTier 程序目录

cd /Library/Application Support/ZeroTier/One

输入命令查看

zerotier-cli listpeers

看输出应该是下面这样的就对了

200 listpeers e4282620cq xx.xx.xx.xx/9993;314;264 51 1.4.2 MOON

xxxx 是中继服务器的IP,还有后面的那个MOON都对的上就说明没问题。

点下ZeroTier图标打开 Network Details 就可以看到本机分配的IP



至此客户端和中继服务器都弄好了,可以测试一下了,在你当前设备上ping一下另一个设备的局域网IP,如果你家的电脑都在一起ping应该是很快的,这时候你可以断开一个有线网络,然后连上手机4G热点,由于4G打洞基本都不行,所以这个就是测试中继服务器是否工作。

当你网络环境变化之后,ZeroTier好像不是无缝切换的,所以建议在更换网络前,点下程序里已经连接的那个网络,点一下是关,再点一下是开,看前面的对勾状态,我们可以在切换网络前把ZeroTier当前连接的局域网断开,网络切换好后,再勾选一下把局域网连接上,等十多秒基本就连接上了,这样切换会快很多很少出问题。

等它显示出昵称就说明连上了,如果不行把软件退出重新打开下,有时候会比较困难多试几次就行了,一旦连接上之后就很稳定了,基本不会有问题,4G网络下也连接好之后,再ping下另一个设备的IP这时候延迟应该会高一些,因为经过了中继服务器的中转,具体延迟要看你的网络和中继服务器的网络了,我用阿里云上海的机器,4G信号三格不满,延迟八九十这样,不过远程一点不卡,用起来很舒服,ping通的话就说明没问题了,可以畅快的开用了。



然后ZeroTier这部分就完了,下面给大家介绍下配合TeamViewer的用法,刚开始也有提到,TV通过内网IP连接是没有任何限制的,因为你不走它的服务器,它也就不管你,得益于ZeroTier构建的局域网,即使不在一个地方,你也可以通过局域网连接IP的方式使用TV而不会有任何限制,要远程的设备上先安装最新版的TV你也不用去搞什么破解版了,直接官网下载最新版的,然后打开设置,常规里面有个呼入的LAN连接这个就是局域网连接,改成接受,不要选仅接受,就接受就行了,然后你可以设置个无人值守密码,不设置就用随机生成的密码,然后ZeroTier都连接好,需要控制的这边TV伙伴ID那里直接输入IP地址,192.168.192.xx 这种然后连接输入设置的密码就行了,享受吧,爽的很。

上面呼入的LAN连接不设置成仅接受就是为了让局域网和外网都可以连接的意思,仅接受就是纯局域网了,保留TV自带的远程功能可以在ZeroTier出问题或者中继服务器出问题时使用TV本身的网络来临时远程,而不至于控制不了,然后日常用局域网连接,有问题用TV自带的网络连接,这样你很少用TV的网络,它也就不会说你商业用途了,买个便宜的国内服务器1M带宽就够了,腾讯云、阿里云、华为云都有特价机,搞一个ZeroTier中继服务器就是了,正版TV一个月一百四十多,这钱不就省下来了嘛,当然这种方法适合长期管理大量固定的机器,如果你经常为不同的人临时远程协助,每个人都装个ZeroTier就太麻烦了。

不过我发现了另一个服务,可以方便的为不同的人提供临时远程协助,这玩意就是 http://gotohttp.com/ 国人开发的,需要远程的人下载个客户端,不需要注册打开即用,然后我们在网页上输入ID密码就可以html5远程了,有点类似VPS主机的VNC这家是国内阿里云中转的速度可以,国外也还还行,这货我本来打算长期用的,但发现有时候连接不稳定,屏幕是黑的,所以我一直想解决远程这个痛点问题,所以研究了一段时间才有了这篇文章,而且它是收费的,不过是先用后收费,同一台机器远程到100分钟才会强制收费,100分钟一块钱,所以我说它特别适合协助不同的人临时远程使用,第一次连接成功率基本百分百,用起来简单,浏览器即可控制还不需要下载软件,100分钟也够解决短期问题了。



就这样我使用ZeroTier配合TeamViewer加一台用来中继的国内VPS就实现了管理自己不同的机器或者服务器,用起来方便便宜,对外我使用GotoHTTP为客户提供短时间临时性面向不同人的远程协助,然后就是得益于ZeroTier构建的局域网,我准备在家里的电脑上弄个云存储,这样我可以无缝的访问各种文件,比VPN方便简单,而且服务器只占用了一个端口,服务器还可以用来做其他用途充分利用。

基本就是这样,这篇文章应该是干货满满了,希望能帮到你,如果你不会设置部署的话也可以联系老伙计,我们可以提供有偿协助,联系方式请进入 联系 页面查看。