Zerotier 搭建卫星节点

Zerotier 是真的香。不过目前有一个问题是我发现从我家里的网络走 Zerotier 速度不是很快,网上的说法说这是因为 Zerotier 的服务器在高峰时段不好使导致的。

Zerotier 的服务器的角色有一点类似 BT 下载中的 Tracker 服务器的作用。因此服务器本身不承担中转流量,但是需要记录路径信息。

1 创建卫星节点

下面来说一下卫星节点,也就是 moon 节点的配置方法。首先 moon 节点也要加入网络,因此我们需要安装 Zerotier

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

zerotier-cli join <network id>

我是把我的 R2S 作为卫星节点的。R2S 上 Zerotier 是通过插件安装,不过通过 ssh 连接到 R2S 终端后仍然能够访问 zerotier-cli 工具。这里说一下 moon 的作用。Zerotier 定义了几个专业名词:

  • PLANET 行星服务器,Zerotier 各地的根服务器,有日本、新加坡等地
  • moon 卫星级服务器,用户自建的私有根服务器,起到中转加速的作用
  • LEAF 相当于各个枝叶,就是每台连接到该网络的机器节点。

我们需要在目标服务器上创建 moon 的配置信息。首先我们需要生成 moon 配置的 json 模板文件:

1
2
cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public > moon.json

文件生成后我们需要修改这个文件,为 stableEndpoints 添加外部入口配置。其格式如下:

1
"stableEndpoints": [ "8.8.8.8/9993" ]

可以看到作为 moon 的节点是需要有公网 IP 的,最好是固定 IP。目前 1.x 版本的 Zerotier 尚不支持使用域名配置,在 2.0 版本中官方可能加入这个支持。

基于这个 json 文件我们可以生成 .moon 的配置文件。运行下面的命令:

1
zerotier-idtool genmoon moon.json

命令执行之后会在当前目录下创建一个名为 000000xxxx.moon,我们需要将这个文件移动到 /var/lib/zerotier-one/moons.d/ 路径中(如果文件夹不存在就创建一个),然后重启 Zerotier 服务。

网上有的文章中说要重启服务器,这是不必要的。

2 客户端加入卫星网络

至此卫星节点就可用了,我们可以在客户端中执行:

1
zerotier-cli orbit <id> <id>

在 Windows 或者 Mac 中安装的客户端程序的 GUI 界面是没有对应的配置选项的,我们需要打开 CMD 或者 Terminal 来执行这个命令。

这里的两个 id 都是 moon 节点的 id。这个 id 可以通过 zerotier-cli info 查看,这个命令的输出形式大概是

1
200 info <节点的 ID> 1.4.6 ONLINE

我们可以用 zerotier-cli listpeers 或者 zerotier-cli listmoons 来查看是否设置成功。

3 性能改善

在使用了 moon 节点以后,我的上传速度提升了大约十倍(从 200kB/s 提升到 2 MB/s)。