ZeroTier组网记录

校园网更新后,内网与TIB的机器访问不通,使用todesk体验极差,加上服务器直接开放端口到公网上,访问控制也比较麻烦,索性自己组个网好了,看了一圈以后,选择使用ZeroTier组网。

简介

ZeroTier 是一个智能以太网交换机。它是一个分布式网络管理程序,允许所有联网设备、VM、容器和应用程序跨越局域网和广域网组建虚拟网络进行通信。

这是通过将加密寻址和安全的对等网络(称为VL1)与有点类似于VXLAN的以太网仿真层(称为VL2)相结合来实现的。

所有ZeroTier流量都使用只有你能控制的密钥进行端到端加密。大多数流量都是点对点的,对于无法建立点对点连接的用户,官方提供免费但速度较慢的中继服务。

安装

官网提供了各个系统的安装包/安装脚本,参照官方网站详情即可。

下载地址:https://www.zerotier.com/download/

Linux需要启动并添加开机启动:

1
2
sudo systemctl start zerotier-one.service
sudo systemctl enable zerotier-one.service

创建网络

进入ZeroTier Central,注册,登陆,创建网络,网络建议选择私有网络。

免费用户允许加入50个网络节点。

加入网络

复制ZeroTier Central中的网络id。

windows输入网络id直接添加,linux输入如下命令:

1
sudo zerotier-cli join network_id

如果选择的是私有网络的话,需要在ZeroTier Central中允许节点访问。

这时候,私有网络就组建好了,测试下延迟,发现到自己服务器延迟高达1000ms+,丢包还十分严重,原因是无法直连,走ZeroTier官方服务器中继去了,在海外逛了一大圈再加上海外线路udp限速导致延迟和稳定性都很差。为了加速,还需要搭建中转服务器。

中转服务器(moon)搭建

我组建的私有网络中有两台服务器,于是乎都拿来搭建moon。

搭建moon的服务器需要先加入网络,然后运行:

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

然后编辑moon.json,在 "stableEndpoints": [] 中加入服务器的公网ip以及端口,如1.2.3.4/9993(9993是默认端口,不建议更改),然后去阿里云/腾讯云防火墙放通9993端口的udp流量。

生成moon签名文件,将生成的.moon文件放入moons.d文件夹中,重启zerotier-one即可。

1
2
3
4
5
sudo zerotier-idtool genmoon moon.json
sudo mkdir moons.d
sudo cp 000000*.moon moons.d/
sudo chown -R zerotier-one:zerotier-one moons.d
sudo systemctl restart zerotier-one

加入moon

加入moon有两种方式。

  1. zerotier-cli

    搭建moon服务器时,生成了一个moon.json,获取文件中的id,如"id": "xxxxxxxxxx"

    在其他的机器上执行(xxxxxxxxxx要两遍):

    1
    sudo zerotier-cli orbit xxxxxxxxxx xxxxxxxxxx

    然后重启zerotier-one即可。

  2. 使用生成的配置文件

    搭建moon服务器时,使用moon.json还生成了一个000000xxxxxxxxxx.moon文件,下载.moon文件。

    在zerotier-one安装目录下,创建moons.d目录,将000000xxxxxxxxxx.moon放入,然后重启zerotier-one即可。

    Linux安装目录:/var/lib/zerotier-one/
    Windows安装目录:C:\ProgramData\ZeroTier\One\

网络测试

加入moon后,通过私有网络访问服务器的延迟大幅度降低,中继也变成了直连(感觉之前大概是握手失败了?)。即使无法直连,走moon服务器中继的延迟和稳定性也要远比官方服务器好得多。

网络延迟测试:

参考资料


ZeroTier组网记录
https://250.ac.cn/2021/10/06/ZeroTier组网记录/
Author
惊蛰
Posted on
October 6, 2021
Licensed under