#linux

免费的内网组网工具,不同于nps等使用内网穿透的形式构建局域网。

安装

申请帐号

在官网上申请帐号,然后创建网络。选择private,这样只有在官网认证成功的IP才能成功组网,防止被人入侵。

Linux上安装

使用官网命令安装

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

将当前设备加入zerotier局域网

1
2
3
sudo ./zerotier-cli join [network id]

# 必须要有sudo,不然会报错

启动zerotier服务,并设置为开启自启

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

手动构建

使用官网的脚本无法进行安装,这个时候可以直接下载github上的包,使用make进行安装。
安装完成之后,在ZeroTierOne目录下会生成zerotier-cli命令,通过这个命令去进行申请组网:

1
2
3
sudo ./zerotier-cli join [network id]

# 必须要有sudo,不然会报错

之后就是去Zerotier官网,在申请的网络里,找到members,将对应的IP打上勾就完成了。
Zerotier启动的时候会默认占用9993端口。

手动开启

join是第一次加入网络时候的操作,之后重启电脑的时候需要使用以下命令才能执行

1
sudo ./zerotier-one -d

都是在ZerotierOne目录下执行

自动启动

不建议使用,因为不稳定,还是直接通过命令行安装比较好

需要将zerotier-one 复制到/usr/bin目录下,这样就可以在全局模型是调用。

1
2
[Service]
ExecStart=/usr/bin/zerotier-one

之后需要将service服务复制到service文件夹下,保证与其他服务的权限一致。

1
2
3

# service在ZeroTierOne/debian文件夹下
sudo cp zerotier-one.service /usr/lib/systemd/system

设置默认启动

1
2
3
4
sudo systemctl enable zerotier-one.service

# 直接启动
sudo systemctl start zerotier-one.service

提速

Zerotier Moon

只需要有一个公网 IP 即可,起到辅助构建P2P连接的功能,不会进行数据的转发。

安装Zerotier

在云服务器上也许要安装Zerotier,这个时候可以使用官网的脚本:

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

不知道为什么云服务器就不会出错。默认会安装在var/lib/zerotier-one。并将其加入到同一个虚拟网络中

1
sudo zerotier-cli join xxxxxxxx

配置Moon

进入zerotier程序所在目录,默认为var/lib/zeroiter-one。生成moon.json 配置文件:

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

编辑moon.json 配置文件。将配置文件中的 "stableEndpoints": [] 修改成 "stableEndpoints": ["ServerIP/9993"],将 ServerIP 替换成云服务器的公网IP。

生成.moon 文件

1
sudo zerotier-idtool genmoon moon.json

将生成的000000xxxxxxxxxx.moon 移动到moons.d 目录(目录不存在则创建)。

.moon 配置文件的名一般为10个前导零+本机的节点ID

重启zeroiter-one 服务

1
sudo systemctl restart zerotier-one

使用Moon

通过以上方式,云服务器就具备了Moon的功能。之后就需要在其他设备上指定这个Moon中继。

普通的 Zerotier 成员使用 Moon 有两种方法,第一种方法是使用 zerotier-cli orbit 命令直接添加 Moon 节点ID;第二种方法是在 zerotier-one 程序的根目录创建moons.d文件夹,将 xxx.moon 复制到该文件夹中。本文使用第一种

Linux系统下使用Moon

1
2
3
4
sudo zerotier-cli orbit [Moon节点ID] [Moon节点ID]

# 之后查看是否成功,当云服务器对应的ID成为Moon则成功
sudo zerotier-cli listpeers

Windows 系统下使用 Moon

Windows 系统的默认程序目录位于 C:\Program Files (x86)\ZeroTier\One

1
2
3
4
5
6

# 以管理员身份打开 PowerShell
zerotier-cli.bat orbit [Moon节点ID] [Moon节点ID]

# 检查是否添加成功
zerotier-cli.bat listpeers

命令

命令 功能
zerotier-cli listnetworks 查看网络是否加入到了虚拟网络中
zerotier-cli listpeers 查看所有的节点的信息
zerotier-cli leave [Network ID] 离开指定的Network

删除

当前并不知道如何重新生成机器ID,所以如果无法在Zerotier官网删除本台机器的机器ID,那么就可以通过卸载Zerotier并重新安装的方式获取一个新的机器ID。

1
2
3
4
# 删除软件
sudo dpkg -P zerotier-one
# 删除zerotier-one文件,该文件存储来address地址,再次安装就会获得新的ID
sudo rm -rf /var/lib/zerotier-one/