🌏 告别延迟:手把手教你自建 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
成功状态的标志如下:
| 字段 | 预期值 | 说明 |
|---|---|---|
| Role | MOON | 角色应显示为 MOON,而非 PLANET |
| Link | DIRECT | 链接状态应为直连 |
| Path | IP/9993 | 路径应显示你的云服务器公网 IP |
示例输出:
2c4134b432 1.10.5 MOON 45 DIRECT 你的云服务器公网IP/9993
🛠️ 常见问题与故障排查
如果你在 listpeers 中看到的状态为 - 或 -1,请参考以下排查步骤:
- 端口检查:这是最常见的原因。请务必确认云厂商的安全组和服务器本地防火墙(如 ufw、firewalld)均放行了 UDP 9993 端口。
- IP 格式:检查
moon.json中的stableEndpoints是否填写的是公网 IP,而非内网 IP。 - ID 混淆:确保在执行
orbit命令时,输入的是 Moon 的ztaddr(10位),而不是 Network ID(16位)。
结语: 通过以上简单的三步操作,你已经成功搭建了一个专属的 ZeroTier Moon 服务器。现在,你的设备间流量将优先通过国内的中继节点传输,无论是远程桌面还是文件传输,体验都将大幅提升。