
1. ZeroTier 是什么ZeroTier 是一套开源的软件定义广域网SD-WAN与虚拟局域网组网系统。它能够在不同地域、不同网络环境下的设备之间构建出一个类似局域网的虚拟二层以太网。无论这些设备位于家庭宽带、公司内网、云服务器还是移动蜂窝网络之后只要能够访问互联网就可以通过 ZeroTier 组成一个逻辑上互通的私有网络。从用户的直观体验来看ZeroTier 创建的虚拟网络就像一个架设在互联网之上的交换机。每一台加入网络的设备都会获得一个虚拟网卡和一个虚拟 IP 地址设备之间可以直接通过这个虚拟 IP 相互访问就像它们连接在同一个物理交换机上一样。对于上层应用而言ZeroTier 网络与普通局域网几乎没有区别SSH、远程桌面、SMB 文件共享、数据库连接、游戏联机、Kubernetes 集群通信等场景都可以直接使用。ZeroTier 的核心特点可以概括为以下几个方面虚拟二层网络ZeroTier 模拟的是以太网二层因此 ARP、广播、组播、IPv4、IPv6 等协议都可以在虚拟网络中正常工作。这与很多只能提供三层路由的 VPN 方案存在本质区别。自动 NAT 穿透ZeroTier 内置了多种 NAT 穿透机制大多数情况下能够在两个没有公网 IP 的设备之间自动建立端到端的 P2P 加密通道无需手动配置端口映射。端到端加密所有数据包在离开本机之前就会被加密只有目标设备才能解密。即使流量经过 ZeroTier 的根服务器或中继节点也无法读取明文内容。中心化控制与去中心化传输控制平面由网络控制器负责成员身份、IP 分配和证书签发而数据平面尽量采用 P2P 直连。控制与数据分离的设计兼顾了易用性和性能。跨平台支持ZeroTier 官方提供 Windows、macOS、Linux、Android、iOS、FreeBSD 等客户端同时支持 OpenWrt、MikroTik RouterOS、群晖 NAS、Docker 等环境部署。开源与自托管核心代码开源用户既可以使用 ZeroTier 官方提供的免费基础设施也可以自行搭建私有根服务器、Moon 和网络控制器。ZeroTier 的典型应用场景包括异地办公组网、远程访问家庭或公司设备、多台云服务器内网互联、分布式集群与容器网络、远程开发与调试、游戏虚拟局域网联机、物联网设备管理以及跨地域的数据库主从复制等。2. 为什么要用 ZeroTier在 ZeroTier 出现之前要实现跨地域的私有网络互联通常有以下几种方案传统 VPN、专线、端口转发、反向代理以及后来的 WireGuard、Tailscale 等现代方案。ZeroTier 的定位与这些方案既有重叠又有明显差异。传统 VPN 通常采用客户端与服务器之间的中心辐射模型。客户端的所有流量需要先汇聚到 VPN 服务器再由服务器转发到目标网络。这种架构的问题在于第一服务器成为性能瓶颈和单点故障第二客户端之间的流量需要绕行服务器增加延迟第三配置复杂尤其是大型网络中需要维护复杂的路由和密钥分发。ZeroTier 则尽量建立设备之间的 P2P 直连根服务器只在初始握手和无法直连时的中继场景中承担辅助角色。与 WireGuard 相比WireGuard 虽然性能优秀、协议极简但它本质上是一个点对点的三层隧道协议内核态实现要求较高而且原生并没有内置 NAT 穿透、密钥自动分发、成员管理和虚拟网段自动分配等能力。构建一个多节点的 WireGuard 网络通常需要额外维护配置、脚本或引入其他编排工具。ZeroTier 则将成员管理、证书签发、IP 分配和规则下发全部集成到一个统一的控制平面中用户只需要在 Web 控制台或命令行中加入设备即可。与 Tailscale 相比Tailscale 建立在 WireGuard 之上提供了良好的身份管理和 NAT 穿透体验但 Tailscale 更偏向于基于身份的三层访问控制其深度集成了 OAuth、SSO 等企业身份系统。ZeroTier 则更强调虚拟二层网络对于需要广播、组播、ARP 以及跨网段二层透传的场景更为友好。此外Tailscale 的控制服务默认依赖商业服务虽然也有开源的 Headscale但整体生态和部署复杂度略有不同。综合来看ZeroTier 的核心优势在于使用简单几分钟即可建立可用的跨地域私有网络。二层虚拟网络兼容大量传统局域网应用。自动 NAT 穿透和加密减少运维负担。控制平面与数据平面分离性能与安全性兼顾。支持自托管基础设施满足隐私和安全合规需求。3. ZeroTier 核心概念理解 ZeroTier 的核心概念是掌握其原理和进行高级配置的前提。下面逐一介绍网络 ID、节点、网络控制器、根服务器、Moon、虚拟网卡等关键概念。3.1 节点 Node节点是 ZeroTier 网络中的基本成员通常对应一台运行了 ZeroTier 客户端的设备。每个节点在首次启动时会生成一个 10 字节的节点地址Node ID同时生成一对公私钥。节点地址可以理解为该设备在 ZeroTier 网络中的身份标识公钥用于其他节点验证其身份私钥则用于签名和加密协商。节点地址通常显示为 10 位十六进制字符串例如ab12cd34ef。需要注意的是节点地址并不等同于 IP 地址它是在 ZeroTier 协议层的身份标识。一个物理设备上可以运行多个 ZeroTier 实例但通常一个操作系统用户对应一个节点身份。节点身份信息一般保存在用户目录下的identity.secret和identity.public文件中。3.2 网络 Network 与网络 IDZeroTier 中的一个虚拟网络拥有一个全局唯一的 16 位十六进制网络 ID例如1d719394045a2d1c。网络 ID 既像传统局域网中的网段标识也像加入该网络的凭据。设备通过指定网络 ID 来申请加入对应的虚拟网络。每个虚拟网络由网络控制器管理控制器决定哪些节点可以加入、节点获得什么 IP、网络采用什么路由策略和流量规则。一个节点可以同时加入多个不同的 ZeroTier 网络每个网络对应一个独立的虚拟网卡。3.3 网络控制器 Network Controller网络控制器是 ZeroTier 控制平面的核心。它负责维护网络的成员列表、节点证书、IP 分配策略、路由表和流量规则。当一个节点请求加入网络时需要向控制器证明自己的身份控制器验证通过后会签发成员证书并下发网络配置。ZeroTier 官方提供的网络控制台my.zerotier.com本质上就是一个托管在云端的网络控制器。用户也可以使用ztctl等工具自行搭建私有控制器实现在完全没有官方服务参与的情况下管理网络。自建控制器适合对数据主权、合规性或离线环境有严格要求的企业用户。3.4 根服务器 Root Server 与 Planet根服务器是 ZeroTier 全球基础设施的组成部分。ZeroTier 维护着一组被称为 Planet 的根服务器集群承担节点发现、网络配置下发和全球时钟同步等基础服务。每个 ZeroTier 客户端都内置了 Planet 的地址和公钥信息。根服务器并不参与普通用户数据的转发。它的作用类似于互联网中的 DNS 根服务器帮助节点在初始阶段找到网络控制器和其他节点。一旦节点之间建立了直接联系后续通信就不再依赖根服务器。因此即使官方根服务器暂时不可达已经建立连接的虚拟网络仍然可以继续工作但新节点加入和节点发现可能会受到影响。3.5 Moon 私有根服务器Moon 是用户自行架设的类根服务器节点。通过配置 Moon用户可以让自己的设备优先通过私有 Moon 进行节点发现和握手而不是依赖官方的 Planet 根服务器。Moon 的主要价值在于提高节点发现速度降低首次连接延迟。在官方根服务器不可达或网络受限时提供替代路径。增强隐私减少对官方基础设施的依赖。为无法直接连接官方 Planet 的内网环境提供桥接。需要注意的是Moon 本身只提供根服务器级别的辅助功能实际的网络控制仍然由网络控制器完成。3.6 虚拟网卡 Virtual Network AdapterZeroTier 客户端会在操作系统中创建一个虚拟网卡通常命名为ztxxxxxxxx。该虚拟网卡具有自己的 MAC 地址、MTU 和 IP 地址。操作系统将虚拟网卡视为普通以太网卡因此所有依赖网络的应用都可以透明地使用它。当应用向虚拟网卡发送数据包时ZeroTier 客户端会捕获这些以太网帧经过加密、封装后通过底层物理网络传输。在接收端ZeroTier 客户端完成解密、解封装再将原始以太网帧注入虚拟网卡交给上层应用。整个过程对应用透明仿佛两台设备真的处于同一链路。4. ZeroTier 整体架构ZeroTier 的架构设计采用了控制平面与数据平面分离的思想。控制平面关注成员身份、证书签发和策略下发数据平面关注节点之间的端到端加密通信。这种分离使得系统既具备中心化管理的便利性又能够充分发挥 P2P 直连的性能优势。整体架构可以从四个层次来理解全球根基础设施、网络控制器、节点以及虚拟网络。4.1 全球根基础设施 PlanetZeroTier 官方运行的 Planet 根服务器在逻辑上承担以下职责作为节点首次启动时的锚点。客户端通过内置的 Planet 信息与根服务器建立初始联系。提供全球时间同步信息帮助节点间确定证书有效期和消息时间戳。辅助节点发现网络控制器。节点询问根服务器某个网络 ID 的控制器位于何处。在极端情况下提供路径提示帮助节点之间建立通信。Planet 的设计强调最小权限。根服务器不保存用户流量内容也不参与数据加密密钥的协商。即使在最坏情况下根服务器被攻破攻击者也只能观察有限的元数据无法解密用户数据。4.2 网络控制器网络控制器是每个虚拟网络的管理核心。它持有一个密钥对用于签发成员证书和网络配置。控制器不需要处理数据流量因此其性能要求不高一台小型服务器即可管理成百上千个节点。控制器内部维护着以下信息成员列表哪些节点 ID 被授权加入该网络。节点证书为每个加入节点签发的短期或长期证书。IP 分配策略节点应使用什么 IPv4 或 IPv6 地址。路由表网络内的子网路由规则。流量规则允许或禁止特定协议、端口、地址范围的传输。IP 分配池自动分配 IP 的范围。ZeroTier 官方提供的免费账户允许用户创建多个网络每个网络默认支持最多 25 个节点适合个人和小团队使用。企业版则提供更大节点容量和更多高级管理功能。4.3 节点与虚拟网卡每个节点上的 ZeroTier 客户端通常包含以下几个组件核心引擎使用 C 编写负责协议处理、加密、NAT 穿透、路径选择等核心逻辑。虚拟网卡驱动在 Windows、macOS、Linux 等系统中创建虚拟以太网设备。后台服务以守护进程方式运行处理网络加入、配置更新和状态监控。命令行工具提供zerotier-cli或zerotier-one等命令供用户管理节点。客户端与虚拟网卡之间通过类似 TUN/TAP 的机制交互。在 Linux 中ZeroTier 会创建 TAP 设备以实现完整的二层帧传输在部分平台上也可能使用 TUN 模式。4.4 数据平面当节点 A 需要向节点 B 发送数据时会经历以下过程A 的虚拟网卡产生以太网帧内核将其交给 ZeroTier 客户端。客户端识别目标 MAC 地址对应的目标节点 B。如果 A 与 B 之间没有现成的会话则启动握手流程交换密钥并协商路径。双方协商出可用的直接路径包括通过 UDP 打洞形成的 P2P 直连。数据帧被加密后封装为 UDP 数据包直接发送给 B。B 收到数据包后解密并解封装将原始以太网帧交给内核和上层应用。如果 NAT 穿透失败或双方无法直连数据会通过 ZeroTier 的中继节点转发。中继通常是网络中的其他节点由控制器指定或节点自动选择。5. ZeroTier 工作原理详解ZeroTier 之所以能够在复杂网络环境中自动建立安全、高效的虚拟网络依赖一套精巧的设计。本节从身份模型、加密、会话建立、NAT 穿透、路径选择、协议分层等角度深入剖析其工作原理。5.1 身份与公钥体系每个 ZeroTier 节点在第一次启动时都会生成一个公私钥对。公钥绑定节点地址私钥仅保存在本机。节点地址通常取公钥的哈希值因此节点地址与公钥存在可验证的对应关系。其他节点可以通过该节点的公钥验证其数字签名从而确认其真实身份。这套身份体系类似于公钥基础设施但不需要集中式证书颁发机构。节点身份一旦生成就与该设备绑定即使重装网络、更换 IP 或更换网络环境节点 ID 依然不变。这一点对于长期稳定的设备管理非常重要。5.2 加密与消息认证ZeroTier 的数据平面采用对称加密保护实际流量。节点之间通过握手协商出会话密钥会话密钥仅由通信双方共享。数据包使用如 Salsa20 等流加密算法进行加密同时附加消息认证码以防止篡改。即使在恶意中继或网络监听环境中数据内容也无法被读取或修改而不被发现。控制平面消息则使用节点的私钥签名接收方通过发送方的公钥验证消息来源。网络配置、证书等关键信息由控制器签名节点可以验证其完整性和真实性。5.3 会话建立与握手两个节点首次通信时需要完成握手以建立加密会话。握手过程大致如下节点 A 通过根服务器或其他已知路径向节点 B 发送 Hello 消息。B 收到 Hello 后回送自己的身份信息、临时公钥和支持的加密算法。双方基于长期身份密钥和临时密钥协商出会话密钥。握手完成后双方建立安全会话并开始尝试直接通信。握手过程经过优化通常在一到两个往返内完成。对于已经建立过会话的节点后续通信可以通过会话缓存快速恢复而不必每次重新协商密钥。5.4 NAT 穿透机制NAT 是 ZeroTier 需要克服的主要障碍之一。绝大多数家庭和办公网络位于 NAT 之后设备没有公网 IP外部无法直接发起连接。ZeroTier 通过以下机制实现 NAT 穿透UDP 打洞两端节点分别向对方已知的地址发送 UDP 数据包从而在各自 NAT 上建立映射使后续数据可以双向直达。端口预测对于部分对称 NAT通过分析端口分配规律预测外部端口提高打洞成功率。中继回退当打洞失败时自动切换到中继节点转发流量保证连通性。多路径尝试同时尝试 IPv4、IPv6、不同端口和不同网络路径选择最优者建立连接。ZeroTier 的 NAT 穿透是自动完成的用户无需进行任何配置。系统会持续监控路径质量在网络环境变化时自动切换或重新协商路径。5.5 路径选择与多路径ZeroTier 在节点之间可能同时发现多条可用路径例如通过不同网络接口、不同运营商线路或不同协议族。系统会持续评估每条路径的延迟、丢包率和抖动并自动选择质量最好的路径作为主路径。ZeroTier 还支持多路径传输。当用户启用多路径功能后流量可以在多条路径之间进行故障切换甚至负载均衡。这对于需要高可用性的场景非常有价值例如同时拥有有线网络和 5G 网络的边缘设备当有线链路中断时ZeroTier 可以快速切换到无线链路。5.6 VL1 与 VL2 协议层ZeroTier 的协议设计参考了网络分层思想定义了 VL1 和 VL2 两个层面。VL1 层负责节点之间的通信基础设施。它关注的是如何在两个节点之间安全地传输加密数据报以及如何发现路径、穿透 NAT 和选择最佳链路。VL1 不关心虚拟网络内部的 IP 地址、MAC 地址或二层语义它只提供节点到节点的安全传输通道。VL2 层负责虚拟以太网语义。VL2 在 VL1 提供的安全通道之上实现了二层帧的转发、MAC 地址学习、广播、组播和 VLAN 等功能。VL2 使得整个 ZeroTier 网络在行为上像一个大型以太网交换机。这种分层设计带来了很好的扩展性。VL1 层可以独立演进支持新的传输协议或安全算法VL2 层则可以保持稳定的二层语义兼容现有以太网应用。5.7 组播与广播处理在传统以太网中广播帧会发送到同一网段的所有设备。对于跨互联网的虚拟网络广播的成本较高因此 ZeroTier 对广播和组播进行了优化。控制器会根据网络成员的订阅需求计算组播组成员并只向实际需要的节点发送组播流量。对于 ARP 请求等广播流量ZeroTier 客户端还会进行本地代理应答。当节点需要解析某个 IP 对应的 MAC 地址时如果 ZeroTier 已经知道该 IP 属于哪个节点就可以直接在本机响应 ARP 请求避免在网络中泛洪广播帧。这显著降低了带宽消耗和延迟。5.8 网络配置与证书下发当节点申请加入网络时需要向控制器提交加入请求。控制器验证节点身份后根据预设策略决定是否批准。批准后控制器会向节点签发一份网络成员证书。该证书包含网络 ID、节点 ID、有效期、分配的 IP 地址、网络路由表、流量规则以及其他配置信息。节点收到证书后会验证控制器的签名确认配置的合法性。之后节点根据配置创建虚拟网卡、设置 IP 地址和路由并将规则加载到协议栈中。证书通常具有有效期节点需要定期向控制器续期。如果节点被从网络中移除其证书到期后便无法继续参与网络通信。6. 安装 ZeroTierZeroTier 支持几乎所有主流操作系统和平台。下面介绍常见平台的安装方法。6.1 Windows 安装Windows 用户可以从 ZeroTier 官网下载 MSI 安装包。安装过程简单双击安装包并按照向导完成即可。安装完成后ZeroTier 会以 Windows 服务的形式在后台运行并在系统托盘显示图标。安装完成后可以通过命令行工具zerotier-cli或图形界面进行操作。在旧版本中ZeroTier 使用系统托盘管理网络新版本则提供了基于 Web 的本地管理界面访问http://127.0.0.1:9993即可查看节点状态、加入网络和进行基本配置。如果需要在 Windows 中以管理员权限运行命令请使用管理员身份打开命令提示符或 PowerShell。6.2 Linux 安装Linux 平台的安装方式因发行版而异。以常见的 Debian/Ubuntu 系列为例可以使用以下命令安装curl -s https://install.zerotier.com | sudo bash该安装脚本会自动添加 ZeroTier 的软件源并安装zerotier-one包。安装完成后启动并设置开机自启sudo systemctl enable zerotier-one sudo systemctl start zerotier-one对于 CentOS、Rocky Linux、AlmaLinux 等 RHEL 系列发行版也可以使用相同的一键安装脚本。对于 Arch Linux可以通过 AUR 安装zerotier-one。对于 Alpine Linux可以使用apk add zerotier-one安装。6.3 macOS 安装macOS 用户可以从 ZeroTier 官网下载 PKG 安装包也可以通过 Homebrew 安装brew install zerotier-one通过 Homebrew 安装后使用以下命令启动服务sudo brew services start zerotier-onemacOS 系统出于安全考虑需要为虚拟网卡驱动授予系统扩展权限。首次安装和启用时系统会弹出提示用户需要在系统设置中允许 ZeroTier 加载网络扩展。6.4 Android 与 iOS 安装移动端可以从 Google Play 或 App Store 安装官方 ZeroTier One 应用。移动端应用支持加入网络、查看节点状态和基本配置。受移动操作系统限制移动端无法像桌面端那样完整支持所有二层功能但基本的 IP 通信和访问网络内的其他设备已经足够。需要注意的是Android 和 iOS 的 VPN 权限机制要求应用创建系统级 VPN 隧道ZeroTier 会使用系统的 VPN API 来实现网络接入。这可能会导致与应用内其他 VPN 服务冲突使用时需要留意。6.5 路由器与 OpenWrt 安装在 OpenWrt 路由器上安装 ZeroTier 可以让整个局域网共享 ZeroTier 网络而无需在每台局域网设备上单独安装客户端。安装方法如下opkg update opkg install zerotier安装后通过/etc/config/zerotier配置文件加入网络并在防火墙中放行相应接口。OpenWrt 上的 ZeroTier 通常创建一个虚拟接口用户可以将其加入 LAN 区域实现局域网与 ZeroTier 网络的桥接。6.6 Docker 部署在 Docker 环境中运行 ZeroTier 可以实现容器网络接入。使用官方镜像或社区维护的镜像例如docker run -d \ --name zerotier \ --device /dev/net/tun \ --cap-add NET_ADMIN \ --cap-add SYS_ADMIN \ -v zerotier-one:/var/lib/zerotier-one \ zerotier/zerotier:latest \ network-id容器需要具有NET_ADMIN和SYS_ADMIN权限并挂载 TUN 设备。加入网络后容器可以获得一个 ZeroTier IP与其他节点通信。如果需要让宿主机或其他容器通过该容器访问 ZeroTier 网络还需要配置路由或使用网络模式。7. ZeroTier 基础使用安装完成后接下来介绍如何创建网络、加入网络和管理成员。基本使用流程对于所有平台基本相同区别仅在于操作界面的形式。7.1 创建网络使用 ZeroTier 官方服务创建网络的步骤如下访问 my.zerotier.com 并注册或登录账户。点击Create A Network创建新网络。系统会为新网络分配一个唯一的网络 ID。点击网络进入配置页面可以设置网络名称、描述、网段、访问权限等参数。网络 ID 是后续设备加入网络时需要使用的关键信息务必妥善保存。网络 ID 并不是机密信息真正决定谁能加入网络的是控制器的授权策略。7.2 加入网络设备加入网络的方式通常是使用命令行工具。以 Linux 为例sudo zerotier-cli join network-id执行后会返回类似200 join OK的信息表示加入请求已提交。此时设备尚未获得网络访问权限需要在控制器的管理界面中对该节点进行授权。在 Windows 的旧版图形界面中用户可以在系统托盘图标的Join Network选项中输入网络 ID。新版本则可以在本地 Web 管理界面中加入网络。7.3 授权成员设备加入网络后控制器的管理页面中会出现该节点的条目状态为ACCESS DENIED表示尚未获得授权。管理员需要勾选该节点前面的复选框或点击授权按钮将其状态改为AUTHORIZED。授权后控制器会向节点签发成员证书节点会获得由网络配置指定的 IP 地址。此时节点即可与其他已授权节点通信。7.4 查看节点状态使用zerotier-cli可以查看本节点的状态sudo zerotier-cli listnetworks输出示例200 listnetworks nwid name mac status type dev ztaddr 200 listnetworks 1d719394045a2d1c mynet 02:xx:xx:xx:xx:xx OK PRIVATE ztxxxxxxx ab12cd34ef其中status为OK表示节点已成功加入网络并完成配置。listpeers命令则可以查看与当前节点建立了连接的远程节点sudo zerotier-cli listpeers该命令会显示每个对等节点的地址、路径、延迟和连接状态是排查连通性问题的重要工具。7.5 验证连通性在两个节点都加入并授权后可以通过 ping 测试虚拟网络连通性。假设节点 A 的 ZeroTier IP 为10.147.17.1节点 B 的 ZeroTier IP 为10.147.17.2在节点 A 上执行ping 10.147.17.2如果能够收到响应说明虚拟网络工作正常。此时可以像在局域网中一样使用 SSH、远程桌面、文件共享等服务。例如从节点 A 通过 SSH 连接节点 Bssh user10.147.17.28. 网络配置与管理ZeroTier 网络控制器提供了丰富的配置项。通过合理配置可以实现精细的权限控制、路由策略和流量管理。8.1 基本设置在官方控制台中每个网络的配置页面包括以下常用设置网络名称为网络设置一个易识别的名称。描述记录网络的用途和注意事项。访问控制设置网络为公开或私有。公开网络允许任何节点申请加入私有网络则需要管理员手动授权。IPv4 自动分配为节点自动分配 IPv4 地址时使用的地址范围。IPv6 自动分配为节点自动分配 IPv6 地址时使用的范围。路由表指定网络内的路由规则将特定目标网段指向特定节点。8.2 成员管理在成员管理区域可以看到所有申请加入的节点以及每个节点的 ID、名称、IP 地址、在线状态和授权状态。管理员可以勾选节点进行授权或取消授权。为节点设置名称和描述。手动指定节点的 IP 地址。设置节点是否可以作为中继节点。移除节点。节点被取消授权后其成员证书会逐渐失效最终无法继续在网络中通信。这个机制保证了网络的成员管理是可控的。8.3 路由管理ZeroTier 支持在虚拟网络内部定义额外的路由规则。例如假设在某个 ZeroTier 节点后面连接了一个局域网该节点相当于网关希望其他 ZeroTier 节点能够访问这个局域网就需要配置一条托管路由Managed Routes:在配置页面中添加路由192.168.100.0/24下一跳设置为该网关节点的 ZeroTier IP。这样其他节点访问192.168.100.0/24网段时会将流量发送给该网关节点由其转发到局域网。路由配置在 ZeroTier 中非常灵活可以实现多种网络拓扑。用户可以根据需要定义任意数量的子网和边界路由。8.4 DNS 配置默认情况下ZeroTier 虚拟网络不会自动配置 DNS 服务器。如果希望虚拟机成员使用统一的 DNS 解析可以在网络配置中指定 DNS 服务器。这可以通过在网络中部署一台运行 DNS 服务的节点来实现例如 dnsmasq、AdGuard Home 或 Pi-hole。配置 DNS 时在网络的 DNS 配置区域填入 DNS 服务器的 ZeroTier IP 地址。节点加入网络后ZeroTier 客户端会将指定的 DNS 服务器添加到虚拟网卡配置中。由于 DNS 查询通常走虚拟网络而虚拟网络逻辑上安全可信可以考虑使用安全的 DNS 解析。8.5 流量规则 Flow RulesFlow Rules 是 ZeroTier 提供的一套流量过滤与策略引擎。它运行在每个节点上对进出虚拟网卡的数据包进行规则匹配和动作处理。Flow Rules 的语法类似于防火墙规则基于以太网、IP 和传输层字段进行匹配。一个简单的 Flow Rule 示例drop not chr ipauth and not ethertype ipv4 and not ethertype arp and not ethertype ipv6 ;上述规则表示只允许经过身份认证的 IP 流量、ARP 和 IPv6 流量通过丢弃其他流量。Flow Rules 可以实现以下能力限制特定节点只能访问某些端口或协议。隔离网络中的不同成员或子网。限制广播和组播的传播范围。实现基于节点身份的网络微分段。防 IP 欺骗只允许与节点身份匹配的源 IP。Flow Rules 的功能强大但语法也相对复杂。对于大多数基础场景使用默认规则通常已经足够满足安全和性能要求。9. ZeroTier 高级功能在掌握了基础使用之后可以进一步学习 ZeroTier 的高级功能包括自建 Moon、自建控制器、多网络桥接和性能调优。9.1 自建 MoonMoon 是 ZeroTier 的私有根服务器节点。搭建 Moon 需要一台具有公网 IP 的服务器推荐使用云主机。搭建步骤如下在服务器上安装 ZeroTier 并启动服务。找到服务器的节点 IDsudo zerotier-cli info进入 ZeroTier 的配置目录cd /var/lib/zerotier-one生成 Moon 配置文件sudo zerotier-idtool initmoon identity.public moon.json编辑moon.json在其中添加stableEndpoints填写服务器的公网 IP 和端口{ id: xxxxxxxxxx, objtype: world, roots: [ { identity: xxxxxxxxxx:0:..., stableEndpoints: [1.2.3.4/9993] } ], signingKey: ..., signingKey_SECRET: ..., updatesMustBeSignedBy: ..., worldType: moon }生成签名后的 Moon 文件sudo zerotier-idtool genmoon moon.json将生成的000000xxxxxxxxxx.moon文件放入本机的moons.d目录并重启服务。在客户端节点上将对应的 Moon 文件放入/var/lib/zerotier-one/moons.d目录或使用命令sudo zerotier-cli orbit moon-id moon-id客户端加入 Moon 后可以通过zerotier-cli listpeers看到与 Moon 服务器的连接。Moon 会在节点发现和握手阶段提供辅助提高连接速度和稳定性。9.2 自建网络控制器除了使用官方托管控制器用户还可以通过ztctl工具自行运行控制器。自建控制器适合需要完全掌控网络元数据、节点规模较大或希望脱离官方基础设施的场景。自建控制器需要两步首先运行一个常规 ZeroTier 节点作为控制器的载体然后在它上面初始化控制器sudo zerotier-one -C /var/lib/zt-controller然后使用ztctl工具管理网络cd /var/lib/zt-controller sudo ./ztctl help使用ztctl可以创建网络、授权成员、设置 IP 分配等。自建控制器的配置项与官方控制台基本对应但全部以 JSON 配置文件和命令行方式管理。需要特别注意的是自建控制器的网络 ID 与官方网络 ID 相互独立。使用自建控制器时节点需要通过额外配置指向该控制器而不是依赖官方 Planet 寻找默认控制器。这通常涉及修改节点的本地 world 文件或使用部署脚本统一分发。9.3 多网络与桥接一个设备可以同时接入多个 ZeroTier 网络。每个网络对应一个独立的虚拟网卡拥有不同的网段和访问策略。这种能力适用于需要分层隔离的场景例如将管理流量和业务流量划分到不同网络。在某些场景下用户可能希望将 ZeroTier 虚拟网络与物理局域网桥接。例如在办公室的路由器或服务器上同时接入物理 LAN 和 ZeroTier 网络并将其配置为桥接使得 ZeroTier 远程成员能够直接访问办公室局域网中的打印机、NAS 和其他设备。实现桥接通常需要操作系统的桥接工具如 Linux 的 bridge-utils 或 Windows 的网络桥接功能。9.4 使用 ZeroTier Central API官方托管服务提供了 REST API用户可以编程方式管理网络、成员和配置。API 地址为 https://api.zerotier.com/api/v1使用 API Token 进行身份验证。通过 API 可以实现自动化运维例如批量创建网络和授权节点。动态控制成员访问权限。获取节点在线状态和网络统计。与内部运维系统集成。使用 API 时务必妥善保管 Token避免泄露带来安全风险。10. 性能优化ZeroTier 的性能受多个因素影响包括 CPU 加密能力、网络带宽、延迟、NAT 类型和路径质量。通过合理的优化措施可以显著提升吞吐量和稳定性。10.1 硬件加密加速ZeroTier 使用对称加密算法保护数据流量。现代 CPU 通常支持 AES-NI 等硬件加密指令集可以大幅提高加密和解密吞吐。确认 CPU 是否支持 AES-NI 并确保 ZeroTier 使用了相关优化是提升性能的基础。对于低功耗设备如树莓派其 CPU 加密能力有限ZeroTier 的吞吐可能受到限制。在这种场景下应合理评估性能预期避免将高带宽应用跑在低性能设备上。10.2 MTU 调整MTU 是影响隧道性能的重要参数。过大或过小的 MTU 都可能导致分片、重传和性能下降。ZeroTier 网络中虚拟网卡的 MTU 需要小于底层物理网络的 MTU以留出协议封装开销的空间。默认情况下ZeroTier 会设置一个相对保守的 MTU 值以适应大多数网络环境。如果需要优化可以通过配置调整 MTU。通常建议虚拟网卡 MTU 比底层 MTU 小 100 到 150 字节。对于常见的 1500 字节 MTU 以太网ZeroTier 虚拟网卡 MTU 可以设置为 1280 到 1400 之间。也可以启用路径 MTU 发现让系统自动探测最优值。10.3 带宽与延迟ZeroTier 的性能上限首先取决于两端设备的物理网络带宽和延迟。同一城市内的节点间延迟通常较低跨洲通信则会有较高延迟。ZeroTier 本身引入的额外开销相对较小在典型硬件上千兆带宽下通常能达到数百兆的加密吞吐。实际吞吐还受到 NAT 类型、中继选择和系统网络栈效率的影响。使用zerotier-cli listpeers查看延迟如果发现两个节点之间的路径绕行较远可以考虑部署 Moon 或优化网络路由。10.4 多路径与故障切换ZeroTier 的多路径能力允许节点在多个链路之间自动切换。对于需要高可靠性的场景可以同时接入有线网络和无线网络。当主链路故障时ZeroTier 会快速切换到备用路径减少业务中断。需要注意的是多路径的故障切换并不是瞬时的。切换时间取决于路径检测机制、网络条件和会话状态。对于严格实时的应用仍需在应用层考虑容错设计。10.5 中继节点选择当两个节点无法 P2P 直连时流量会经过中继节点转发。中继节点的带宽、地理位置和负载都会直接影响通信质量。如果网络中存在需要频繁通过中继通信的节点建议部署专用的高性能中继节点并确保其网络条件良好。官方服务也提供中继基础设施但性能和稳定性取决于官方资源。在关键业务场景中自建中继节点可以提供更可控的质量。11. 安全性分析安全性是远程组网方案的核心考量。ZeroTier 在安全设计上有诸多优点但也并非绝对完美用户需要根据实际威胁模型进行配置和管理。11.1 加密与身份验证如前所述ZeroTier 的数据流量使用端到端对称加密控制平面使用公私钥签名。节点之间的会话密钥在握手阶段通过安全算法协商理论上具备较强的机密性和完整性保护。每个节点拥有长期身份密钥对节点地址与公钥绑定。这为基于身份的访问控制提供了坚实基础。控制器签发的成员证书使得节点在网络中的权限可以被验证和撤销。11.2 威胁模型与攻击面ZeroTier 的安全威胁主要来自以下几个方面节点身份泄露如果节点的identity.secret文件被攻击者获取攻击者可以完全冒充该节点。因此需要妥善保护设备安全。控制器安全控制器是网络管理的核心其密钥如果泄露攻击者可以签发伪造的成员证书或篡改网络配置。中继节点信任虽然中继节点无法解密流量但可以观察到通信元数据如谁与谁通信、流量大小和时间规律。对于高敏感环境应避免使用不受信任的中继。网络边界安全由于 ZeroTier 提供的是二层网络节点之间可以直接互通。如果没有正确配置 Flow Rules网络内部的攻击面可能较大。11.3 安全最佳实践为了让 ZeroTier 网络更加安全建议遵循以下实践使用私有网络模式手动授权每个节点避免未经授权的设备加入。定期轮换节点身份密钥和控制器密钥。对于长期运行的设备建议定期更新。限制中继节点的选择只使用自己信任的中继节点。利用 Flow Rules 实现网络微分段限制节点之间的不必要通信。保护设备操作系统安全避免节点私钥文件被读取。在敏感场景中自建控制器和 Moon减少对第三方基础设施的依赖。监控网络成员和连接状态及时发现异常节点。12. 常见问题与故障排查在使用 ZeroTier 的过程中可能会遇到各种问题。掌握常见的排查方法可以快速定位和解决故障。12.1 节点无法加入网络如果执行join后节点状态始终不是OK可能的原因包括网络控制台未授权该节点。节点无法连接官方根服务器或 Moon。网络 ID 输入错误。本地防火墙阻止了 UDP 9993 端口的出站流量。排查方法首先检查zerotier-cli listnetworks的状态字段其次检查防火墙设置确保 UDP 9993 端口可达最后查看日志确认节点是否能够与根服务器通信。12.2 连接成功但无法通信节点显示OK但 ping 不通其他设备可能的原因包括对方节点未授权或离线。Flow Rules 阻止了流量。操作系统防火墙拦截了虚拟网卡流量。两端路由配置不正确。虚拟网卡没有获得正确的 IP 地址。排查方法使用zerotier-cli listpeers查看与对方节点的连接状态检查两端 IP 和路由临时关闭防火墙测试是否恢复检查 Flow Rules 是否有丢弃规则。12.3 延迟高或吞吐低如果通信延迟较高或吞吐远低于预期可能的原因包括双方无法 P2P 直连流量经过中继节点绕行。节点所在网络的 NAT 类型导致打洞失败。CPU 加密能力不足特别是低功耗设备。MTU 设置不当导致分片和重传。底层物理网络本身延迟高或带宽不足。排查方法使用zerotier-cli listpeers查看路径状态观察是否为RELAY路径在两端测试底层网络的延迟和带宽调整 MTU 或启用硬件加密。12.4 查看日志ZeroTier 的日志对于排查问题非常重要。在 Linux 系统中可以通过以下方式查看日志sudo journalctl -u zerotier-one -f也可以临时提高日志级别sudo zerotier-cli set nwid debugLevel7更详细的日志有助于分析握手、NAT 穿透和路径选择过程。12.5 重置节点身份如果需要重新生成节点身份可以停止 ZeroTier 服务后删除身份文件并重启。在 Linux 下sudo systemctl stop zerotier-one sudo rm /var/lib/zerotier-one/identity.secret sudo rm /var/lib/zerotier-one/identity.public sudo systemctl start zerotier-one重置后节点 ID 会改变需要在控制台中重新授权。使用该操作前务必确认不会影响关键服务。13. 与其他组网方案对比为了帮助读者选择合适的技术方案下面将 ZeroTier 与 WireGuard、Tailscale、OpenVPN 和 Nebula 进行对比。13.1 ZeroTier 与 WireGuardWireGuard 以其极简设计和优秀性能著称已经进入 Linux 内核主线。它使用现代密码学算法配置简单隧道开销低。然而WireGuard 本质上是点对点隧道协议本身没有提供成员管理、NAT 穿透和密钥自动分发。构建多节点 WireGuard 网络需要自行维护配置和密钥通常要配合脚本或编排工具。ZeroTier 提供了完整的控制平面自动完成节点发现、NAT 穿透、证书分发和路由管理使用门槛更低。但 ZeroTier 的协议栈相对复杂性能优化不如内核态 WireGuard 直接。对于追求极低延迟和最大吞吐的简单点对点场景WireGuard 可能更合适对于多节点、跨平台、需要自动组网和二层语义的场景ZeroTier 更便捷。13.2 ZeroTier 与 TailscaleTailscale 基于 WireGuard提供了优秀的身份管理和自动化组网体验。它利用 OAuth 和 SSO 将设备身份与企业身份系统绑定使用私有控制服务器协调密钥和网络配置。Tailscale 也实现了较强的 NAT 穿透能力并支持 ACL 进行访问控制。ZeroTier 与 Tailscale 的最大差异在于网络模型ZeroTier 提供虚拟二层网络支持广播、组播和 ARPTailscale 更像一个基于零信任身份的三层网络。如果需要二层语义或希望独立于商业身份系统ZeroTier 更合适如果企业已经深度使用 Google、Microsoft 等身份体系Tailscale 的集成体验可能更好。13.3 ZeroTier 与 OpenVPNOpenVPN 是经典的开源 VPN 方案成熟稳定支持多种平台和认证方式。它通常采用客户端-服务器模式配置复杂度中等。OpenVPN 的安全性经过长时间实践验证但性能、移动端兼容性和 NAT 穿透能力在现代场景中不如 WireGuard 和 ZeroTier 等新型方案。对于需要与传统企业 VPN 协议兼容或需要精细控制证书体系的场景OpenVPN 仍然值得考虑。对于新型的异地组网和 P2P 互联需求ZeroTier 通常更简单高效。13.4 ZeroTier 与 NebulaNebula 是 Slack 开源的覆盖网络工具同样提供加密的 P2P 连接和简单的配置。Nebula 使用中心化的 Lighthouse 节点辅助节点发现使用证书进行身份验证。与 ZeroTier 相比Nebula 的社区生态略小配置方式也更偏向手工维护。ZeroTier 在易用性、跨平台支持和功能丰富度上更有优势。13.5 对比总结下表对比了 ZeroTier 与其他方案的关键特性方案网络模型自动 NAT 穿透控制平面配置复杂度跨平台ZeroTier二层虚拟网络是内置可自托管低非常广WireGuard三层点对点隧道否无需自建中高广Tailscale三层覆盖网络是商业服务或 Headscale低广OpenVPN三层 VPN部分服务器端中高广Nebula三层覆盖网络是Lighthouse中中等14. 实战案例下面通过几个典型场景展示 ZeroTier 的实际应用方法。14.1 异地办公组网某公司在北京和上海各有一个办公室两个办公室的员工需要像在同一局域网内一样共享文件和访问内部系统。在两地各部署一台 ZeroTier 节点例如一台小型服务器或路由器。在 ZeroTier 控制台中创建网络授权两地节点并配置托管路由让各办公室的局域网网段通过各自网关互通。配置完成后北京办公室的电脑可以直接通过上海办公室内网 IP 访问其资源反之亦然。整个过程无需公网 IP也无需购买专线。14.2 远程访问家庭网络用户希望在公司或外出时安全访问家里的 NAS、摄像头和智能家居设备。在家庭 NAS 或路由器上安装 ZeroTier并在手机和笔记本上安装客户端。将所有设备加入同一个私有网络并授权。此后无论身处何地只要设备能够上网就可以通过 ZeroTier 虚拟 IP 访问家庭设备。相比公网端口映射这种方式更安全因为家庭设备无需暴露在公网。14.3 云服务器内网互联用户在多云或混合云环境中拥有多台服务器希望它们能够通过内网高速通信并支持集群、数据库复制和微服务调用。在每台服务器上安装 ZeroTier 并加入同一网络。由于云服务器通常具有较好的网络环境节点之间很容易建立 P2P 直连延迟低且带宽足够。同时可以通过 Flow Rules 限制不同业务分组之间的访问实现网络微分段。14.4 游戏虚拟局域网联机许多局域网联机游戏不支持通过互联网直连例如一些经典 RTS 游戏或本地合作游戏。玩家们可以各自安装 ZeroTier 并加入同一网络然后使用虚拟 IP 进行局域网联机。ZeroTier 的二层网络支持可以让游戏的局域网发现机制正常工作。14.5 Kubernetes 跨集群通信在边缘计算或混合云场景中多个 Kubernetes 集群可能分布在不同地域。使用 ZeroTier 可以快速建立跨集群的底层网络连接配合 CNI 或服务网格工具实现跨集群服务发现和通信。ZeroTier 的自动组网和加密能力可以简化跨集群网络的搭建。14.6 数据库异地复制对于跨地域的数据库主从同步需要稳定、安全的网络连接。ZeroTier 可以提供加密的私有网络避免通过公网明文传输数据。在数据库节点上加入 ZeroTier 网络后可以使用虚拟 IP 配置主从复制同时利用 Flow Rules 限制只有数据库相关端口可以访问提升安全性。15. 常见使用误区与注意事项在长期使用 ZeroTier 的过程中用户常常会遇到一些误区。了解这些问题可以避免不必要的麻烦。15.1 把网络 ID 当作密码网络 ID 只是网络的标识符不是密码。真正保护网络安全的是控制器的授权策略和节点身份认证。不要在公开场合随意泄露网络 ID 但不代表泄露 ID 就立即危险仍然需要在控制台进行授权才能加入。但最佳实践是保持网络 ID 的私密性并结合私有网络模式使用。15.2 忽视虚拟网卡防火墙配置很多用户在操作系统层面为物理网卡配置了防火墙却忽略了虚拟网卡。由于 ZeroTier 网络可能包含不受信任的节点建议为虚拟网卡也配置合理的防火墙规则限制可访问的端口和服务。15.3 盲目更换节点身份节点身份是长期凭证频繁重置会导致网络管理混乱。在一些旧版本或特殊部署中节点身份与设备绑定重置后需要在所有相关网络中重新授权。除非明确需要更换身份否则不要轻易删除身份文件。15.4 忽略 MTU 问题MTU 不对可能导致某些应用工作异常例如大文件传输变慢、HTTPS 连接中断或某些协议无法建立连接。如果遇到此类问题可以尝试降低虚拟网卡 MTU或检查底层网络是否支持巨帧。15.5 只依赖默认中继当节点之间无法直连时系统会使用中继节点。中继的可用性和性能不一定满足所有场景。对于关键业务建议主动部署自己的中继节点并确保其带宽和网络质量。16. 总结与展望ZeroTier 提供了一套强大且易用的软件定义网络解决方案通过虚拟二层网络、自动 NAT 穿透、端到端加密和控制面与数据面分离解决了异地组网中的诸多痛点。相比传统 VPN它在易用性、灵活性和可扩展性上具有显著优势相比 WireGuard 等现代隧道方案它提供了更完整的控制平面和二层语义。从原理上看ZeroTier 的核心在于将复杂的网络基础设施抽象为简单的虚拟网络。通过全球根服务器、网络控制器和节点之间的协作ZeroTier 实现了成员身份的自动验证、密钥的安全分发、路径的智能选择和数据流量的高效传输。其分层的 VL1、VL2 协议设计也为未来的演进提供了良好基础。在实际使用中ZeroTier 覆盖了从个人远程访问、异地办公到云服务器互联、边缘计算等广泛场景。通过合理使用 Moon、自建控制器、Flow Rules、托管路由和多路径等功能可以构建出安全、高效且可控的私有网络架构。当然任何技术方案都需要根据实际需求权衡。ZeroTier 在功能和易用性上表现突出但在极致性能调优、企业级身份集成等方面仍需结合 WireGuard、Tailscale 或其他工具进行综合设计。对于多数希望快速实现跨地域安全组网的用户来说ZeroTier 是一个非常值得优先考虑的选择。随着网络技术的发展和远程协作场景的增加软件定义网络的重要性会持续提升。ZeroTier 作为开源生态中的代表性项目其发展值得持续关注。读者可以在掌握本文内容的基础上继续深入阅读官方文档、参与社区讨论并结合自己的实际场景不断实践和优化。