服务端部署(Linux Moon 节点)
前提准备
- 一具有公网IP的服务器。
- 确保服务器的防火墙开放
9993
端口(UDP)。
如果你只需要一键部署脚本请移步到下面部署脚本
操作步骤
下载并安装 ZeroTier:
curl -s https://install.zerotier.com/ | sudo bash
启动并设置自启:
systemctl start zerotier-one.service systemctl enable zerotier-one.service
加入网络:
zerotier-cli join <NetworkID>
替换
<NetworkID>
为实际的网络 ID,例如 63xxxxxxx
。进入安装目录:
cd /var/lib/zerotier-one/
生成节点配置:
zerotier-idtool initmoon identity.public > moon.json
编辑 moon.json
文件: 修改 moon.json
文件中的公网 IP 为服务器的实际公网地址:
... "stableEndpoints": [ "你的公网IP/9993" ]
生成签名:
zerotier-idtool genmoon moon.json
查看生成的文件名: 记录类似 000000xxxxxx.moon
的文件名。
移动文件到 moons.d
目录:
mkdir moons.d mv 000000xxxxxx.moon moons.d/
重启 ZeroTier 服务:
systemctl restart zerotier-one
导出 .moon
文件: 将 .moon
文件下载到本地,发放到需要的服务器进行配置。
客户端部署(Win&linux&android)
操作步骤
- 安装 ZeroTier 客户端:
- 从 ZeroTier 官网 下载并安装 Windows 版本的客户端。
- 进入安装目录:
- 默认路径为:
C:\ProgramData\ZeroTier\One
- 默认路径为:
- 创建
moons.d
文件夹:- 在上述路径下创建
moons.d
文件夹,需要管理员权限。
- 在上述路径下创建
- 放入
.moon
文件:- 将从服务端导出的
.moon
文件复制到moons.d
文件夹下。
- 将从服务端导出的
- 重启 ZeroTier 服务:
- 按
Win + R
,输入services.msc
打开服务管理。 - 找到
ZeroTier One
服务,右键选择重启。
- 按
- 检查配置:
- 以管理员权限打开
cmd
,运行zerotier-cli peers
- 如果输出中包含
moon
字段,则配置成功。
- 以管理员权限打开
linux导入节点与前面的moon部署方法相似,到安装完这一步后直接将准备好的moon文件放入moons.d即可
安卓由于官方客户端无法导入,所以请下载zerotier-fix,安装后选择入轨,导入上面提到的000000xxx.moon文件或输入moon名称和种子(一般与moon文件同名即可)进行导入
iOS暂时没有可以使用的自定义客户端
部署脚本
服务端部署脚本(Linux)
首先执行vim deploy_moon.sh
,将以下脚本保存并执行:
#!/bin/bash
# 检查是否为 root 用户
if [ "$EUID" -ne 0 ]; then
echo "请以 root 用户运行此脚本!"
exit 1
fi
# 安装 ZeroTier
curl -s https://install.zerotier.com/ | sudo bash
# 启动并设置服务自启
systemctl start zerotier-one.service
systemctl enable zerotier-one.service
# 提示用户输入 NetworkID
echo "请输入要加入的 ZeroTier 网络 ID:"
read NETWORK_ID
zerotier-cli join $NETWORK_ID
# 进入安装目录
cd /var/lib/zerotier-one/
# 生成节点配置文件
zerotier-idtool initmoon identity.public > moon.json
# 配置公网 IP
echo "请输入服务器的公网 IP 地址:"
read PUBLIC_IP
sed -i "s/\"stableEndpoints\":.*/\"stableEndpoints\": [\"$PUBLIC_IP\/9993\"]/" moon.json
# 生成签名
zerotier-idtool genmoon moon.json
# 创建 moons.d 目录并移动文件
mkdir -p moons.d
MOON_FILE=$(ls *.moon)
mv $MOON_FILE moons.d/
# 重启服务
systemctl restart zerotier-one
echo "Moon 节点部署完成!"
echo "请从以下路径下载 .moon 文件并配置到其他主机:"
echo "/var/lib/zerotier-one/moons.d/$MOON_FILE"
运行脚本 sudo bash deploy_moon.sh
客户端脚本(Windows)
创建新的文本文件,将文件名及后缀改为add_moon.bat
,保存并以管理员权限运行
@echo off
:: 检查是否以管理员权限运行
net session >nul 2>&1
if %errorlevel% neq 0 (
echo 请以管理员权限运行此脚本!
pause
exit /b
)
:: 配置路径变量
set ZT_PATH=C:\ProgramData\ZeroTier\One
set /p MOON_FILE=请输入 .moon 文件的完整路径:
:: 检查 ZeroTier 安装目录
if not exist "%ZT_PATH%" (
echo ZeroTier 安装目录未找到!
pause
exit /b
)
:: 创建 moons.d 目录
if not exist "%ZT_PATH%\moons.d" (
mkdir "%ZT_PATH%\moons.d"
echo 已创建 moons.d 目录。
) else (
echo moons.d 目录已存在。
)
:: 检查输入的 .moon 文件路径
if not exist "%MOON_FILE%" (
echo 无法找到 %MOON_FILE% 文件,请检查路径是否正确。
pause
exit /b
)
:: 复制 .moon 文件到 moons.d
copy "%MOON_FILE%" "%ZT_PATH%\moons.d\"
if %errorlevel% neq 0 (
echo 复制 .moon 文件失败!
pause
exit /b
)
:: 重启 ZeroTier 服务
sc stop "ZeroTierOneService"
if %errorlevel% neq 0 (
echo ZeroTier 服务强制停止,尝试直接启动服务...
)
pause
sc start "ZeroTierOneService"
if %errorlevel% neq 0 (
echo 启动 ZeroTier 服务失败!重试中
)
echo ZeroTier 配置已更新并生效。
:: 验证配置是否生效
echo 检查路由表中是否包含 moon...
zerotier-cli peers
pause
完成后若显示对应id的moon服务器,或者也可以自己在管理员模式下启动cmd执行zerotier-cli peers
,显示对应id的moon服务器则说明成功
Comments NOTHING