当前位置: 代码迷 >> 综合 >> 【网络通信】【ZeroTier】ZeroTier Moon 部署
  详细解决方案

【网络通信】【ZeroTier】ZeroTier Moon 部署

热度:99   发布时间:2023-12-06 13:34:14.0

学习研究 ZeroTier 的系列文章.

本文介绍 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 服务
      • 1. 1 设置 ZeroTier Node
      • 1.2 设置 Moon.json 配置文件
      • 1.3 设置 `000000deadbeef00.moon` 签名文件
    • 2. 使用 Moon 服务
      • 2.1 手动添加签名文件
        • 2.1.1 在机器 A(Windows)上添加
        • 2.1.2 在机器 B(Ubuntu)上添加
      • 2.2 命令添加
    • 3. 效果对比

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 文件如下:

{
    "id": "deadbeef00","objtype": "world","roots": [{
    "identity": "deadbeef00:0:34031483094...","stableEndpoints": []}],"signingKey": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0","signingKey_SECRET": "ffc5dd0b2baf1c9b220d1c9cb39633f9e2151cf350a6d0e67c913f8952bafaf3671d2226388e1406e7670dc645851bf7d3643da701fd4599fedb9914c3918db3","updatesMustBeSignedBy": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0","worldType": "moon"
}

 
3.在 moon.json 文件中添加公网 IP(s),如下:

{
    "id": "deadbeef00","objtype": "world","roots": [{
     "identity": "deadbeef00:0:34031483094...","stableEndpoints": [ "1.2.3.4/9993"]    # wrrite the IPv4 or IPv6 in Square brackets, if you have IPv6},{
    "identity": "feedbeef11:0:83588158384...","stableEndpoints": [ "1.2.3.5/9993","2001:abcd:abcd::3/9993" ]    # add the second root if you have}],"signingKey": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0","signingKey_SECRET": "ffc5dd0b2baf1c9b220d1c9cb39633f9e2151cf350a6d0e67c913f8952bafaf3671d2226388e1406e7670dc645851bf7d3643da701fd4599fedb9914c3918db3","updatesMustBeSignedBy": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0","worldType": "moon"
}

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

1.3 设置 000000deadbeef00.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,如下图所示:
在这里插入图片描述

\Program Files (x86)\ZeroTier\One 为 ZeroTier One 图形界面与命令行界面所在目录,如下图所示:
在这里插入图片描述

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

2.重启 ZeroTier One 服务.
win + R 打开运行
在这里插入图片描述
输入 services.msc 打开服务,选择 ZeroTier One 服务并重新启动
在这里插入图片描述
3.测试
\Program Files (x86)\ZeroTier\One 下打开 cmd,测试 MOON 节点是否添加成功

>zerotier-cli.bat listpeers

结果如下图,出现 MOON 节点则表示添加成功
在这里插入图片描述
 

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 下:

C:\Program Files (x86)\ZeroTier\One>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 服务时:延迟较高,并且经常性有丢包现象
在这里插入图片描述
使用 Moon 服务后:延迟显著降低,无经常性丢包现象
在这里插入图片描述

  相关解决方案