·约 10 分钟阅读·DeepSeek

2026 mesh VPN 对比:Tailscale vs ZeroTier、NetBird、Nebula 与 EasyTier

一篇面向 2026 年的 mesh VPN 对比——Tailscale vs ZeroTier,加上 NetBird、Nebula 与 EasyTier——从控制面、数据面、L2 与 L3、NAT 穿透、自托管和锁定成本几个维度来评判。没有会过时的价格表,只讲决定一套自托管 VPN 的取舍。

networkingself-hostinghomelabeasytier

几乎每个月都有人问我该跑哪套 mesh VPN,而诚实的答案是:2026 年做一次 mesh VPN 对比, 重点已经不在于有多少功能,而在于一个问题——协调服务器归谁所有? Tailscale 与 ZeroTier 常被包装成一场赛马,但真正的分岔口在于:你接受厂商托管的控制面,还是坚持要一套 自托管 VPN。 再往下看,这些工具大多是一套 WireGuard overlay 配不同的成员模型——除了那些根本不基于 WireGuard 的,而那恰恰是最有意思的取舍所在。这篇文章就是我当年希望存在的对比:Tailscale、 ZeroTier、NetBird、Nebula 与 EasyTier,按架构排序,而不是按一张每个季度都在变的功能对照表。

先做个说明,因为这事很相关:这个博客本身就跑在一张 EasyTier 组网之上,我甚至把这个协议拆得 足够深,用 C 重新实现了一个节点。我会尽量不让这层关系影响结论。

mesh VPN 之间真正不同的维度

把营销页面扒掉,真正起区分作用的是七个属性:

  1. 控制面——是托管服务、可自托管的服务,还是根本没有控制器。
  2. 数据面——基于 WireGuard,还是自带加密的自研传输。
  3. overlay 层级——L3(IP 路由)还是 L2(一条跑在 UDP 上的以太网段)。
  4. NAT 穿透与中继——节点怎么发现彼此,打洞失败时又会怎样。
  5. 自托管的能力——你到底能掌控产品的多少部分。
  6. 客户端广度——哪些操作系统和设备是头等支持。
  7. 锁定成本——想退出要付出什么代价。

其余的一切——类 MagicDNS 的命名、ACL、SSO、审计日志——都真实存在,但它们是搭建在这些 之上的。而且这些也正好是厂商改动最快的地方,所以我刻意比较的是底层管道,而不是设置页面。

控制面:中心化、可自托管,还是压根不存在

任何 overlay 都需要协调:节点得互相认识、交换密钥或地址、发布策略。问题在于这个”大脑”住在 哪里。

托管控制面(Tailscale、ZeroTier Central)是省事的程度遥遥领先的方案。每个节点往厂商那边 “报到”、完成认证,然后拿到当前的 peer 列表。你不用跑任何东西,就能有 SSO、ACL 和一张看板。 代价也同样可预期:如果协调服务器不可达,你的网络就无法建立新的连接;你把可用性押在了别人 身上;你的拓扑元数据也寄存在别人那里。已有的直连会话通常能扛过短暂故障,但你没法在断联期间 把新节点上线。

可自托管的控制面是折中路线。NetBird 提供了可以自己跑的 management 与 signal 服务(同时也 提供托管版)。ZeroTier 的 controller 是开源的,能跑在你自己的机器上,尽管默认走的是它的云。 Tailscale 的客户端是开放的,但它的协调服务器不是——社区给出的答案是 Headscale,一份对该 协议的独立重实现。它很好用,但不是官方产品,也总是落后于托管版。

完全没有控制器是第三条路。Nebula 要求你自己跑若干 “lighthouse” 节点,并自建证书颁发机构。 EasyTier 则天生点对点:把节点指向一个或多个 peer 完成引导,之后网络自行收敛。这两者都没有账号 可以登录。这是你能买到的最彻底的独立,也意味着你签下了最多的运维活。

数据面:基于 WireGuard 还是自研

WireGuard overlay 类产品复用一个小巧、经过审计、广为人知的加密内核。Tailscale 的传输派生 自 WireGuard(在 Linux 之外大多跑在用户态);NetBird 则直接构建在 WireGuard 之上。你得到的是 一套被很多人盯过的加密栈,而且在 Linux 上往往还能留在内核的快路径里。

其余几家的数据面都是自己写的。ZeroTier 讲的是自研的 UDP 协议(自带传输与密钥交换)。Nebula 用的是自己的、基于 Noise 的加密传输。EasyTier 有自己的协议,可以跑在 UDP、TCP、WebSocket 或 QUIC 之上,而且有个讨巧的玩法——甚至能把流量包进 WireGuard 里传(wg://)。

这本身并不构成安全上的定论:它们全都加密,也都用了现代原语。真正的区别在于加密是谁写、谁审计 的,以及自研协议换来了什么。自研传输可以在多路复用上做得更好、能支持 L2、或者玩更聪明的 NAT 技巧;但它们也要求你去信任一个更小的审计面。对 homelab 而言两者都没问题。对合规场景而言,“底下 是 WireGuard”是更容易辩护的那句话。

L2 与 L3 overlay

大多数 mesh 是 L3 的:每个节点在一个扁平子网里拿到一个虚拟 IP,应用程序看到的只是一张可路由 的网络。这通常就是你要的——挂载 NFS、访问 API、curl 一个虚拟 IP。

ZeroTier 是显著的 L2 优先设计:它可以是一条跑在 UDP 上的以太网段,承载广播与多播,让 DHCP、mDNS 发现,甚至非 IP 协议都像大家在同一台交换机上一样工作。代价是额外的开销和更大的爆炸 半径——一个横跨公网的广播域,就是一个能在公网上出岔子的广播域。

只有当你确实需要广播语义、或者有一台死活不会路由的老设备时,才选 L2。其余情况下 L3 要操心的更 少。(包括那些 L3 工具在内,大多数仍提供 “subnet router” 或 “gateway”,用来把节点背后的真实 局域网暴露出来。)

NAT 穿透与中继

每个 overlay 是成是败,都在这一环。躲在 NAT 后面的两个节点没法直接互拨:它们需要类似 STUN 的 机制去发现自己的公网映射,再协同打洞,在两侧各开一条通路。当这套失败时——对称 NAT、激进的 CGNAT、封锁严格的防火墙——流量就回落到双方都能到达的中继上。

名字不同,形状一模一样:Tailscale 有 DERP,ZeroTier 有 roots 和 “moons”,NetBird 有 relay, Nebula 有 lighthouse,EasyTier 有中继。由此得出的工程事实在哪里都一样:

  • 汇合节点位于建立连接的关键路径上。多跑几个,最好分布在不同厂商。
  • 中继是失败路径,但对每一对打洞失败的节点来说,它就是数据路径,所以要按此规模来配。
  • 不要设计一套依赖直连的拓扑。 打洞是尽力而为的。如果你的方案在两个节点走中继时就崩, 那这方案本身就是错的。

自托管的能力

这是大家真正在意的一个维度,所以我说具体些:

  • Nebula 与 EasyTier 从构造上就是自托管的。没有需要你退出的云——CA、或者共享密钥, 都是你自己的。
  • NetBird 把自托管当作头等选项,提供开源的 management server。
  • ZeroTier 允许你跑自己的 controller,托管的 Central 只是默认值。
  • Tailscale 是这里托管优先的产品;自托管路线是 Headscale,由社区维护。

值得说一句:“自托管”不一定等于”容器泛滥”。支撑我这张网的那台公网节点,就是一台普通的 VPS 上 跑着一个 systemd 服务,完全没有 Docker——跟我写在 不用 Docker 做自托管 里的做法一样。控制面也只是一个 守护进程,用 unit 文件来跑就很舒服。

客户端广度与锁定成本

客户端广度: Tailscale 与 ZeroTier 的覆盖面最广,包括移动端和 NAS 包。NetBird 的覆盖很宽 且在持续变好。Nebula 的覆盖面偏窄、也更手动——适合你自己掌控的固定机群,对手机这类就不太友好。 EasyTier 覆盖的平台也相当多,而且是往另一个方向上独树一帜:它小到能跑在嵌入式硬件上,这点我是 亲手验证过的。这里的规则很简单:自己去核对当前的平台列表,因为”我们支持 X”是个会移动的靶子。

锁定成本跟随控制面走。如果协调、身份和 ACL 都挂在厂商的云上,那即便数据面开源,这就是你的 退出成本。Nebula 与 EasyTier 的锁定最小:你的 CA 或密钥就是信任锚点,没有账号要迁移。NetBird 和自托管的 ZeroTier 居中。托管的 Tailscale 最省事,也最黏。无论哪种,迁移都意味着给节点重新编址、 重新配密钥——所以在规模上去之前权衡,而不是之后。

横向对比:那些不会变的架构属性

项目控制面数据面overlay 层级可自托管控制面成员模型
Tailscale托管(闭源服务器)派生自 WireGuardL3经由 Headscale(社区)来自控制面的身份 + ACL
ZeroTier默认托管自研 UDPL2(以太网),也可 L3可以(开源 controller)网络 ID + 授权成员
NetBird开源、可自托管WireGuardL3可以(头等支持)IdP / SSO + ACL
Nebula无(自己跑 lighthouse)自研(基于 Noise)L3唯一模式来自自建 CA 的证书
EasyTier去中心化(无控制器)自研,跑在 UDP/TCP/WS/QUIC/WG 上L3唯一模式网络名 + 共享密钥

刻意保持定性。这些属性是架构性的、稳定的;而免费额度、席位数、价格、以及哪个功能被锁在付费档 里,则不是——见文末的提示。

同样的活,五种 CLI 怎么做

上手方式很能说明模型。以下都是常见且稳定的调用形式;参数会漂移,所以把它们当路标,别当圣旨。

# Tailscale:向托管控制面完成认证
sudo tailscale up

# ZeroTier:用一个 16 位网络 ID 加入(然后在 Central 里授权)
sudo zerotier-cli join 8056c2e21c000001

# NetBird:向你的 management server / IdP 注册,然后连接
sudo netbird up

# Nebula:带着配置和由你自己 CA 签发的节点证书运行
sudo nebula -config /etc/nebula/config.yml

# EasyTier:没有控制器——只要网络名、密钥,以及一个用于会面的 peer
sudo easytier-core \
  --network-name awin-mesh \
  --network-secret "$(cat ~/.config/et/secret)" \
  --dhcp --peers udp://anchor.example.com:11010

按顺序读下来,理念就漏出来了:Tailscale 给你做认证,ZeroTier 给你做授权,NetBird 给你做注册, Nebula 信任一张你签发的证书,EasyTier 只问你知不知道那个密钥。

EasyTier 在这个博客里的位置

我在这里跑的是 EasyTier,所以我把理由说白:去中心化意味着没有控制面依赖、也没有账号,网络 从一份 peer 列表收敛出来,而且它足够轻,能跑在一台我用两根手指就能捏住的机器上。整套流程—— 安装、组网、用 easytier-cli peer 验证、暴露服务——都在 用 EasyTier 搭建私有 mesh 里。真正让我信服的是协议本身 而非营销的那一次,是 用 C 在一个 ESP32-C3 上跑起真实节点:如果一张网能在 400KB 内存里装下路由表并完成加密握手,那它就是一个真实的协议。

这是一种偏好,而不是说它在每个维度上都赢。它没有托管的 SSO,没有看板,共享密钥也是一道全有或 全无的边界。清楚自己在买什么就好。

怎么选

  • 想要零运维、小团队、SSO/ACL,且不介意把”大脑”托管出去: Tailscale。
  • 需要类局域网 L2、广播,或者有一台犟脾气的遗留设备: ZeroTier。
  • 想要开源 + 可自托管控制面 + WireGuard + 由 IdP 驱动的 ACL: NetBird。
  • 拥有一支你完全掌控的固定机群,想要自己的 CA、不要账号、甚至要离线隔离: Nebula。
  • 想要去中心化、无控制器、对嵌入式友好、运行成本最低且完全归你所有: EasyTier。
  • 已经深度绑定 Tailscale,但必须自托管控制面: 试试 Headscale——但要清楚它是社区维护的。
  • 不管你选哪个: 在不同厂商各跑一个汇合节点,核实路径确实是直连的,并把密钥或 CA 私钥 当作边界来对待。

具体数字请以各家当前页面为准

我刻意没有在这篇文章里写免费额度的设备数、席位数、价格,也没有做逐项打勾的功能对照表:这些东西 一直在变,而博客是冻结它们的最糟场所。用这篇文章看架构和取舍——控制面、数据面、L2/L3、 NAT 穿透、自托管、锁定成本——然后在你决定之前,去核对每一家当前的定价与平台页面。架构明年仍然 成立;数字不会。