AI 数据通道:JSON·Markdown

元认知:从传统 VPN 到 Mesh VPN 的范式转变 #

传统 VPN(OpenVPN、IPsec)是星型拓扑:所有节点连到中心服务器,节点间通信经服务器中转。这带来三个问题:

1
2
3
4
5
节点 A ──→ 中心服务器 ←── 节点 B
↑
1. 服务器宕机 = 全断(单点故障)
2. 所有流量过服务器(带宽瓶颈)
3. 两端都在 NAT 后?服务器做中继(延迟翻倍)

Mesh VPN 改变了一个根本假设:节点之间可以直接通信,不需要中转。拓扑从星型变成全连接:

1
2
3
节点 A ←──直连──→ 节点 B
↕ ↕
节点 C ←──直连──→ 节点 D

但”Mesh”只是一个拓扑概念。实现 Mesh 的方式可以完全不同——有的用 WireGuard,有的用自研协议,有的甚至不建隧道(零信任)。选 Mesh VPN 不是选”哪个最好”,是选”哪种协议 + 哪种拓扑 + 哪种故障策略适合你的场景”。

要理解 13 个方案的差异,需要五个原理维度。


搭积木:五个原理维度 #

维度一:底层协议——WireGuard 为什么赢了 #

协议派系代表方案原理特点
WireGuardTailscale / NetBird / Netmaker / EasyTier / Firezone / InnerNet内核态、4000 行代码、UDP、Noise 协议框架
自研协议ZeroTier(L2)/ Nebula(Noise)/ Tinc / Yggdrasil各有侧重:L2/去中心化/纯 P2P
零信任OpenZiti / NetFoundry不建隧道,做应用层身份访问

13 个方案中,6 个基于 WireGuard。这不是巧合——WireGuard 在协议层面赢了,原因有三:

1. Noise 协议框架:1-RTT 握手

WireGuard 用 Noise IK 模式做密钥协商——1 个往返(1-RTT)完成握手,之后数据直接加密传输。对比 IPsec 的 IKEv2 需要 2-3 个往返,WireGuard 的连接建立快一个数量级。

整个协议只有 4 种消息类型(握手发起、握手回应、cookie、传输数据)。代码量约 4000 行——OpenVPN 超过 10 万行,IPsec 的 StrongSwan 超过 50 万行。代码少意味着可审计、漏洞少、攻击面小。

2. 内核态:性能接近裸线

WireGuard 在 Linux 内核态运行——数据包不需要在用户态和内核态之间拷贝。这是它”最快”的根本原因。后续会看到,Tailscale 用的是 wireguard-go(用户态 Go 实现),有额外拷贝开销,直连时差异在 5% 内,但理论上不如内核 WireGuard 快。

3. UDP-only:避免 TCP-in-TCP 塌陷

WireGuard 只用 UDP。这是刻意设计——如果在 TCP 上封装加密隧道,TCP 的拥塞控制会和内层 TCP 冲突(TCP-in-TCP),性能会塌陷到原来的 1/10。

但 UDP-only 有代价:UDP 被封锁的网络里,WireGuard 直接失效。这是为什么 Tailscale 发明了 DERP fallback(后面讲)。

Nebula 也用 Noise 协议框架,但不是 WireGuard——它自研了基于 Noise 的控制面(Lighthouse),加密用 AES-256-GCM。Slack 用它在生产环境跑了 5 万+ 节点。

维度二:网络层级——L2 vs L3 vs 应用层 #

层级方案能做什么不能做什么
L2(链路层)ZeroTier广播、多播、非 IP 协议、二层发现性能略低
L3(IP 层)Tailscale / NetBird / Netmaker / Nebula / Firezone / InnerNetIP 路由、TCP/UDP广播、非 IP 协议
应用层OpenZiti身份级访问、零信任不做网络层打通

90% 的场景 L3 够用。 但 L2 有不可替代的刚需场景:

  • mDNS/Bonjour 跨网段:Apple 设备的 AirDrop、HomeKit 用 mDNS 发现,L3 的 IP 路由跨不过子网边界。只有 L2 能让两地的设备在同一个广播域里互相发现
  • 老旧工业协议:某些工业控制协议(Modbus 广播、EtherCAT)依赖二层广播
  • 游戏局域网发现:部分老游戏的局域网联机用二层 ARP 发现

ZeroTier 是 13 个方案中唯一的主流 L2 方案。它封装的是以太网帧(不只是 IP 包),多了 L2 头部开销,但换来了广播能力。这就是为什么即使有 WireGuard,ZeroTier 仍有不可替代的位置。

OpenZiti 的”应用层”和 L2/L3 是正交的——它不解决”网络通不通”,解决的是”谁能访问什么应用”。它的 Zero Trust 模型把身份而非 IP 作为网络的核心:没有开放端口,服务对互联网不可见,只有认证身份才能访问。

维度三:拓扑方式——控制面 vs 数据面 #

这是理解稳定性差异的关键维度。控制面(谁能加入、密钥分发)和数据面(实际流量走哪)是两个独立的维度:

拓扑控制面数据面代表方案
混合中心服务器P2P 直连Tailscale / ZeroTier / NetBird
去中心LighthouseP2P 直连Nebula
完全 P2P无P2PYggdrasil / Tinc

Tailscale 的巧妙:控制面中心化(简单),数据面 P2P(快)。协调服务器只做密钥分发和节点发现,不参与数据转发。一旦节点间建立直连,流量不经过 Tailscale 的服务器。

但控制面依赖 Tailscale 的 SaaS——这是 Headscale(自建替代)存在的理由。Headscale 让你享受 Tailscale 的客户端体验,但控制面完全自控。

Nebula 的 Lighthouse 不是传统服务器——它是”协调节点”,只帮助节点互相发现 + UDP 打洞。Lighthouse 宕机不影响已建立的 P2P 连接,但新连接建立会受影响。可以配多个 Lighthouse 实现冗余。

Yggdrasil 是真正的无中心——纯 ad-hoc P2P 路由,没有任何”协调节点”。代价是没有统一管理入口,配置靠手动 peer。

维度四:NAT 穿透与稳定性——哪个最稳定 #

这是最实际的维度:在真实网络环境下,哪个方案最不会断?

NAT 穿透是 Mesh VPN 的核心技术挑战。Tailscale 的研究数据揭示了真实情况:

NAT 组合穿透方法成功率/耗时
一端 Easy NAT(EIM)STUN + 同时发包~100%
一端 Hard NAT(对称 NAT)birthday attack50% 需 174 次探测(2 秒);99.9% 需 2048 次(20 秒)
两端 Hard NATbirthday attack99.9% 需 170,000 次(~28 分钟)→ 通常放弃

只需路径中有一个 Hard NAT,简单穿透即失败。 Hard NAT 常见于企业路由器和云 NAT 网关;家用路由器多是 Easy NAT。

基于这个现实,各方案的稳定性差异如下:

方案P2P 成功率Fallback 机制稳定性评价
Tailscale>90%DERP 全球 relay(HTTPS 伪装,DERP 无法解密流量)最稳定:即使 UDP 被封,DERP 走 HTTPS 仍通
Nebula依赖 UDP 打洞无明确 fallback可控网络下稳定;Hard NAT 场景可能连不上
ZeroTier高(root servers 辅助)Root servers 中转多 root 冗余,较稳定
OpenZitiFabric 智能路由多 Router 冗余架构韧性,但依赖 Fabric 部署
Yggdrasil自愈网络无 fallback 概念无单点,但 alpha 阶段不稳定

Tailscale 最稳定的根本原因:DERP(Designated Encrypted Relay for Packets)是”保底连通”机制。它用 HTTP/HTTPS 流传输——即使网络封锁了所有 UDP(如企业 guest Wi-Fi),DERP 仍能走 HTTPS 端口通。DERP 服务器无法解密流量——私钥永不离开节点,DERP 只盲目转发已加密数据包。

这是 Tailscale 的双层保险:超过 90% 的节点对能 P2P 直连(快),剩余不到 10% 由 DERP 保底连通(慢但通)。99.9% 的场景都能连通——这就是”最稳定”的工程含义。

Nebula 没有 DERP 类 fallback。如果两端的 NAT 都是 Hard 类型,Nebula 可能根本连不上——没有 fallback 机制兜底。在可控网络环境(如云服务器之间、自建数据中心)Nebula 极其稳定,但在不可控的互联网环境,它的连通性不如 Tailscale。

Yggdrasil 明确标注自己 still alpha-stage,代码未经正式安全审计,”不应在 mission-critical 工作负载上运行”。它的自愈能力是真的,但整体稳定性不足以用于生产。

维度五:性能对比——哪个最快 #

方案吞吐量延迟连接建立性能瓶颈
WireGuard(内核态)最高(接近裸线)μs 级开销快无
Tailscale(wireguard-go)略低于内核 WireGuard(~5% 内)直连低;DERP 有中继延迟>90% 秒级;Hard NAT 2-20s用户态拷贝开销
Nebula(Go + AES-256-GCM)高低依赖 Lighthouse 发现Go 运行时开销
ZeroTier(L2 封装)L2 开销略高略高快以太网帧封装
YggdrasilMTU 65535 优化自愈快需配 peeralpha 阶段不稳定
OpenZitiFabric 路由优化未公布具体数字依赖 Tunneler 模式应用层处理

WireGuard 最快的根本原因:

  1. 内核态运行——数据包不在用户态和内核态之间拷贝
  2. 代码量 4000 行——无冗余逻辑,执行路径短
  3. 只做加密传输——不做策略、不做 ACL、不做日志,这些都在上层处理

WireGuard 本身不是一个完整的 Mesh VPN 方案——它是数据平面协议。Tailscale / NetBird / Nebula 都构建在 WireGuard(或类似协议)之上,差异主要在控制平面和 NAT 穿透层,而非加密传输本身。

Tailscale 略慢的原因:用 wireguard-go(用户态 Go 实现),有用户态↔内核态拷贝开销。但直连时差异在 5% 内——对大多数应用不可感知。DERP fallback 时延迟显著增加(中继跳数 + HTTPS 封装),但这是”慢但通”的兜底,不是常态。

ZeroTier 的 L2 代价:封装的是以太网帧(不只 IP 包),多了 L2 头部开销。实际吞吐量比 L3 方案低约 5-15%(估计值,取决于场景),但换来了广播能力——这是 L2 方案的固有 tradeoff。

纯内核 WireGuard 最快。在完整方案中,Nebula 和内核 WireGuard 方案最快(无用户态开销),Tailscale 直连时接近,DERP fallback 时最慢。


案例即原理:四个场景的最佳方案 #

场景一:个人自用(2-5 台设备) #

需求最佳方案理由
最省心Tailscale(官方 SaaS)5 分钟组网,>90% 直连,DERP 保底,免费额度够用
想自建Tailscale + Headscale同客户端体验,控制面自控,数据不出门
极客玩家Yggdrasil完全 P2P,体验另一种网络哲学,但 alpha 不稳定

个人场景的核心诉求是”能用、不折腾”。Tailscale 的 SaaS 方案安装即用,DERP 保底意味着你几乎不会遇到”连不上”的情况。如果介意数据经过 Tailscale 的协调服务器,Headscale 是自建替代——同样的客户端,控制面自己控。

场景二:小团队(10-50 台设备) #

需求最佳方案理由
跨地点协作Tailscale / NetBirdACL + MagicDNS,按人授权
需要 Web 管理后台NetBird / FirezoneWeb UI 比 CLI 更适合团队协作
需要 L2 广播ZeroTier唯一的 L2 主流方案,跨网段 mDNS

团队场景的核心诉求是”可管理”。Tailscale 的 ACL 按用户/标签授权(”dev 团队能访问 staging,不能访问 production”),MagicDNS 让你用 db.internal 而非 10.0.0.5 访问服务。NetBird 和 Firezone 提供自建的 Web 管理后台,适合不想依赖 SaaS 的团队。

场景三:极客/去中心化 #

需求最佳方案理由
不依赖任何中心Yggdrasil完全 P2P,自分配 IPv6,但 alpha 阶段
Slack 同款Nebula5 万节点生产验证,Lighthouse 架构
国产/中文社区EasyTier文档中文,兼容多平台

极客场景的核心诉求是”不依赖第三方”。Yggdrasil 是最极端的选择——没有任何中心节点,每个节点既是客户端又是路由器。但代价是 IPv6 only、会为他人路由流量、不稳定。Nebula 是更务实的选择——Lighthouse 是你自己的服务器,但你只负责发现,不负责数据中转。

场景四:特殊场景 #

需求最佳方案理由
L2 广播/多播ZeroTier唯一主流 L2,mDNS/工业协议刚需
零信任应用层OpenZiti身份即网络,服务无开放端口
K8s 跨集群Netmaker原生 K8s 支持,大规模节点
老牌极端稳定Tinc20 年历史,协议成熟

OpenZiti 是 13 个方案中最特殊的一个——它不是传统 VPN 的替代品,是安全模型的升级。传统 VPN 的逻辑是”连上内网就能访问内网”,OpenZiti 的逻辑是”deny by default,只有明确授权的身份才能访问特定应用”。服务没有开放端口,对互联网扫描工具不可见。如果安全比连通更重要,OpenZiti 是正确选择。


缺陷与批判:每个方案的硬伤 #

Tailscale #

  • 控制面默认在 SaaS:依赖 Tailscale 公司的协调服务器。Headscale 是自建替代,但功能滞后官方(新特性如 Funnel、Serve 需要等社区适配)
  • wireguard-go 用户态:比内核 WireGuard 慢约 5%。对性能敏感场景(如大文件传输)可感知
  • DERP 不是免费的:免费用户的 DERP 流量有带宽限制

ZeroTier #

  • L2 性能开销:封装以太网帧的代价,吞吐量比 L3 方案低 5-15%
  • Moon/Controller 自建文档少:官方文档偏向 SaaS 方案,自建 Controller 和 Moon 节点需要翻社区帖子
  • 免费额度限制:免费版限 25 个设备

Nebula #

  • 无 DERP 类 fallback:Hard NAT 场景可能连不上——没有兜底机制
  • Lighthouse 单点:虽然可配多个,但文档没有详细的高可用配置指南
  • 无 Web UI:纯配置文件管理,不适合非技术用户

Yggdrasil #

  • 官方明确 alpha 阶段:不应在生产环境使用
  • 未经安全审计:加密实现用了 Go 标准库,但代码库无正式外部审计
  • 会为他人路由流量:你的节点会为其他 Yggdrasil 用户中转流量——流量受限的用户需注意
  • IPv6 only:只传输 IPv6 流量,部分老旧应用不兼容

OpenZiti #

  • 学习曲线陡:不是传统 VPN 替代品,需要理解身份、服务、策略、Tunneler 等概念
  • 不是网络层打通:如果你需要”ping 对方 IP”,OpenZiti 不是正确选择——它做的是应用级访问,不是 IP 级连通

“完全自建”的陷阱 #

自建不等于更好。自建意味着你是运维——你要负责可用性、版本升级、密钥轮换、故障排查。Tailscale 的 DERP 全球 relay 网络是 Tailscale 公司在维护,你自建 NetBird 时,relay 服务器的高可用是你的责任。

选择”完全自建”之前,问自己:我有没有能力在凌晨 3 点排查 relay 服务器为什么连不上? 如果没有,SaaS 方案更务实。


总结:Mesh VPN 是什么 #

Mesh VPN 不是一种技术,是拓扑概念的升级——从星型(中心中转)到全连接(节点直连)。

三个关键选型轴:

轴选项决策依据
协议WireGuard / 自研 / 零信任除非要 L2 或零信任,选 WireGuard
层级L2 / L3 / 应用层除非要广播,选 L3
控制面中心 / 去中心 / 完全 P2P省心选中心(Tailscale),可控选去中心(Nebula)

最稳定:Tailscale。DERP 保底 + >90% 直连 + 全球 relay。即使 UDP 被封锁仍能通。代价是控制面依赖 SaaS。

最快:纯内核 WireGuard。完整方案中 Nebula 最快(无用户态开销 + AES-256-GCM 硬件加速)。Tailscale 直连时接近,DERP fallback 时最慢。

不可替代:ZeroTier(唯一 L2)/ OpenZiti(唯一零信任)/ Yggdrasil(唯一完全 P2P)。

硬件画线(内核态 vs 用户态决定性能上限),拓扑分层(控制面 vs 数据面决定稳定性),穿透保底(DERP 决定最坏情况下的连通性)。选 Mesh VPN 不是选”最好”的,是选”恰好够用”的——一个在 Hard NAT 后面仍能连通的 Tailscale,比一个理论最快但连不上的方案更有价值。