🌏 告别延迟:手把手教你自建 ZeroTier Moon 服务器,打造极速内网

7 阅读4分钟

🌏 告别延迟:手把手教你自建 ZeroTier Moon 服务器,打造极速内网

摘要: 你是否在使用 ZeroTier 时,发现国内设备之间的连接速度并不理想?这是因为当 P2P 连接失败时,流量默认会通过 ZeroTier 官方的海外根服务器(Planet)进行中转,导致较高的延迟。本文将教你如何利用一台云服务器搭建专属的“Moon”中继节点,让流量在国内流转,实现极速连接。


🎯 核心价值:为什么你需要自建 Moon?

ZeroTier 是一款优秀的虚拟局域网工具,但在国内复杂的网络环境下,设备间往往难以建立直接的 P2P 连接。此时,流量会通过官方的海外服务器中转,导致延迟高、速度慢。

自建 Moon 服务器,本质上是在国内搭建一个私有的中继节点。当设备无法直连时,流量将优先通过你的 Moon 服务器进行中转,从而避免绕道海外,显著提升连接质量。


🚀 第一步:云服务器端配置(Moon 服务端)

你需要准备一台拥有公网 IP 的云服务器(如阿里云、腾讯云等),并确保其安全组已放行 UDP 9993 端口。

1. 安装与加入网络

登录云服务器,执行以下命令安装 ZeroTier 并加入你的网络:

# 一键安装
curl -s https://install.zerotier.com | sudo bash

# 启动并设置开机自启
sudo systemctl start zerotier-one
sudo systemctl enable zerotier-one

# 加入你的 ZeroTier 网络 (替换为你的 NetworkID)
sudo zerotier-cli join 你的NetworkID

注意: 请前往 ZeroTier 官网控制面板的 "Members" 列表,找到这台服务器的 ztaddr,勾选 "Auth" 授权其加入。

2. 生成并配置 Moon 文件

进入配置目录,生成配置文件并修改其 IP 地址:

cd /var/lib/zerotier-one

# 生成初始配置文件
sudo zerotier-idtool initmoon identity.public > moon.json

# 编辑配置文件 (使用 vim 或 nano)
sudo vim moon.json

moon.json 文件中,找到 "stableEndpoints": [],修改为你的云服务器公网 IP 和端口:

"stableEndpoints": ["你的云服务器公网IP/9993"]

3. 签署并部署

保存文件后,生成签名文件并重启服务:

# 生成签名后的 Moon 文件
sudo zerotier-idtool genmoon moon.json

# 移动文件到指定目录
sudo mkdir -p moons.d
sudo mv 000000*.moon moons.d/

# 重启服务生效
sudo systemctl restart zerotier-one

💻 第二步:客户端配置(连接 Moon)

服务端搭建完成后,需要让其他设备(如你的电脑、手机)主动连接到这颗“月亮”。

1. 获取 Moon ID

回到云服务器的控制台,查看 moon.json 文件中的 id 字段,或者在 ZeroTier 官网控制台 "Members" 列表中找到该服务器的物理地址(ztaddr)。这是一个 10 位的字符串(如 fc4e7176af)。

2. 执行 Orbit 命令

在客户端设备上,以管理员身份打开终端或命令行,执行以下命令:

zerotier-cli orbit Moon的节点ID Moon的节点ID

注:命令中需要输入两次 ID,第一个是 Moon ID,第二个是想要避免冲突的范围 ID(通常设为相同即可)。

命令执行成功会返回 200 orbit OK。随后重启客户端的 ZeroTier 服务。


✅ 第三步:验证连接状态

配置完成后,如何确认是否已经成功连接到 Moon 服务器?请在客户端执行以下命令:

zerotier-cli listpeers

成功状态的标志如下:

字段预期值说明
RoleMOON角色应显示为 MOON,而非 PLANET
LinkDIRECT链接状态应为直连
PathIP/9993路径应显示你的云服务器公网 IP

示例输出:

2c4134b432 1.10.5 MOON 45 DIRECT 你的云服务器公网IP/9993

🛠️ 常见问题与故障排查

如果你在 listpeers 中看到的状态为 --1,请参考以下排查步骤:

  1. 端口检查:这是最常见的原因。请务必确认云厂商的安全组和服务器本地防火墙(如 ufw、firewalld)均放行了 UDP 9993 端口。
  2. IP 格式:检查 moon.json 中的 stableEndpoints 是否填写的是公网 IP,而非内网 IP。
  3. ID 混淆:确保在执行 orbit 命令时,输入的是 Moon 的 ztaddr(10位),而不是 Network ID(16位)。

结语: 通过以上简单的三步操作,你已经成功搭建了一个专属的 ZeroTier Moon 服务器。现在,你的设备间流量将优先通过国内的中继节点传输,无论是远程桌面还是文件传输,体验都将大幅提升。