在 CentOS Stream 9 配置 ZeroTier Moon 实现内网穿透

374 阅读3分钟

前言

在分布式网络环境中,远程访问和内网穿透是常见需求。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 控制台创建网络

  1. 访问 ZeroTier Web 控制台
  2. 创建新的网络,并记录 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 互联的关键机制

  1. Direct P2P 连接

    • ZeroTier 会尝试让设备之间直接建立 UDP 连接。
    • 通过 NAT 遍历技术(如 UDP Hole Punching)来实现。
  2. Moon 服务器作用

    • 如果设备无法直接连接,则 Moon 服务器充当 固定节点,帮助客户端发现彼此并建立连接。
    • Moon 不会中继数据,仅提供加速和稳定连接。
  3. 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 安全、高效地访问远程设备,实现低延迟的内网穿透。