Zerotier之因特网上的局域网

Zerotier的基本概念

Zerotier实际上是借助因特网实现的任意联网设备在任何网络下相互互联的一个解决方案,Zerotier需要借助一个有公网IP的主机实现,基本原理是需要互联的设备分别向公网主机发送连接请求,公网主机向设备分别传送连接的必要信息,然后设备可以通过这些信息直接互联(实现洞穿),或者继续使用主机进行中转流量。

Zerotier默认有一个planet服务器,可以直接注册使用,但是这个服务器在国外,一旦受网络类型限制无法实现P2P的打洞,那么默认走国外的服务器速度会非常慢。为了避免这种情况,一般国内还是建议自己架设行星服务器,这样可以很好的保证使用体验。

行星服务器

Zerotier里面有这么几个概念:

  1. Planet行星服务器:这个实际是Zerotier-One网络的一个根服务器,所有的网络解析都会经过这个服务器
  2. Moon中转:这个实际是一个中转服务器,它可以实现网络流量的转发,Moon中转服务器也需要依赖Planet服务器获取网络配置信息,所以单纯的架设Moon服务器并不能完全避免国外网络不稳定的问题。

鉴于上述的几种问题,我们还是需要自己搭设Planet服务器实现网络的可靠和稳定。

刚好我手头也有一台腾讯云服务器,可以用来搭建这个行星服务器,实现的搭建过程非常简单,直接运行如下的命令就可以了:

git clone https://gitee.com/Jonnyan404/zerotier-planet
cd zerotier-planet
# 这里先修改docker-compose.yml里的MYADDR为自己的IP,然后密码ZTNCUI_PASSWD可以改一下
docker-compose up -d
docker cp mkmoonworld-x86_64 ztncui:/tmp
docker cp patch.sh ztncui:/tmp
docker exec -it ztncui bash /tmp/patch.sh
docker restart ztncui

ztncui实际是一个zerotier开源的前端管理界面工具,可以通过网页实现对zetotier网络的管理,这里安装的时候记得需要修改IP地址和初始和管理密码,安装完成之后系统默认侦听4000端口,可以通过nginx反向代理到443端口并通过cerbot更新https证书,实现https协议的访问。搭建完成之后就可以创建自己的网络了。

直接点击add network,输入网络名称创建网络,然后通过easy setup创建网络IP地址分配池,点击创建之后就完成了网络的创建。

创建完网络之后通过3180端口下载planet和moon文件,保存这两个文件备用。

客户端安装

虽然我们是自己架设的行星服务器,不过客户端软件和官网的软件还是一样的,所以我们可以直接安装使用官网上的客户端软件。不过因为我们是自己定义的planet服务器,所以还是需要替换一下安装后的planet文件。

官网客户端下载链接:

Download - ZeroTier

Linux下安装

Linux下可以直接通过包管理器安装:

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

官方客户端还支持各种NAS和其它Linux,详细的安装方法可以参考官网安装指南。

这里仅介绍Debian上的安装方式,因为我个人用这个版本比较多,用上述方式安装完软件之后还要进行planet文件的替换,将之前下载的planet文件拷贝到 /var/lib/zerotier-one 下替换原有的planet文件,然后通过如下命令重启相应的服务:

sudo service zerotier-one restart

重启服务之后就可以通过如下的命令加入相应的网络:

sudo zerotier-cli join Net_id_xxxx

注意zerotier-cli命令并没有加入到系统环境变量中,所以还是要在/var/lib/zerotier-one目录中执行上述命令,执行成功之后就可以在网页管理页面看到这个客户端的请求,为客户端命名之后,允许加入之后这个客户端就联网成功了。网页上也可以查询客户端对应的IP地址。

Windows安装

ZeroTier One.msi

Windows可以直接安装官网的客户端软件,安装完成之后到如下的路径修改planet文件

C:ProgramDataZeroTierOne

这个ProgramData文件夹是一个隐藏文件,直接在地址栏输入这个路径即可。

替换文件之后需要重启对应的服务,可以直接在开始菜单输入“服务“找到服务管理工具,然后重启服务即可。

27323-8n72wkkzg2h.png

重启之后可以重新打开zeroTier客户端,然后在任务栏图标上右键加入网络,填写ID即可。

MacOs安装

MacOs上也是直接安装官网的客户端:

ZeroTier One.pkg

安装完之后到 /Library/Application Support/ZeroTier下替换planet文件,替换文件之后通过如下命令重启zerotier服务:

sudo launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist
sudo launchctl load /Library/LaunchDaemons/com.zerotier.one.plist

重启服务之后就可以在客户端上直接加入我们的网络了。

总结

ZeroTier的优点是可以实现任何联网设备的异地组网,并且有些情况下还可以实现P2P的直接数据传输非常简单易用,组网之后所有端口都可直接使用,不必像一些转发软件一样需要为每个转发端口单独配置,实现真正类似局域网的使用体验。

并且每个设备的IP地址都可以在网页端直接查看,开机可以实现自动的网络配置,是一个非常方便的组网软件,试用之后到现在我都一直在使用,使用体验上还是非常不错的。


本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

相关文章

发表新评论