概要
由于Zerotier服务器在国外,导致在国内的速度不快,所以官方推荐设置自己的moon服务器做节点加速。moon服务器需要24小时不挂机,并且有固定ip,对硬件要求不高,所以云服务器比较符合做moon服务器
技术细节
第一步:在云服务器linux上安装Zerotier客户端:
curl -s https://install.zerotier.com/ | sudo bash
默认监听的端口是9993,这个端口需要对外提供服务,需要在服务器防火墙和云服务提供商的安全组的UDP传输类型进行设置放行。
安装完成后,输入命令检查是否安装成功:
zerotier-cli info
代表已经安装成功。
第二步:进入zerotier官网创建一个虚拟网络:
访问官网:https://my.zerotier.com,注册登录之后,点击Create A Network按钮创建一个虚拟网络
当看到记录产生的时候,代表已经创建成功。点击创建成功的NETWORKID,会进入到网络参数配置详情页:
↑ 可以对Name进行修改方便日后识别
↑ 尽量创建一个私有的网络,这样相对安全一些,需要管理员手动通过才能加入到该网络。
↑ 选择一个虚拟网络网段,为了好记,我选择了192.168.192.*这个网段。
第三步:把云服务器linux加入虚拟网络:
输入命令加入网络:
zerotier-cli join [network_ID]
↑ 反馈join ok代表加入成功。
↑ 回到官网网络详情页,页面下方会发现一条记录,通过观察Address发现正是云服务器申请加入。点击Auth通过,即可加入此虚拟网络。
↑ 点击通过后,过几秒钟(不需要刷新页面)会发现,系统为云服务器分配了ip 185,可以在short-name文本框中为这台机器起一个名字方便识别。
回到linux中,输入命令观察是否加入成功:
zerotier-cli listnetworks
↑ 从反馈的描述中得知已加入成功。
输入ifconfig观察ip:
↑ zerotier已为系统生成了虚拟网卡,ip也没问题。
第四步:配置Moon
进入zerotier-one程序目录:
cd /var/lib/zerotier-one
生成moon配置文件:
zerotier-idtool initmoon identity.public >> moon.json
运行后moon.json就生成出来了,通过cat命令观察moon.json文件:
需要编辑红框位置的配置节点stableEndpoints,指定为当前云服务器的外网ip与监听端口号
↑ 需要注意ip与端口号直接用/分割,而不是:
生成.moon文件:
zerotier-idtool genmoon moon.json
↑ 生成成功
将生成的.moon文件移动到moons.d目录下
mkdir moons.d
mv 000000xxxxxx.moon moons.d
重启zerotier-one服务
systemctl restart zerotier-one
配置开机启动
systemctl enable zerotier-one.service
至此,moon服务器就搭建好了,接下来是在客户端中配置moon节点
在linux和wondows下配置Moon:
假设现在公司本地有一台运行的linux系统,没有公网ip,平时想在家里也能连接操作它:
登录到这台本地linux服务器,安装客户端:
yum install zerotier-one
或者:
curl -s https://install.zerotier.com | sudo bash
windows客户端则是登录官网下载页https://www.zerotier.com/download/下载安装即可
然后执行第三步,确保本地的linux已加入到虚拟网络中
windows:
点击系统托盘中的图标,选择Join New Network,加入
输入命令查看当前所在网络下的所有机器:
windows:
管理员身份运行powershell,执行
zerotier-cli.bat listpeers
Linux:
zerotier-cli listpeers
识别到moon的主机之后,输入命令将其由LEAF变为MOON:
zerotier-cli orbit [节点ID] [节点ID] #linux
zerotier-cli.bat orbit [节点ID] [节点ID] #windows
zerotier-cli listmoons #列出加入的Moon节点
zerotier-cli orbit <world ID> <seed> #加入某个Moon节点
zerotier-cli deorbit <world ID> #离开某个Moon节点
windows与linux已经双双设置成功~
ping测试:(ping zerotier为其生成的虚拟ip)
用windows 在本地网络环境下 ping linux
小结
经测试,有时候加入网络识别的慢一些,有可能是开启了代理的原因,如果长时间服务器没有识别到,建议检查网络后重试。