问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Zerotier服务器及客户端配置指南

创作时间:
作者:
@小白创作中心

Zerotier服务器及客户端配置指南

引用
1
来源
1.
https://www.moyu365.top/2025/01/Zerotier/

Zerotier是一个开源的软件平台,旨在简化虚拟专用网络(VPN)和软件定义网络(SDN)的部署。它允许用户通过互联网创建和管理其自己的私有网络,就像局域网(LAN)一样。Zerotier提供了一种点对点的网络连接方式,支持端到端加密,确保数据传输的安全性。用户可以在不同设备和操作系统之间快速建立安全的连接,适用于远程办公、物联网设备管理以及分布式团队合作等多种场景。

Planet 服务端搭建

官方的 Planet 根服务器在境外,加速不稳定。理论上可以搭建 MOON 服务器解决这一问题,但 MOON 的解析仍然依赖于 Planet ,经常出现内网解析不到 MOON 的情况,使设备的连接不稳定。

搭建 Zerotier 的 Planet 服务器可以提高网络稳定性,减少对官方服务器的依赖,降低数据传输的延迟,增强网络性能和安全性。私有化根服务器允许用户更好地控制和管理网络流量,并根据特定需求自定义配置。这使得 Zerotier 网络在高性能和高安全性需求的场景中更加稳定、高效。

本文将使用key-networks/ztncui组件搭建私有 Planet 服务端并配置客户端。

所需的相关素材如下:

  • 云服务器一台(使用的配置如下,如采用了不同的配置,请自行根据情况调整参数)
  • 拥有固定公网 IP
  • 操作系统 Ubuntu 24.04
  • CPU 2 vCore
  • 内存 1 GB
  • 带宽 200 Mbps

服务端配置

安装 Zerotier-one (方案 2 选 1)

Debian 和基于 RPM 的发行版(包括 Debian、Ubuntu、CentOS、RHEL、Fedora 等 Linux 发行版)可以通过 Zerotier 提供的官方途径进行安装,官网共提供了两种方案,可以自选其一。

方案一会更简单一些:

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

也可以采用方案二,使用 GPG 进行更加安全的安装:

curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/main/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi
安装 Ztncui 组件

Ztncui 组件安装可以结合自身 Planet 服务器情况参考Ztncui 官方网站。

curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb
sudo apt install ./ztncui_0.8.14_amd64.deb
Ztncui 组件配置

Ztncui 可以配置的属性如下,可根据自身需求选择。

是否需要
参数名
描述
缺省值
Y
ZT_TOKEN
Zerotier-one 的 Token 配置
N
ZT_ADDR
Zerotier-one API 端口
localhost:9993
Y
NODE_ENV
production
N
HTTP_ALL_INTERFACES
HTTP 是否监听所有来源的请求
无缺省值
N
HTTP_PORT
HTTP_PORT
3000
N
HTTPS_HOST
HTTPS_HOST
无缺省值
N
HTTPS_PORT
HTTPS_PORT
无缺省值
Y
MYADDR
Planet 服务器 IP 地址

样例中的ServerIP需要替换为搭建 Planet 服务器的实际 IP 地址。

sudo sh -c "echo ZT_TOKEN=`sudo cat /var/lib/zerotier-one/authtoken.secret`> /opt/key-networks/ztncui/.env"
sudo sh -c "echo NODE_ENV=production >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo HTTP_ALL_INTERFACES=yes >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo HTTP_PORT=3000 >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo HTTPS_PORT=3443 >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo MYADDR=ServerIP >> /opt/key-networks/ztncui/.env"
Ztncui 运行

进行配置后将.env文件进行权限配置,并将所有权转移给ztncui用户保证其可以访问。通过重启 Ztncui 服务应用配置。

sudo chmod 400 /opt/key-networks/ztncui/.env
sudo chown ztncui.ztncui /opt/key-networks/ztncui/.env
sudo systemctl restart ztncui
Ztncui WebUI 界面配置

进入http://ServerIP:HTTP_PORT,显示如下界面说明已经完成了很大一部分啦!

默认账户密码如下,首次登录后会强制要求修改密码。

  • 账号:admin
  • 密码:password

点击顶部 Add Network 建立网络。命名后会自动跳转到该虚拟网络的管理页面。之后的操作会在该虚拟网络的管理界面进行。

使用管理界面中的 Easy Setup 配置 IP 地址段。配置正确的第 1 个参数后点击第 2 或 3 个参数的框会自动填充。

Ztncui 私有化 Planet 配置文件生成

使用搭建的 Zerotier-One 客户端加入在 WebUI 中建立的虚拟网络,其中VirtualNetworkID为管理页面上自定义的虚拟网络命名右侧的 16 进制 ID 值。

sudo zerotier-cli join VirtualNetworkID

查看并保存验证密钥对的公钥IdentPubkey,保留用于后续制作 Planet 解析文件。

sudo cat /var/lib/zerotier-one/identity.public

下载 Zerotier 工具包,用于后续使用官方文件用于编译 Planet 解析文件。

git clone https://github.com/zerotier/ZeroTierOne.git
cd ./ZeroTierOne/attic/world

随后通过 Vim 编辑mkworld.cpp,注释掉一组官方服务器并在相应位置填入正在建立的私有 Planet 服务器的信息。下述代码中的IdentPubkey以及ServerIP请自行替换。

roots.push_back(World::Root());
roots.back().identity = Identity("IdentPubkey");
roots.back().stableEndpoints.push_back(InetAddress("ServerIP/9993"));
roots.back().stableEndpoints.push_back(InetAddress("ServerIPv6/9993"));// 如果没有公网 IPv6 地址,请不要添加这一行

编译全新的私有 Plannet 配置文件!

source ./build.sh
./mkworld
mv ./world.bin ./planet
私有化 Planet 配置文件移动到 Zerotier-One 配置文件夹

将私有化 Planet 配置文件移到 Zerotier-One 配置文件夹,并重启 Zerotier-One 服务。

推荐使用 sftp 下载该文件保留备用,用于配置 Zerotier-one 客户端。

cp -r ./planet /var/lib/zerotier-one
sudo systemctl restart zerotier-one

客户端配置

私有化 Planet 配置

将私有化 Planet 配置文件置入各自的 Zerotier-One 配置文件夹中,备份并替换原有 planet 文件。各个系统 planet 文件默认文件夹如下:

  • C:\ProgramData\ZeroTier\One
  • /var/lib/zerotier-one
  • /Library/Application\ Support/ZeroTier/One/
  • /etc/config/zero/planet
重启 Zerotier-cli 服务

重启 Zerotier-cli 服务应用配置文件。

net stop ZeroTierOneService
net start ZeroTierOneService
sudo systemctl restart zerotier-one
加入服务器

使用管理员权限加入虚拟网络。请替换为自己的VirtualNetworkID。

zerotier-cli join VirtualNetworkID

Moon 服务端搭建

建立 ZeroTier 的 Moon 服务器可以有效降低内网穿透时的延迟,降低区域跨越导致的高延迟问题,从而提供更好的网络体验。

通过自建服务器,可以将服务器放置在更靠近设备的位置,从而提高网络性能。此外,服务器还能为对应区域的设备提供更高的稳定性和带宽,减少网络中断的风险,并增强对服务器配置和管理的灵活性与控制权。

服务端配置

相对于 Planet 服务器,Moon 服务器的搭建会简单很多,官方的工具已经提供了成熟的指令。所需的相关素材如下:

  • 云服务器一台(使用的配置如下,如采用了不同的配置,请自行根据情况调整参数)
  • 拥有固定公网 IP
  • 操作系统 Debian 12 x86_64
  • RAM 1GB
安装 Zerotier-one

安装方式可以参考1.1.1 安装 Zerotier-one (方案 2 选 1)中的方法。

Zerotier-cli 加入虚拟网络

安装后即可对 Zerotier 开始进行配置了,先作为客户端加入网络中,下面命令中的VirtualNetworkID请替换为要加入的虚拟网络的 ID。申请加入后记得在管理 Web 页面通过请求。

sudo zerotier-cli join VirtualNetworkID
200 join OK
Moon 配置模板生成

通过官方工具生成moon.json模板。

cd /var/lib/zerotier-one
sudo su
zerotier-idtool initmoon identity.public >> ./moon.json
exit
Moon 配置模板编辑

使用 Vim 文本编辑器在moon.json模板文件中的"stableEndpoints": []中填入服务器的固定 IP 地址及端口(默认为 9993):"stableEndpoints": ["IP/9993"]

sudo vim moon.json
Moon 配置文件生成及应用

使用官方工具生成 Moon 配置文件,此时会返回生成的 Moon 配置文件文件名及其对应生成时间戳。

sudo zerotier-idtool genmoon moon.json
wrote 000000xxxxxxxxxx.moon (signed world with timestamp yyyyyyyyyyyyy)

将生成的文件移入文件夹moon.d中,并重启 Zerotier-one 服务。

sudo mkdir moons.d
sudo mv ./000000xxxxxxxxxx.moon ./moons.d
sudo systemctl restart zerotier-one

客户端配置

客户端配置就更简单啦~只需要标记 Moon 服务器所在的节点是轨道服务器就可以啦。Linux、Windows 或 MacOS 客户端均可以进入命令行使用以下指令进行配置(均需要 root / 管理员权限),其中moonididid需要替换为 Moon 服务器加入虚拟网络时的节点 ID。

# Linux:
sudo zerotier-cli orbit moonididid moonididid
# Windows:
zerotier-cli orbit moonididid moonididid

核验 Moon 服务器配置

使用 listpeers 查看对应服务器 ip 的节点是否被标记为MOON,也可以直接使用 listmoons 指令。

zerotier-cli listpeers
zerotier-cli listmoons

Zerotier 常用操作指令

服务端

# 启动 Zerotier 服务
sudo systemctl start zerotier-one
# 停止 Zerotier 服务
sudo systemctl stop zerotier-one
# 重启 Zerotier 服务
sudo systemctl restart zerotier-one
# Zerotier 服务状态查询
sudo systemctl status zerotier-one
---
# 列为开机启动服务
sudo systemctl enable zerotier-one
# 取消开机启动
sudo systemctl disable zerotier-one

客户端

# Zerotier 状态查看
zerotier-cli status
# Zerotier 加入、离开虚拟网络
zerotier-cli join xxxxxxxxxxxxxxxx
zerotier-cli leave xxxxxxxxxxxxxxxx
# Zerotier 加入的虚拟网络列表
zerotier-cli listnetworks

参考文献

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号