4592 字
23 分钟

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 直接接进虚拟网)。

节点如何「认识」彼此? 流程大致是:

  1. 客户端启动后,先连 Planet(或你配置的 Moon / 私有控制器),上报自己的 Node ID 和可用的网络地址(公网 IP、NAT 类型等)。
  2. 当你 join 某个网络、且被 Controller 授权后,Planet/Controller 会把「同网络其他成员的地址线索」下发给你。
  3. 双方根据线索尝试多种路径打洞(直连优先);成功就是 P2P 直连,流量不经任何第三方。
  4. 若两端是对称型 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 注册并创建网络#

  1. 打开 ZeroTier Central,用邮箱或 GitHub 注册登录。
  2. 顶部点 Networks → Create a Network,系统会生成一个 16 位 Network ID
  3. 点进这个网络,在 Members 区你会看到「等待授权」的设备;IPv4 Auto-Assign 默认已开启(给你的虚拟网段,如 10.147.17.0/24)。

3.2 各平台加入网络#

Linux(Debian/Ubuntu)

Terminal window
# 一键安装
curl -s https://install.zerotier.com | sudo bash
# 加入网络(替换成你的 Network ID)
sudo zerotier-cli join a1b2c3d4e5f60718
# 查看状态
sudo zerotier-cli status
sudo zerotier-cli listnetworks

macOS / Windows:官网下载安装包,托盘图标里「Join Network」填入 Network ID 即可。macOS 需在「系统设置 → 隐私与安全性」允许网络扩展;Windows 要允许驱动安装。

iOS / Android:App Store / 应用商店搜 ZeroTier,添加 Network ID,开启开关。# 号表示已连接。

NAS(群晖 / 飞牛 fnOS / Docker)

Terminal window
# 群晖可用套件中心搜 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 zerotieruci 配置,把整台路由器后面的 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/24
accept tw.serveraccess and dest 10.10.20.0/24

常见操作:

  • drop:默认拒绝(ZeroTier 推荐「默认拒绝」的安全基线)。
  • accept / break:放行 / 跳出规则链。
  • tag <name> + enum:给成员打标签(在 Members 列表点成员 → Tags 选值)。
  • capability <name>:声明能力,在成员上勾选赋予。
  • 条件:ipprotocol tcp/udpsport/dportsrc/destzt 系列(来源/目标标签)。
Flow Rules vs Tailscale ACL

Tailscale 用 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:在网关节点开启转发 + 桥接

Terminal window
# 开启 IPv4 转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# ZeroTier 允许「托管路由」与「桥接」
sudo zerotier-cli set <networkid> allowManaged=1
sudo 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 设备以为流量来自网关自己。
Terminal window
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

做完后,外地手机 ping 192.168.1.50 即可通——这就是「把整段家里的网,安全地延伸到你的口袋里」。

七、全局出口节点(全流量走 ZeroTier)#

想让外地设备「借用」家里/机房的公网出口(类似 VPN 的全局模式),做法是在控制台把默认路由 0.0.0.0/0 指向那台出口节点,并让它开启 allowDefault=1

Terminal window
sudo zerotier-cli set <networkid> allowDefault=1
# 并确认该节点开了 IP 转发 + 出口 NAT
sudo 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

Terminal window
curl -s https://install.zerotier.com | sudo bash

步骤 2:生成 Moon 配置

Terminal window
# 找到本机 identity.public
cd /var/lib/zerotier-one
sudo 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 文件并启用

Terminal window
sudo zerotier-idtool genmoon moon.json
# 会把一个 000000abcdef1234.moon 文件生成在当前目录
sudo mkdir -p /var/lib/zerotier-one/moons.d
sudo mv 000000abcdef1234.moon /var/lib/zerotier-one/moons.d/
sudo systemctl restart zerotier-one

步骤 4:成员「orbit」这个 Moon

在每台需要走这个 Moon 的成员上执行:

Terminal window
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 自建#

把本站三篇组网指南放回一张表里,方便你按场景选型:

维度ZeroTierTailscaleWireGuard 自建
底层协议自有(VL1/VL2)WireGuardWireGuard
配置难度低(加网即通)几乎零配置中等(手动配密钥/路由)
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
Terminal window
# 排错三板斧
sudo zerotier-cli status # 看服务状态
sudo zerotier-cli listnetworks # 看网络是否 OK
sudo zerotier-cli listpeers # 看节点连接(LEAF/ROOT/RELAY)

十二、安全建议与总结#

安全基线

  1. 网络保持 Private:别开 Public,避免陌生人加入你的虚拟网。
  2. 最小授权:Flow Rules 默认 drop,按需 accept;不用的成员及时取消 Auth。
  3. 防火墙:节点本机防火墙放行 9993/udp 即可,不要裸奔开放其他端口。
  4. Moon/控制器改密:自建 ztncui 一定要改默认密码、限制访问 IP。
  5. 不要共用 Network ID 当邀请码公开:它等于「门牌号」,泄露只增加被骚扰风险(反正要授权),但好习惯是不乱贴。

本文回顾 我们走完了 ZeroTier 的完整链路:

  • 原理上,它用 VL1(加密传输)+ VL2(虚拟二层) 在节点间建 P2P 加密隧道,靠 Planet 协调、靠打洞直连、打不通才中继;
  • 使用上,注册 → 建网 → 全平台 join → 控制台授权,5 分钟组网;
  • 进阶上,Flow Rules 做访问控制、子网路由/桥接把真实 LAN 延伸进来、全局出口 当 VPN 用;
  • 优化上,Moon 自建中继解决国内握手慢、ztncui 私有控制器做到完全自托管;
  • 选型上,和 Tailscale、WireGuard 自建各有侧重(见第十节对比表)。

把本文和 《Tailscale 零配置组网完全指南》《WireGuard VPN 自建完全指南》 一起读,你就握住了 2026 年「远程访问 / 异地组网」的全部主流武器。下一步,可以挑你手头最需要的场景落地——比如先给家里 NAS 装一个 ZeroTier + 自建 Moon,出门也能像在局域网一样访问它。

相关阅读

ZeroTier 完全指南 2026:零配置 P2P 组网 + 全平台客户端 + Moon 自建中继 + ztncui 私有控制器
https://971918.xyz/posts/docs/zerotier-complete-guide/
作者
九所长
发布于
2026-08-09
许可协议
CC BY-NC-SA 4.0