如果想要在公网上玩一些局域网才能玩的游戏,或者是想要在其他的电脑或者手机上访问家里主机的服务,且不想把服务通过路由器公开在公网上,那么就可以使用ZeroTier进行配置,首先需要在Zerotier官网注册账户。
点击Create a network按钮,创建一个新的局域网络。
在局域网中,可以配置非常多的选项,例如IP段、是否可以被设备加入,主要设置就是在最上面,可以选择是否可以公开可以被直接加入,或者是每加入一个设备必须要允许(在下方的设备列表里面进行设置)
设备列表可以看当前设备的状态以及IP等信息。
设备需要接入到zerotier中,只需要进行软件的安装,在安装完成后,点击加入网络,输入一开始网络生成的那一串字符串,就可以加入到同一个局域网中。
需要注意的是,zerotier服务是运行在海外的服务器中,如果需要玩游戏或者是NAS服务这种比较吃带宽的服务可能出现网络延迟过高或者网速过慢的情况。
这时如果有一台云服务器可以创建为Moon节点,来是的连接不通过远程的服务而直接连接这台服务器,在Linux中进行服务的安装,如下代码所示。
curl -s https://install.zerotier.com | sudo bash
然后使用命令进行加入网络,需要注意的是,这里如果不是root用户可能出现没有权限的问题,使用sudo运行,或者切换到root
zerotier-cli join xxxxxxxxxxxxxxxx
加入网络后,可以在管理页面上看到这台服务器。接下来配置这台服务器为节点,首先需要开放这个服务器的9993端口,需要注意的地方是这个开发类型必须是UDP而不是TCP,一般Linux服务器我都会关闭本机的防火墙,而使用云服务器中的安全组服务,反正这里都需要开放。
接下来进入到zerotier-one文件夹,使用cd命令,默认安装的位置在。
cd /var/lib/zerotier-one/
生成一个moon.json的配置,如下代码所示。
zerotier-idtool initmoon identity.public > moon.json
moon.json中需要进行stableEndpoints的配置编写,这里需要使用英文""来包裹,使用IP/9993来指定端口,默认也是9993。
执行下方的代码,生成.moon文件。
zerotier-idtool genmoon moon.json
此时会自动生成一个以00000开头的moon文件,是编译后的配置文件,创建一个moons.d文件夹放入这个文件。
mkdir moons.d
cp 000000xxxx.moon moons.d/
重启服务systemctl restart zerotier-one
然后到需要连接的服务器中,使用下方的命令可以进行配置。
zerotier-cli orbit address(这里是管理后台的那一串字符串address)address(这里是管理后台的那一串字符串address)
或者可以下载这个编译后的moons.d文件夹到另一台客户端中,支持windows和Linux,然后应当使用下方命令可以看到moon模板。(windows需要使用管理员运行cmd)
docker exec zerotier-one zerotier-cli listpeers
加入后可以减少延迟,并且并不会吃这台云服务器的外网流量。
如果安卓手机需要加入网络,无法加入moon节点,可以参照这个项目