上午

已剪辑自: https://blog.csdn.net/RadiantJeral/article/details/104159031

 

本文介绍 ZeroTier Moon 的部署.
环境:
  机器 A:Notebook, Windows8
  机器 B:Desktop, Ubuntu16.04
  机器 C:Cloud Server, Ubuntu16.04, 公网 IP:1.2.3.4
通过 ZeroTier 建立虚拟局域网,在机器 C 的云服务器上部署 ZeroTier Moon,加速网络.

 

1. 部署 Moon 服务

  官方手册部署 Moon.

1. 1 设置 ZeroTier Node

Moon 节点可以是具有固定 IP 的公网设备,也可以是具有物理 IP 的内网设备. 如果使用内网设备,依然需要借助官方根服务器作为中间链路. 因此,这里我们在云服务器上搭建 Moon 服务,云服务器的公网 IP 为 1.2.3.4.

在机器 C 上部署 ZeroTier Moon 首先需要安装 ZeroTier One 将其部署为为 ZeroTier Node,参考 ZeroTier 的安装与使用.

1.2 设置 moon.json 配置文件

在机器 C 上进入 root 账户,或者 sudo 提权.
 
1.进入 ZeroTier HOME 目录:

cd /var/lib/zerotier-one/

 
2. 获取 moon.json 文件:

zerotier-idtool initmoon identity.public >>moon.json

产生的 moon.json,并修改stableEndpoints的入口IP.

{
"id": "fbaa18691f",
"objtype": "world",
"roots": [
{
"identity": "fbaa18691f:0:bb4e183bf272ccfa25b3da09b430b64a36606b0a1da1ff87089b8ca7591dc40aab61654f472d8836067f85bc018b3fcc633dc4ec206734f7a40ec3c972733ab1",
"stableEndpoints": ["1.15.159.170/18888"]
}
],
"signingKey": "bb4e183b0447c4acf9ecb26be36fbb05a58dd23edc10d7002b6371868cad61dfff7a252479da7a172c7df5195e7a1bd548d994e6df3f5fd8efa072ca0d7f0d0",
"signingKey_SECRET": "bb4e183be0deb3ba594c7da043019742f8da0ab3a6e5d7338ff812df004c06c90d86cb459b4232b56648194d7b571398952602b17cce004ffb0bc1bd3f525a3f",
"updatesMustBeSignedBy": "bb4e183bf0447c4acf9ecb26be36fbb05a58dd23edc10d7002b6371868cad61dfff7a252479da7a172c7df5195e7a1bd548d994e6df3f5fd8efa072ca0d7f0d0",
"worldType": "moon"
}

moon.json 文件中的 "id": "fbaa18691f" 就是机器 C 的 ZeroTier Node ID.

1.3 设置moon签名文件

1.修改完 moon.json 文件后,获取 000000deadbeef00.moon 签名文件:

zerotier-idtool genmoon moon.json

此时,在 /var/lib/zerotier-one/ 下产生 000000deadbeef00.moon 文件. deadbeef00 就是机器 C 的 ZeroTier Node ID.
 
2.新建 moons.d 目录,并将 000000deadbeef00.moon 文件移动到其下:

mkdir moons.d  
mv 000000deadbeef00.moon moons.d

 
3.重启 ZeroTier One 服务,激活设置:

service zerotier-one restart

 

2. 使用 Moon 服务

要想使用 Moon 服务,还需要在机器 A 和机器 B 上添加签名文件. 有两种方式:1.手动添加;2.命令行通过 ZeroTier Root Server 添加.

2.1 手动添加签名文件

1. 在 ZeroTier One 的 HOME 目录新建 moons.d 目录, 将 1.3 小节中产生的 000000deadbeef00.moon 拷贝出来并放入 {ZeroTier_One_HOME}\\moons.d 目录中.
以下是各种操作系统中 ZeroTier One 默认的 HOME 目录

  • Linux: /var/lib/zerotier-one
  • FreeBSD / OpenBSD: /var/db/zerotier-one
  • Mac: /Library/Application Support/ZeroTier/One
     - Windows: \**ProgramData**\ZeroTier\One (That’s for Windows 7. The base ‘shared app data’ folder might be different on different Windows versions.)

2. 然后,重启 ZeroTier One 服务,激活设置.    

2.1.1 在机器 A(Windows)上添加

 
Windows 操作系统中 ZeroTier One HOME 目录为 \ProgramData\ZeroTier\One,如下图所示:

image1-4

\Program Files (x86)\ZeroTier\One 为 ZeroTier One 图形界面与命令行界面所在目录,如下图所示:

image2-2

1.在 \ProgramData\ZeroTier\One 下建立 moons.d 目录,并将 000000deadbeef00.moon 拷贝放入.

2.重启 ZeroTier One 服务.
win + R 打开运行

image3-2

输入 services.msc 打开服务,选择 ZeroTier One 服务并重新启动

image4-2

3.测试
\\Program Files (x86)\\ZeroTier\\One 下打开 cmd,测试 MOON 节点是否添加成功

zerotier-cli.bat listpeers

 结果如下图,出现 MOON 节点则表示添加成功

image5

 

2.1.2 在机器 B(Ubuntu)上添加

 
1.Ubuntu 操作系统中 ZeroTier One HOME 目录为 /var/lib/zerotier-one,建立 moons.d 目录,并将 000000deadbeef00.moon 拷贝放入.
 
2.重新启动 ZeroTier One 服务:

sudo service zerotier-one restart

3.测试:

sudo zerotier-cli listpeers

出现 MOON 标识的节点标识添加成功.

2.2 命令添加

Windows 下:

zerotier-cli.bat orbit deadbeef00 deadbeef00 # deadbeef00 twice

重启 ZeroTier One 服务
 
Ubuntu 下:

sudo zerotier-cli orbit deadbeef00 deadbeef00 # deadbeef00 twice

重启 ZeroTier One 服务  

  1. 命令行实际上是通过 ZeroTier 根服务器将 000000deadbeef00.moon 拷贝放入 {ZeroTier_One_HOME}/moons.d 目录中. 由于网络原因,可能会有延迟或无效的情况,重复、等待或使用手动方式.
  2. 重启 ZeroTier One 服务是非常重要的步骤,不重启 ZeroTier One 服务将无法激活设置.

3. 效果对比

未使用 Moon 服务时:延迟较高,并且经常性有丢包现象
image6

使用 Moon 服务后:延迟显著降低,无经常性丢包现象
image7