播客简报
简报文档:飞牛NAS部署ZeroTier接入个人服务器自建Moon服务器
来源: 飞牛nas部署zerotier接入个人服务器自建Moon服务器 – ∅ Psycho (文章日期:2025年5月2日)
概述:
这篇技术文章详细介绍了如何在飞牛NAS上利用ZeroTier接入个人服务器,并通过自建Moon服务器来优化ZeroTier网络的连接和速度。文章提供了从安装ZeroTier、配置Moon服务器到不同设备(Linux Docker、Windows、安卓)接入Moon服务器的详细步骤和命令。
主要主题和重要思想:
- 利用ZeroTier构建内网穿透和虚拟组网: 文章的核心思想是使用ZeroTier技术来实现在不同网络环境下的设备互联,形成一个虚拟的内网。这解决了传统VPN或端口转发可能遇到的复杂性或限制。
- 自建Moon服务器优化ZeroTier连接: ZeroTier默认使用官方Planet服务器进行P2P连接的协调。自建Moon服务器可以提供一个离用户更近、更稳定的连接点,从而可能优化连接速度和稳定性,尤其是在穿越NAT时。文章详细描述了搭建和配置Moon服务器的步骤。
- 飞牛NAS作为部署平台: 文章以飞牛NAS作为主要的部署环境,展示了如何在NAS上搭建ZeroTier环境并配置Moon服务器。这表明NAS设备不仅可以用于存储,还可以作为轻量级服务器来运行网络服务。
- 多平台接入和配置: 文章提供了在不同设备类型(Linux Docker容器、Windows客户端、安卓手机)上加入ZeroTier网络并配置Moon服务器的方法,体现了ZeroTier的跨平台特性和应用的广泛性。
重要事实和具体步骤:
- 前提条件: 需要开放防火墙的9993端口,这是ZeroTier用于P2P连接的关键端口。
- “注意:防护墙开启9993端口”
- 搭建Moon服务器步骤:安装ZeroTier:使用curl -s https://install.zerotier.com | sudo bash命令进行安装。
- 生成Moon配置文件:进入ZeroTier数据目录/var/lib/zerotier-one,使用zerotier-idtool initmoon identity.public > moon.json生成初始配置文件。
- 编辑Moon配置文件:修改moon.json文件,主要需要填入Moon服务器的ID、公共身份信息(identity)、稳定端点(stableEndpoints,包含公网服务器IP和9993端口)。
- 示例配置文件结构: { “id”: “96******8c”, “objtype”: “world”, “roots”: [ { “identity”: “11******8c:0:******”, “stableEndpoints”: [“公网服务器ip/9993”] } ], “signingKey”: “signingKey”, “signingKey_SECRET”: “signingKey_SECRET”, “updatesMustBeSignedBy”: “updatesMustBeSigned”, “worldType”: “moon” }
- 创建Moon服务器文件:使用zerotier-idtool genmoon moon.json生成以000000d开头,以.moon结尾的Moon文件。
- 导入Moon配置文件:创建moons.d目录mkdir /var/lib/zerotier-one/moons.d,并将生成的.moon文件复制到该目录cp 000000d******.moon ./moons.d/。
- 重启ZeroTier服务:systemctl restart zerotier-one。
- 设备接入Moon服务器:Linux (Debian/Docker): 进入ZeroTier环境(例如Docker容器内),先加入ZeroTier网络zerotier-cli join *zerotier网络代码*,然后指定轨道到Moon服务器zerotier-cli orbit *moon服务器网络代码 moon服务器网络代码*。
- “docker exec -it zerotier bash zerotier-cli join zerotier网络代码 zerotier-cli orbit moon服务器网络代码 moon服务器网络代码“
- Windows: 在终端(需要管理员权限)进入ZeroTier安装目录(例如C:\ProgramData\ZeroTier\One),使用命令zerotier-cli orbit [moon_id] [moon_id]加入Moon服务器。
- “cd C:\ProgramData\ZeroTier\One zerotier-cli orbit [moon_id] [moon_id] 要用命令要用终端管理员”
- 安卓手机: 推荐安装ZeroTier Fix应用。
- 常见错误: ZeroTier要成功打洞连接,至少需要连接的一端不是NAT4类型。如果两端都是NAT4,则可能无法连接。
- “zerotier打洞成功需要至少有一端不是nat4,如果两端都是nat4就无法连接上了”
- ZeroTier常用命令: 文章附录提供了包括info、listpeers、listnetworks、join、leave、set、get、listmoons、orbit、deorbit、dump等常用命令及其基本用法。
- “Usage: zerotier-cli [-switches] <command/path> [
总结:
这篇博客文章为希望通过ZeroTier实现设备互联,并通过自建Moon服务器优化连接的用户提供了一个清晰的指南。它涵盖了搭建环境、配置关键文件、以及在不同终端设备上进行接入的详细步骤和必要的命令。文章还提醒了NAT类型对连接成功的影响。对于想要在飞牛NAS或其他类似设备上部署ZeroTier并构建更高效虚拟网络的读者来说,这是一份实用的参考资料。

注意:防护墙开启9993端口
一、搭建moon服务器
安装zeortier
curl -s https://install.zerotier.com | sudo bash
生成 Moon 配置文件
cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public > moon.json
编辑Moon 配置文件
nano moon.json
{
"id": "96******8c",
"objtype": "world",
"roots": [
{
"identity": "11******8c:0:******",
"stableEndpoints": ["公网服务器ip/9993"]
}
],
"signingKey": "signingKey",
"signingKey_SECRET": "signingKey_SECRET",
"updatesMustBeSignedBy": "updatesMustBeSigned",
"worldType": "moon"
}
ctrl x退出 y确定
创建Moon服务器
zerotier-idtool genmoon moon.json
会成一个000000d.moon这个前缀的moon文件
mkdir /var/lib/zerotier-one/moons.d
将moon配置文件导入到moon文件夹中
cp 000000d******.moon ./moons.d/
这样就配置完成了
重启
systemctl restart zerotier-one
二、各个设备加入moon服务器
1)Linux(Debain)
docker容器布置
docker exec -it zerotier bash
zerotier-cli join *zerotier网络代码*
zerotier-cli orbit *moon服务器网络代码 moon服务器网络代码*
2)windows
Windows 客户端加入moon服务器
cd C:\ProgramData\ZeroTier\One
zerotier-cli orbit [moon_id] [moon_id]
要用命令要用终端管理员
3)安卓手机
安装zerotier Fix https://github.com/kaaass/ZerotierFix/releases
常见错误事项
zerotier打洞成功需要至少有一端不是nat4,如果两端都是nat4就无法连接上了
附录
zerotier常用命令
Usage: zerotier-cli [-switches] <command/path> [<args>]
Available switches:
-h - Display this help
-v - Show version
-j - Display full raw JSON output
-D<path> - ZeroTier home path for parameter auto-detect
-p<port> - HTTP port (default: auto)
-T<token> - Authentication token (default: auto)
Available commands:
info - Display status info
listpeers - List all peers
peers - List all peers (prettier)
listnetworks - List all networks
join <network ID> - Join a network
leave <network ID> - Leave a network
set <network ID> <setting> - Set a network setting
get <network ID> <setting> - Get a network setting
listmoons - List moons (federated root sets)
orbit <world ID> <seed> - Join a moon via any member root
deorbit <world ID> - Leave a moon
dump - Debug settings dump for support
Available settings:
Settings to use with [get/set] may include property names from
the JSON output of "zerotier-cli -j listnetworks". Additionally,
(ip, ip4, ip6, ip6plane, and ip6prefix can be used). For instance:
zerotier-cli get <network ID> ip6plane will return the 6PLANE address
assigned to this node.