每一个问题都是机会

Linux 搭建 ZeroTier 的 Moon 服务器

文章目录
  1. Moon是什么,为什么需要Moon?
  2. Moon服务器配置过程
  3. 其他客户端使用
  4. 检查连接是否成功

Moon是什么,为什么需要Moon?

ZeroTier通过自己的多个根服务器帮助我们建立虚拟的局域网,让虚拟局域网内的各台设备可以打洞直连。这些根服务器的功能有些类似于通过域名查询找到服务器地址的DNS服务器,它们被称为Planet。然而这里存在一个非常严重的问题,就是Zerotier的官方行星服务器都部署在国外,从国内访问的时候延迟很大,甚至在网络高峰期的时候都没法访问,这也会导致我们的虚拟局域网变得极不稳定,经常掉链子。

为了应对网络链接的延迟和不稳定,提高虚拟局域网的速度和可靠性,Zerotier允许我们建立自己的moon卫星中转服务器。

作为Moon服务器不需要具备太强大的CPU性能/内存空间和存储空间,虚拟机、VPS、或者云服务器甚至一个树莓派都行,当然,这台服务器需要长时间可靠在线并且具有静态IP地址(ZeroTier官网上说公网IP或者内网IP都可以,只是如果用的是内网IP的话,在外网的设备就只能依靠Planet而不能使用moon了)。

Moon服务器配置过程

以Linux系统为例配置Moon服务器

TIPS:

由于ZeroTier本身使用UDP协议,因此如果存在防火墙的话,需要开放UDP,否则无法连接。
本篇内容仅介绍ZeroTier-Moon服务器的配置。

安装

下载并安装ZeroTier:

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

安装完成后得到一个ID:

*** Success! You are ZeroTier address [ 1c110b9ac2 ]

加入网络(只作为Moon服务的话不用加入网络):

sudo zerotier-cli join 3efa5cb78a961967
200 join OK

进入ZeroTier的默认安装目录,生成Moon配置文件:

cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
vim moon.json

其内容包括idobjtyperootssigningKey等等。

生成的文件样式如下:

 "id": "1c110b9ac2",
 "objtype": "world",
 "roots": [
  {
   "identity": "9c960b9ac2:0:daca38dfc5f3",
   "stableEndpoints": []
  }
 ],
 "signingKey": "676f0c29eb8d6f2f00ce22ee2082b3ec",
 "signingKey_SECRET": "39de9f7ab16d0adb035276b7281f73344",
 "updatesMustBeSignedBy": "676f0c29eb8d6f2f00ce22ee",
 "worldType": "moon"
}

这里我们需要根据自己服务器的公网静态IP,修改stableEndpoints那一行格式如下,其中11.22.33.44为你的公网IP,9993是默认的端口号:

"stableEndpoints": [ "11.22.33.44/9993" ]

根据moon.json文件生成真正需要的签名文件.moon

sudo zerotier-idtool genmoon moon.json

输出:

wrote 0000009c960b9ac2.moon (signed world with timestamp 1280398410930)

执行该命令以后会在软件目录下生成一个类似000000xxxxxxxxx.moon的文件,妥善保存该文件,因为要使用moon服务器,必须在所有客户端上面都发送一个这个文件。

移动.moon签名文件到moons.d目录下并且重启服务

cd /var/lib/zerotier-one
mkdir moons.d
mv 000000*.moon moons.d
service zerotier-one restart

其他客户端使用

其他机器如果要使用Moon服务器,必须要在本地加入之前生成的.moon签名文件并重启服务才能生效。有两种方法。

一、在本机的Zerotier安装目录创建moons.d文件夹,然后下载该签名文件放在创建的moons.d目录里,重启服务。

#For linux
# 一般是 /var/lib/zerotier-one 目录下
cd /var/lib/zerotier-one
mkdir moons.d
# 将 .moon 文件移动到 moons.d 目录下

#For windows
直接拷贝文件至C:\ProgramData\ZeroTier\One\moons.d目录下即可,通常默认配置均为这个路径,不然请从服务中找到文件路径

二、直接使用命令zerotier-cli orbit

# zerotier-cli orbit
sudo zerotier-cli orbit 9c960b9ac2 9c960b9ac2
200 orbit OK
# zerotier-one restart
sudo service zerotier-one restart
zerotier-one stop/waiting
zerotier-one start/running, process 18347

客户端添加.moon文件后需要重启ZeroTier One!Windows要在服务中重启ZeroTier One

检查连接是否成功

#for linux and windows(windows需要用管理员模式启动cmd输入)
zerotier-cli listpeers

如果输出中出现一条最后为MOON的记录,说明已经成功连接Moon服务器

zerotier-cli listpeers
200 listpeers <ztaddr> <path> <latency> <version> <role>
200 listpeers id myip/9993;6012;1706 -1 1.8.4 MOON
200 listpeers 62f865ae71 50.7.252.138/9993;6012;1070 -294 - PLANET

参考

https://www.daweibro.com/node/263
https://www.cnblogs.com/Do-n/p/13759447.html

赞(19)
未经允许不得转载:技术好学屋 » Linux 搭建 ZeroTier 的 Moon 服务器
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址