服务器安装Zerotier
公网服务器,需要有固定IP,一条命令安装Zerotier:
curl -s https://install.zerotier.com/ | sudo bash
出现如下提示则代表安装完成:
*** Enabling and starting ZeroTier service...
Synchronizing state of zerotier-one.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zerotier-one
*** Waiting for identity generation...
*** Success! You are ZeroTier address [ 515xxxxxxx ].
生成Moon配置文件
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
# 然后编辑该配置文件
sudo nano moon.json
默认该配置文件是如下内容:
{
"id": "515xxxxxxx",
"objtype": "world",
"roots": [
{
"identity": "515xxxxxxx:0:e4d8xxxxxx11d962bb14771fa1e9bf1e10f9519c82590c372abbad4c6b2b473f27c389f6f7c8c328d513ce449xxxxxxe4956a318af32e16df>
"stableEndpoints": []
}
],
"signingKey": "54685533b0ef4fc66f92e6a010dc304c4531acdd68a4486d800436d42aabfc5a9eed745cb9b7a3fe0983f521adc672f5b153bed420782d431c35058e3110c3>
"signingKey_SECRET": "3325fd28ec1ec8ae058c255825bc3259d1935bf4bb2b23e361eefec5729337e0f196caba311ba42245f2b77d707f04f5ed33c81b8bf74d31189524c>
"updatesMustBeSignedBy": "54685533b0ef4fc66f92e6a010dc304c4531acdd68a4486d800436d42aabfc5a9eed745cb9b7a3fe0983f521adc672f5b153bed420782d431c3>
"worldType": "moon"
}
其中"id"是本机器在zerotier中的id,此处默认无需修改
"stableEndpoints"需要填写服务器的公网IP(假设此处我们的服务器公网IP为114.114.114.114,默认9993端口, 且是UDP协议的, 此处在防火墙上需要开放UDP,否则其他设备连接不上Moon
如"stableEndpoints": ["114.114.114.114/9993"]
仅需修改这一条后保存退出。
生成签名文件
sudo zerotier-idtool genmoon moon.json
运行后提示类似wrote 000000515xxxxxxx.moon (signed world with timestamp 1640010832xxxx)
表示签名完成。文件名去掉开头的00000就是机器的ID
将 moon 节点加入网络
在/var/lib/zerotier-one中新建一个moons.d的目录,我们默认目前依旧在/var/lib/zerotier-one目录下,然后将刚才签名好的moon文件移动道moons.d中
sudo mkdir moons.d
sudo mv 000000515xxxxxxx.moon moons.d
重启zerotier服务以应用配置
sudo service zerotier-one restart
此时,Moon服务器已经配置完成、正常运行,并且可以接受客户端的连接请求了
下一步准备配置客户端,首先通过SFTP或者其他方式,将刚刚生成的000000515xxxxxxx.moon下载到本地。
配置OpenWRT软路由
我们前提默认OpenWRT已经安装了Zerotier并且已经配置完毕
ssh登录OpenWRT后,在zerotier的目录下创建moons.d目录
mkdir /etc/config/zero/moons.d
加入MOON服务器方式一(推荐)
通过SFTP将moon服务器中的000000515xxxxxxx.moon文件上传到刚刚创建的moons.d目录中
加入MOON服务器方式二
如果不方便上传文件,那么可以简单通过命令加入:
zerotier-cli orbit 515xxxxxxx 515xxxxxxx
后面两串数字是MOON服务器的ID,两个的原因是orbit参数支持同时连接两台MOON服务器(同样,通过moon签名文件的方式也可以连接多个MOON服务器),本文中我们仅配置了一台MOON服务器,因此两个ID相同即可。
重启软路由,输入zerotier-cli listpeers
以检查zerotier目前已经连接的节点是否包含我们刚刚配置好的moon服务器。
如果不出意外,反馈的应该是这样的:
200 listpeers <ztaddr> <path> <latency> <version> <role>
200 listpeers 296cxxxx17 192.168.2.191/29994;12457;5030 21 1.8.3 LEAF
200 listpeers 515xxxxxxx 114.114.114.114/9993;2347;2073 27 1.8.4 MOON
200 listpeers 61dxxxxx89 - -1 1.4.6 LEAF
200 listpeers 61dxxxxxcb 50.7.73.34/9993;2347;1448 905 - PLANET
200 listpeers 62fxxxxx71 50.7.252.138/9993;2347;1078 1266 - PLANET
200 listpeers 778xxxxx90 103.195.103.66/9993;2347;2050 285 - PLANET
200 listpeers 992xxxxxb7 195.181.173.159/9993;2347;2066 279 - PLANET
其中role列为MOON的那一条如果显示出IP与版本号,说明已经成功连接了。latency为MOON服务器的延迟。MOON为用户自建节点服务器,PLANET为官方节点服务器,LEAF为客户端。
疑问:MOON服务器本身,是否需要加入我们自己组建的Zerotier局域网呢?
答案:不需要且不能加入。因为加入之后,这台服务器就的角色就变成了LEAF。