春节期间外面武汉冠状病毒肆虐,适宜呆在家里折腾自己喜欢的东西。继上次使用Zerotier组建可以穿透内网的虚拟局域网之后,大伟哥这次要做的就是使用现有的阿里云ECS服务器搭建ZeroTier的Moon中转服务器。
Moon是什么?为什么需要Moon?
ZeroTier通过自己的多个根服务器帮助我们建立虚拟的局域网,让虚拟局域网内的各台设备可以打洞直连。这些根服务器的功能有些类似于通过域名查询找到服务器地址的DNS服务器,它们被称为Planet。然而这里存在一个非常严重的问题,就是Zerotier的官方行星服务器都部署在国外,从国内访问的时候延迟很大,甚至在网络高峰期的时候都没法访问,这也会导致我们的虚拟局域网变得极不稳定,经常掉链子。
为了应对网络链接的延迟和不稳定,提高虚拟局域网的速度和可靠性,Zerotier允许我们建立自己的moon卫星中转服务器。
作为Moon服务器不需要具备太强大的CPU性能/内存空间和存储空间,虚拟机、VPS、或者云服务器甚至一个树莓派都行,当然,这台服务器需要长时间可靠在线并且具有静态IP地址(ZeroTier官网上说公网IP或者内网IP都可以,只是如果用的是内网IP的话,在外网的设备就只能依靠Planet而不能使用moon了)。
大伟哥这里使用的是阿里云提供的ECS服务器,操作系统是Ubuntu Server Linux。阿里云是国内首屈一指的云计算服务商,也是大伟哥推荐的唯一国内云计算服务商,使用多年来一直非常稳定。
Moon服务器配置过程
1. 首先需要和普通设备一样,下载并安装ZeroTier:
curl -s https://install.zerotier.com/ | sudo bash
安装完成后得到一个ID:
*** Success! You are ZeroTier address [ 9c960b9ac2 ]
2. 加入网络:
sudo zerotier-cli join 3efa5cb78a961967 200 join OK
3.进入ZeroTier的默认安装目录,生成moon配置文件:
cd /var/lib/zerotier-one sudo zerotier-idtool initmoon /var/lib/zerotier-one/identity.public >> moon.json bash: moon.json: Permission denied sudo su zerotier-idtool initmoon identity.public > moon.json
注意,这里如果使用sudo命令提示权限不够,需要使用sudo su命令切换到root用户进行操作,才能生成moon.json文件。
4.修改moon.json文件。
生成的文件样式如下:
"id": "9c960b9ac2", "objtype": "world", "roots": [ { "identity": "9c960b9ac2:0:daca38dfc5f3a5e2113178cbecda4b741c85cc3aa6fff9ab86285146bb0c7030a604be1d8fc5489bb54a30c30933ae1a700fb9197cd3905eb8e230200e68f3c8", "stableEndpoints": [] } ], "signingKey": "676f0c29eb8d6f2f00ce22ee2082b3ec15b21e95dd2f1305d5066c43372c4060fe34379de508b4ecfbcff768629b6e217c07228f80687f77970bfd87b067ed6c", "signingKey_SECRET": "39de9f7ab16d0adb035276b7281f73344a0df8af59cf937d4b032078037fd0f97c1006e050c2805882a6807cb636240de1a49797580a24b575ad7d944a17613d", "updatesMustBeSignedBy": "676f0c29eb8d6f2f00ce22ee2082b3ec15b21e95dd2f1305d5066c43372c4060fe34379de508b4ecfbcff768629b6e217c07228f80687f77970bfd87b067ed6c", "worldType": "moon" }
这里我们需要根据自己服务器的公网静态IP,修改stableEndpoints那一行格式如下,其中11.22.33.44为你的公网IP,9993是默认的端口号:
"stableEndpoints": [ "11.22.33.44/9993" ]
5. 根据之前修改的moon.json文件生成真正需要的签名文件:
root@daweibro:/var/lib/zerotier-one# zerotier-idtool genmoon moon.json wrote 0000009c960b9ac2.moon (signed world with timestamp 1580398410930)
可以看到生成的文件名称是和服务器之前是到的ID是对应的。
6.创建moons.d文件夹,并把签名文件移动到文件夹内:
sudo mkdir moons.d sudo mv 0000009c960b9ac2.moon moons.d/
7.只需要重启ZeroTier服务就好了,没必要重启电脑,服务器如果做点什么配置更改都要重启的话那就搞笑了。到这里,moon服务器的配置就算全部完成了。
8.其他机器如果要使用moon服务器,必须要在本地加入之前生成的moon签名文件并重启服务才能生效。有两种方法。一种是在本机的Zerotier安装目录创建moons.d文件夹,然后下载该签名文件放在创建的moons.d目录里,重启服务。另一种是直接使用命令zerotier-cli orbit
sudo zerotier-cli orbit 9c960b9ac2 9c960b9ac2 200 orbit OK sudo service zerotier-one restart zerotier-one stop/waiting zerotier-one start/running, process 18347 sudo zerotier-cli listpeers 200 listpeers200 listpeers 34e0a5e174 147.75.92.2/9993;3061;2939 123 - PLANET 200 listpeers 3a46f1bf30 185.180.13.82/9993;7565;7794 271 - PLANET 200 listpeers 778cde7190 103.195.103.66/9993;7566;7693 373 - PLANET 200 listpeers 992fcf1db7 195.181.173.159/9993;3063;7158 396 - PLANET 200 listpeers 9c960b9ac2 121.41.23.39/9993;3052;3052 11 1.4.6 MOON 200 listpeers af415e486f 35.236.47.35/31469;3063;7873 192 1.4.1 LEAF
上面可见,moon服务器已经可以被其他常规节点访问到了。
大伟哥亲测发现,不管是Linux还是Windows,使用zerotier-cli orbit命令行都是最简便快捷的办法,只要一行命令就能省去下载再上传的复杂步骤。
有了Moon服务器,效果怎么样?不得不说,改善非常明显。之前用putty通过移动宽带SSH连接到长城宽带后的机器的时候卡的厉害,有时候刚进入系统还来不及输入下一条命令就没反应了,现在用起来和在同一个局域网内一样,完全感觉不到延迟。这简直可以算得上是鼠年来的第一个小成就了!
- 添加新评论
- 7040 阅读
评论
请问搭建好后要怎么强制走MOON?我的搭建过程没问题…
搭建好以后…
搭建好以后,需要客户端也加入之前生成的moon签名文件并重启服务才能生效。你在客户端运行zerotier-cli listpeers能看到moon吗?
2. 加入网络: sudo zerotier-cli…
没错,moon也要加入网络…
没错,moon也要加入网络,这些操作和普通的leaf加入网络是一样的。
af415e486f这个id是你个人的设备…
添加新评论