ZeroTier 完全指南 2026:零配置 P2P 组网 + 全平台客户端 + Moon 自建中继 + ztncui 私有控制器
ZeroTier 是「异地组网 / 内网穿透」领域和 Tailscale 齐名的另一块基石。它和本站 《Tailscale 零配置组网完全指南》、《WireGuard VPN 自建完全指南》 一起,构成了 2026 年「远程访问 / 虚拟局域网」的三条主流路线。区别是:WireGuard 要自己配密钥和路由,Tailscale 把脏活收进控制面,而 ZeroTier 走的是一条「自己的加密协议 + 全球根服务器协调」的路线——同样是零配置,但它在「设备特别多」「想完全自建控制器」这两个场景下更有优势。
阅读提示本文与 《Tailscale 零配置组网完全指南》、《WireGuard VPN 自建完全指南》、《飞牛NAS 全平台远程访问》 互为补充:WireGuard 讲「自己动手搭隧道」,Tailscale 和 ZeroTier 讲「零配置组网」的两种实现,飞牛 NAS 指南则把这类工具列为「最推荐」的远程访问方案。三/四篇合起来是 2026 年「远程访问 / 异地组网」的完整图谱。
本文把它讲透:从原理、注册建网、全平台加入,到 Flow Rules 访问控制、子网路由、全局出口,再到 Moon 自建中继提速、ztncui 自建私有控制器,最后和 Tailscale / WireGuard 做横向对比、给出国内网络下的排错清单。读完你就能把家里的 NAS、公司的服务器、手机、VPS 瞬间「拼」进同一个虚拟局域网。
一、什么是 ZeroTier
一句话:ZeroTier 是一个零配置的、加密的 P2P 虚拟局域网(SDN overlay network)。
传统 VPN 需要一台中心服务器做「网关」,所有流量都绕它走;而 ZeroTier 让成员节点之间尽量直接建立加密隧道(P2P 直连),只在实在打不通时才借中继。你不需要公网 IP、不需要配置端口转发、不需要手动交换密钥——注册一个账号、创建一个网络、把设备「加进去」,节点之间就自动连通了,像它们连在同一个交换机上。
几个关键概念先建立起来,后面才好理解:
- Network ID(网络 ID):一串 16 位十六进制,类似
a1b2c3d4e5f60718,是网络的「门牌号」。别人凭这个 ID 就能申请加入(需你授权)。 - Node ID(节点 ID):每个 ZeroTier 客户端生成的全球唯一 40-bit 地址(形如
8a:b2:...的 10 位十进制,或 16 位十六进制),相当于这块网卡的 MAC/身份证。 - Planet(行星):ZeroTier 官方运营的全球根服务器集群,负责帮节点「互相认识」(地址协调)。免费、默认启用。
- Moon(月亮):用户自己运行的根服务器(中继/协调点),用来改善穿透、降低延迟,尤其适合国内网络。
- Controller(控制器):管理网络、下发配置(成员、路由、规则)的角色。官方是 ZeroTier Central(my.zerotier.com),也可以自建(ztncui / ztnet)。
类比:Planet 是「公共电话黄页」,Moon 是「你自建的内部通讯录中转站」,Controller 是「网络管理员」。
二、核心原理:VL1 + VL2、Planet/Moon、NAT 穿透
ZeroTier 的协议栈分两层,这是它和 WireGuard/Tailscale 最本质的区别:
- VL1(Virtual Layer 1)——加密传输层。负责节点之间的加密、认证、NAT 穿透和可靠/不可靠传输,类似一条条点对点加密隧道。它借鉴了 WebRTC 的 ICE/STUN 思路来做打洞。
- VL2(Virtual Layer 2)——虚拟二层(以太网)层。在 VL1 之上模拟出一个「交换机」,让成员像连在同一台二层交换机上,能拿到 MAC 地址、跑 ARP、做桥接。这就是为什么 ZeroTier 能做二层桥接(把真实 LAN 直接接进虚拟网)。
节点如何「认识」彼此? 流程大致是:
- 客户端启动后,先连 Planet(或你配置的 Moon / 私有控制器),上报自己的 Node ID 和可用的网络地址(公网 IP、NAT 类型等)。
- 当你
join某个网络、且被 Controller 授权后,Planet/Controller 会把「同网络其他成员的地址线索」下发给你。 - 双方根据线索尝试多种路径打洞(直连优先);成功就是 P2P 直连,流量不经任何第三方。
- 若两端是对称型 NAT(Symmetric NAT)等难打洞场景,则回退到 中继(relay / root) 转发密文——ZeroTier 的 root(Planet/Moon)可以中转,但只看得到密文。
IP 地址从哪来? 每个网络有一个「网络段」,Controller 给成员自动分配:
- IPv4:通常是
10.x.x.x段(可在控制台改)。 - IPv6:两种方式——
6PLANE(每个网络一个 /80,基于网络 ID 派生,全局唯一)或RFC4193(类似 fd00::/7 的私有段)。默认常用 6PLANE。
正因为「二层 + 可桥接 + 自动分配 IP」,ZeroTier 既能当三层 VPN 用,也能当二层桥接用——后者是它比纯三层方案灵活的地方。
三、5 分钟快速上手:注册、建网、全平台加入
3.1 注册并创建网络
- 打开 ZeroTier Central,用邮箱或 GitHub 注册登录。
- 顶部点 Networks → Create a Network,系统会生成一个 16 位 Network ID。
- 点进这个网络,在
Members区你会看到「等待授权」的设备;IPv4 Auto-Assign默认已开启(给你的虚拟网段,如10.147.17.0/24)。
3.2 各平台加入网络
Linux(Debian/Ubuntu)
# 一键安装curl -s https://install.zerotier.com | sudo bash
# 加入网络(替换成你的 Network ID)sudo zerotier-cli join a1b2c3d4e5f60718
# 查看状态sudo zerotier-cli statussudo zerotier-cli listnetworksmacOS / Windows:官网下载安装包,托盘图标里「Join Network」填入 Network ID 即可。macOS 需在「系统设置 → 隐私与安全性」允许网络扩展;Windows 要允许驱动安装。
iOS / Android:App Store / 应用商店搜 ZeroTier,添加 Network ID,开启开关。# 号表示已连接。
NAS(群晖 / 飞牛 fnOS / Docker):
# 群晖可用套件中心搜 ZeroTier 或 Docker 部署docker run -d --name zerotier \ --restart=always \ --device=/dev/net/tun \ --net=host \ --cap-add=NET_ADMIN \ --cap-add=SYS_ADMIN \ -v /var/lib/zerotier-one:/var/lib/zerotier-one \ bltavares/zerotier:latest# 进入容器加入网络docker exec -it zerotier zerotier-cli join a1b2c3d4e5f60718路由器(OpenWrt):opkg install zerotier 后 uci 配置,把整台路由器后面的 LAN 都带进虚拟网(见第六节子网路由)。
3.3 在控制台授权
回到 ZeroTier Central 的 Networks 页面,在 Members 列表里,把你刚加入的节点勾选 Auth(授权)。几秒后该节点就会拿到虚拟 IP,互相 ping 得通了。
首次连通检查授权后执行
ping <对方虚拟IP>。能通说明 P2P 已建立。如果延迟极高(>200ms)或走中继,多半是 NAT 类型导致没打洞成功,看第八节自建 Moon。
四、网络管理控制台:Members / IP / Routes / Flow Rules
ZeroTier Central 的网络详情页是「控制中枢」,常用面板:
- Members(成员):勾选
Auth授权;Address是节点 ID;Managed IPs是分配的虚拟 IP;Last Seen看在线状态;Physical IP看对方真实出口。 - IPv4 Auto-Assign / IPv6 Auto-Assign:开关自动分配;可手动指定网段(如改成
10.10.10.0/24)。 - Routes(路由):声明「哪些目标网段走这个 ZeroTier 网络、由哪个成员转发」。这是做子网路由 / 全局出口的关键(第五、六、七节)。
- Flow Rules(流规则):ZeroTier 自带的防火墙/ACL 规则语言,控制成员之间能访问什么(第五节详讲)。
- Access Control:旧版有「Certificate of Ownership」改为「Easy / Certificate」模式;普通用 Easy 即可。
- Network Settings:网络名称、描述、是否私有(Private,默认,需授权才能加入)、多播(Multicast)开关。
小知识:网络默认是 Private(私有),别人即使拿到 Network ID 也进不来,必须你授权;改成 Public 则任何人都能直接加入——除非你做临时演示,否则别开。
五、Flow Rules 访问控制
ZeroTier 的 Flow Rules 是它相比 Tailscale ACL 更「底层、更灵活」的访问控制机制,基于 capabilities(能力)+ tags(标签) 的零信任模型。
规则写在控制台的 Flow Rules 文本框,基础语法:
# 默认先全部丢弃,再逐条放行drop# 放行已建立连接的回包accept ipprotocol udp and dport 67-68 # DHCP# 定义一个 tag:部门tag office id 1000 enum 0 IT enum 1 Finance# 定义能力:能访问服务器网段capability serveraccess# 允许拥有 serveraccess 能力的成员访问 10.10.20.0/24accept tw.serveraccess and dest 10.10.20.0/24常见操作:
drop:默认拒绝(ZeroTier 推荐「默认拒绝」的安全基线)。accept/break:放行 / 跳出规则链。tag <name>+enum:给成员打标签(在 Members 列表点成员 →Tags选值)。capability <name>:声明能力,在成员上勾选赋予。- 条件:
ipprotocol tcp/udp、sport/dport、src/dest、zt系列(来源/目标标签)。
Flow Rules vs Tailscale ACLTailscale 用
acl.hujson(主机/用户组 + 端口的声明式策略),更「易懂」;ZeroTier 的 Flow Rules 更接近网络层(可基于标签做任意 L3/L4 过滤、甚至二层 MAC 规则),更灵活但上手略陡。家庭/小团队用默认放行 + 简单 tag 即可,不必一上来就写复杂规则。
六、子网路由与桥接(把真实 LAN 暴露进虚拟网)
这是 ZeroTier 的杀手锏之一:让虚拟网里的成员能直接访问某台成员身后真实局域网的设备(比如家里路由器下的摄像头、NAS 的管理页、公司内网打印机)。
场景:家里一台 Linux 小主机装了 ZeroTier,背后是 192.168.1.0/24 的真实 LAN。想让外地手机通过 ZeroTier 直接访问 192.168.1.50 的 NAS。
步骤 A:在控制台声明路由
网络详情 → Routes → 添加:
- Destination:
192.168.1.0/24 - (Via): 留空或填那台 Linux 成员的 Node ID(ZeroTier 会自动关联)
步骤 B:在网关节点开启转发 + 桥接
# 开启 IPv4 转发echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.confsudo sysctl -p
# ZeroTier 允许「托管路由」与「桥接」sudo zerotier-cli set <networkid> allowManaged=1sudo zerotier-cli set <networkid> allowGlobal=1 # 若用到全局出口sudo zerotier-cli set <networkid> allowDefault=0 # 默认不要抢默认路由若要做二层桥接(让虚拟网成员拿到真实 LAN 的同段 IP),还需用 bridge 把 zerotier 虚拟网卡和物理网卡桥接(如 brctl / ip link),略复杂,家庭场景一般用「三层路由」就够,不必桥接。
步骤 C:成员侧加回程路由
家里 LAN 里的设备(如摄像头)默认不知道回包给 10.x 虚拟网,需要:
- 在路由器上加一条静态路由:
10.x.0.0/24 → 192.168.1.网关节点IP;或在网关 Linux 上做iptables MASQUERADE做源地址转换(SNAT),让 LAN 设备以为流量来自网关自己。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE做完后,外地手机 ping 192.168.1.50 即可通——这就是「把整段家里的网,安全地延伸到你的口袋里」。
七、全局出口节点(全流量走 ZeroTier)
想让外地设备「借用」家里/机房的公网出口(类似 VPN 的全局模式),做法是在控制台把默认路由 0.0.0.0/0 指向那台出口节点,并让它开启 allowDefault=1:
sudo zerotier-cli set <networkid> allowDefault=1# 并确认该节点开了 IP 转发 + 出口 NATsudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE控制台 Routes 加:
- Destination:
0.0.0.0/0 - Via: 出口节点 Node ID
出口节点 vs 分流全局出口(
0.0.0.0/0)会把成员所有流量都从家里走,延迟高、家里带宽成瓶颈。多数情况你只需要「访问虚拟网资源」或「访问家里 LAN」,用第六节子网路由即可,别一上来开全局。需要精细分流(国内直连/国外走出口)时,可在客户端配合策略路由或只给特定目标加路由。
八、Moon 自建根中继(国内提速 / 穿透)
如前所述,Moon 不是数据必经之路,而是「帮节点先碰头」的协调根。国内网络到官方 Planet 偶尔慢,自建 Moon 能让握手更稳、打洞更顺、延迟更低。它非常轻量,一台 1 核小机即可。
步骤 1:在公网服务器安装 zerotier-one
curl -s https://install.zerotier.com | sudo bash步骤 2:生成 Moon 配置
# 找到本机 identity.publiccd /var/lib/zerotier-onesudo zerotier-idtool initmoon identity.public > moon.json# 编辑 moon.json,在 "roots" 里给该 root 加上 stableEndpoints(你的公网IP:9993)sudo nano moon.json编辑后类似:
{ "id": "abcdef1234", "objtype": "moon", "roots": [ { "identity": "abcdef1234:0:1:....", "stableEndpoints": ["1.2.3.4/9993"] } ], "signing": { ... }}步骤 3:生成 moon 文件并启用
sudo zerotier-idtool genmoon moon.json# 会把一个 000000abcdef1234.moon 文件生成在当前目录sudo mkdir -p /var/lib/zerotier-one/moons.dsudo mv 000000abcdef1234.moon /var/lib/zerotier-one/moons.d/sudo systemctl restart zerotier-one步骤 4:成员「orbit」这个 Moon
在每台需要走这个 Moon 的成员上执行:
sudo zerotier-cli orbit abcdef1234 abcdef1234 # 两个参数都是 Moon 的 ID# 重启 zerotier-one 生效sudo systemctl restart zerotier-one之后成员会优先通过你的 Moon 协调,zerotier-cli listpeers 里能看到你的 Moon 节点(带 MOON 标记),状态 LEAF/ROOT 正常即可。
Moon 与数据隐私Moon 只参与「握手协调」,不参与「数据转发」(除非真的打不通才中继)。所以自建 Moon 既能提速,又不必担心数据经它泄露——它看不到明文。想要数据也绝不走第三方,见第九节私有控制器。
九、自建私有控制器(ztncui / ztnet)
Moon 只是「协调根」,网络的管理(成员授权、路由、Flow Rules)仍在官方 ZeroTier Central。如果你想彻底脱离官方服务(隐私最大化、或设备超过免费额度、或管理多个网络),就自建 Controller。主流方案:
- ztncui:老牌 Web 控制台,轻量,
docker-compose一把梭,适合个人。 - ztnet:较新的开源面板,UI 更现代,功能更全(带用户/网络管理),推荐新部署。
ztncui 快速部署(Docker)
# docker-compose.yml 示例version: "3"services: ztncui: image: keynetworks/ztncui container_name: ztncui restart: always ports: - "3443:3443" volumes: - ./ztncui:/opt/ztncui/etc environment: - ZT_TOKEN=<你的zerotier-one的authtoken,在/var/lib/zerotier-one/authtoken.secret> - HTTP_PORT=3443 - HTTP_ALL_INTERFACES=yes部署后访问 https://你的IP:3443,用默认账号 admin / 密码 password(务必改密)登录,即可创建网络、管理成员、下发路由——完全替代 my.zerotier.com。配合第八节的 Moon,你就拥有了「私有的、国内畅通的、不限设备」的完整组网栈。
自建控制器的取舍对绝大多数个人/家庭用户,Moon(第八节)已经够用——既有提速,又保留官方控制台的便利。只有当你明确要摆脱官方 Central(如设备超 25 台、强隐私诉求、企业多网络)时,才上 ztncui/ztnet。别为「自建」而自建,增加的运维成本要值得。
十、ZeroTier vs Tailscale vs WireGuard 自建
把本站三篇组网指南放回一张表里,方便你按场景选型:
| 维度 | ZeroTier | Tailscale | WireGuard 自建 |
|---|---|---|---|
| 底层协议 | 自有(VL1/VL2) | WireGuard | WireGuard |
| 配置难度 | 低(加网即通) | 几乎零配置 | 中等(手动配密钥/路由) |
| NAT 穿透 | 自动(内置打洞) | 自动(内置打洞) | 需公网 IP 或手动 |
| 控制面 | 官方 / 可自建 ztncui | 官方 / 可自建 headscale | 自己管理 |
| 中继提速 | Moon(自建根) | DERP(自建中继) | 无(直连或自建中转) |
| 依赖公网 IP | 不需要 | 不需要 | 建议有(否则需中转) |
| 免费额度 | 每网络 25 设备 | 个人 3 用户/100 设备 | 无限制(自己服务器) |
| 二层桥接 | 原生支持(VL2) | 不支持(纯三层) | 需额外配置 |
| 国内可用性 | Planet 偶受限,Moon 可解 | 控制面可能受限 | 完全自托管,最稳 |
| 适合场景 | 设备多 / 想自建控制器 | 快速异地组网/远程访问 | 完全可控 / 有公网 IP |
结论:有公网 IP、追求完全自主 → WireGuard 自建;想几分钟搞定、设备不多 → Tailscale;设备特别多、或想完全自建控制器与二层桥接 → ZeroTier。 三者并不互斥——很多人 WireGuard 做主隧道、Tailscale/ZeroTier 做备用远程访问。
十一、国内网络注意事项与排错
国内可用性问题
- 数据面(节点间实际流量)是 P2P 直连,不经官方,内容隐私无忧。
- 握手阶段连 Planet 在部分网络偏慢,表现为「加入后一直 REQUESTING_CONFIGURATION」或授权了却不通 → 自建 Moon(第八节)是最有效的药。
- 若所在网络封堵 UDP 9993(ZeroTier 默认端口),可改端口或在 Moon 上用
stableEndpoints指定其他端口;极端情况走 TCP(性能差,仅应急)。
常见排错清单
| 现象 | 可能原因 | 处理 |
|---|---|---|
zerotier-cli status 显示 OFFLINE | 服务没起 | sudo systemctl restart zerotier-one |
已 join 但一直 ACCESS_DENIED | 控制台没授权 | 回 Central 勾选 Auth |
| 授权了但 ping 不通 | 走中继/没打洞 / 防火墙 | listpeers 看是否 RELAY;查本机防火墙放行 9993/udp |
| 延迟异常高(>200ms) | 走了中继 | 自建 Moon;检查两端 NAT 类型 |
| 子网路由不通 | 网关没开转发/没加回程 | 第六节步骤 B/C 重做 ip_forward 与 SNAT/静态路由 |
| iOS 连上但无网 | 系统未授权网络扩展 | 设置 → 通用 → VPN 与设备管理,允许 ZeroTier |
# 排错三板斧sudo zerotier-cli status # 看服务状态sudo zerotier-cli listnetworks # 看网络是否 OKsudo zerotier-cli listpeers # 看节点连接(LEAF/ROOT/RELAY)十二、安全建议与总结
安全基线
- 网络保持 Private:别开 Public,避免陌生人加入你的虚拟网。
- 最小授权:Flow Rules 默认
drop,按需accept;不用的成员及时取消 Auth。 - 防火墙:节点本机防火墙放行
9993/udp即可,不要裸奔开放其他端口。 - Moon/控制器改密:自建 ztncui 一定要改默认密码、限制访问 IP。
- 不要共用 Network ID 当邀请码公开:它等于「门牌号」,泄露只增加被骚扰风险(反正要授权),但好习惯是不乱贴。
本文回顾 我们走完了 ZeroTier 的完整链路:
- 原理上,它用 VL1(加密传输)+ VL2(虚拟二层) 在节点间建 P2P 加密隧道,靠 Planet 协调、靠打洞直连、打不通才中继;
- 使用上,注册 → 建网 → 全平台
join→ 控制台授权,5 分钟组网; - 进阶上,Flow Rules 做访问控制、子网路由/桥接把真实 LAN 延伸进来、全局出口 当 VPN 用;
- 优化上,Moon 自建中继解决国内握手慢、ztncui 私有控制器做到完全自托管;
- 选型上,和 Tailscale、WireGuard 自建各有侧重(见第十节对比表)。
把本文和 《Tailscale 零配置组网完全指南》、《WireGuard VPN 自建完全指南》 一起读,你就握住了 2026 年「远程访问 / 异地组网」的全部主流武器。下一步,可以挑你手头最需要的场景落地——比如先给家里 NAS 装一个 ZeroTier + 自建 Moon,出门也能像在局域网一样访问它。
相关阅读