前言
在分布式网络环境中,远程访问和内网穿透是常见需求。ZeroTier 作为一款高效的虚拟组网工具,能够提供高效、稳定的 P2P 连接,并且支持 Moon(中继服务器)技术,进一步优化网络性能。本篇文章将详细介绍如何在 CentOS Stream 9 上安装 ZeroTier,配置 Moon 服务器,并让 Mac 和 Windows 客户端接入。
1. 准备资源和环境
在开始安装和配置 ZeroTier 之前,需要确保以下资源:
- 服务器:一台具备公网 IP 地址的 CentOS Stream 9 服务器。
- 客户端设备:Windows 和 Mac 计算机。
- 网络访问权限:服务器需要能够访问互联网,以便下载 ZeroTier 并建立连接。
- 防火墙配置:确保服务器允许 ZeroTier 使用的端口(默认
9993/UDP)开放。 - ZeroTier 账号:需要在 ZeroTier 官方网站 my.zerotier.com 注册并创建网络。
2. 安装 ZeroTier
2.1 添加 ZeroTier 官方仓库并安装
sudo yum install epel-release -y
curl -s https://install.zerotier.com | sudo bash
2.2 启动 ZeroTier 并设置开机自启
sudo systemctl enable --now zerotier-one
2.3 确保 ZeroTier 正常运行
sudo zerotier-cli info
示例输出:
200 info 89abcdef01 1.10.1 ONLINE
记录 89abcdef01 作为 Node ID。
3. 加入 ZeroTier 网络
3.1 在 ZeroTier Web 控制台创建网络
- 访问 ZeroTier Web 控制台。
- 创建新的网络,并记录 Network ID(如
a1b2c3d4e5)。
3.2 让服务器加入 ZeroTier 网络
sudo zerotier-cli join a1b2c3d4e5
3.3 确认网络状态
sudo zerotier-cli listnetworks
3.4 在 Web 控制台批准加入
进入 Members 页面,找到服务器的 Node ID,勾选 Auth 允许其加入。
3.5 查看 ZeroTier 分配的 IP
ip a | grep zt
示例输出:
inet 192.168.191.100/24
4. 配置 ZeroTier Moon 服务器
4.1 互联的原理
ZeroTier 通过 P2P(点对点) 连接设备,但如果设备之间由于 NAT(网络地址转换) 或 防火墙 限制无法直接互联,则需要借助 Moon 服务器充当中继,减少延迟并提高连接稳定性。
ZeroTier 互联的关键机制:
-
Direct P2P 连接:
- ZeroTier 会尝试让设备之间直接建立 UDP 连接。
- 通过 NAT 遍历技术(如 UDP Hole Punching)来实现。
-
Moon 服务器作用:
- 如果设备无法直接连接,则 Moon 服务器充当 固定节点,帮助客户端发现彼此并建立连接。
- Moon 不会中继数据,仅提供加速和稳定连接。
-
Planet 根服务器:
- ZeroTier 使用全球分布的 Planet 服务器进行设备发现和初始握手。
- Moon 服务器类似于本地 Planet,提高访问速度。
4.2 生成 Moon 配置
sudo zerotier-idtool initmoon /var/lib/zerotier-one/identity.public > moon.json
4.3 编辑 moon.json
{
"id": "xxxxxxxxxx",
"objtype": "moon",
"roots": [
{
"identity": "xxxxx",
"stableEndpoints": ["43.143.245.200/9993"]
}
]
}
4.4 生成并应用 Moon 配置
sudo zerotier-idtool genmoon moon.json
sudo cp *.moon /var/lib/zerotier-one/moons.d/
sudo systemctl restart zerotier-one
4.5 检查 Moon 是否生效
sudo zerotier-cli listmoons
如果返回 OK,说明 Moon 配置成功。
5. 让 Mac 和 Windows 连接 Moon
5.1 检查连接状态
zerotier-cli listpeers
如果看到 Moon (M) ,代表 Moon 服务器已连接。
5.2 手动绑定 Moon
zerotier-cli orbit 89abcdef01 89abcdef01
其中 89abcdef01 为服务器的 Node ID。
6. 测试互联
6.1 在 Mac 终端
ping 192.168.191.100
ssh username@192.168.191.100
6.2 在 Windows 终端
ping 192.168.191.101
ssh username@192.168.191.101
7. 总结
✅ 准备资源和环境
✅ 在 CentOS Stream 9 安装 ZeroTier
✅ 让服务器加入 ZeroTier 网络
✅ 配置 Moon 服务器
✅ 理解 ZeroTier 互联原理
✅ 让 Mac 和 Windows 连接 Moon
✅ 测试互联
通过以上步骤,我们成功搭建了一个基于 ZeroTier 的虚拟内网,并通过 Moon 服务器优化了连接性能。这样,无论身处何地,我们都可以通过 ZeroTier 安全、高效地访问远程设备,实现低延迟的内网穿透。