学习研究 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 服务
- 命令行实际上是通过 ZeroTier 根服务器将
000000deadbeef00.moon
拷贝放入{ZeroTier_One_HOME}/moons.d
目录中. 由于网络原因,可能会有延迟或无效的情况,重复、等待或使用手动方式.- 重启 ZeroTier One 服务是非常重要的步骤,不重启 ZeroTier One 服务将无法激活设置.
3. 效果对比
未使用 Moon 服务时:延迟较高,并且经常性有丢包现象
使用 Moon 服务后:延迟显著降低,无经常性丢包现象