既然你希望保留 WireGuard 的高性能和内核级稳定性,同时又想要比手动配置更方便的“直连(P2P/Mesh)”管理,而不希望流量经过一个像 Easy-WG 那样的中心中继节点,这里有几个非常适合 PVE 环境的方案:


1. Netmaker (最推荐的内核级 Mesh 方案)

Netmaker 是目前最接近“内核级 Tailscale”的方案。它专门为追求极致性能的场景设计。

  • 直连机制:它通过一个中心控制面板(Server)管理配置,但节点之间使用 内核原生 WireGuard 建立全连接网格(Full Mesh)。
  • 为什么适合你:
  • 内核模式:默认使用 Linux 内核的 WireGuard 模块,避免了 Tailscale 那种用户态进程导致的系统死锁。
  • 极致性能:由于不走用户态转换,延迟和吞吐量几乎等同于原生 WireGuard。
  • 灵活性:它可以指定某个节点为“出口网关”,但默认情况下所有节点都是点对点直连。
  • 注意:它的配置比 Tailscale 略复杂,需要你自己部署一个轻量级的 Server 节点(可以放在云服务器或某个不关机的 LXC 里)。

2. Netbird (上手最快的 Mesh 方案)

Netbird 的体验非常接近 Tailscale,但它在架构上对“直连”和“自建”更加友好。

  • 直连机制:它结合了点对点连接和自动打洞技术。它也有中继服务器(TURN),但它会优先竭尽全力建立 P2P 直连。
  • 为什么适合你:
  • 开源自建:你可以完全自建它的 Management Server 和 Signal Server。
  • 管理界面:提供非常直观的 Web UI 来管理节点和访问控制规则。
  • 注意:它也有用户态客户端,但由于其逻辑比 Tailscale 稍简单,在 PVE 上的冲突报告相对较少。

3. Firezone (企业级的 WireGuard 管理器)

如果你不需要全自动的 Mesh,只需要一个能方便管理大量节点、生成配置文件的“图形化后台”,Firezone 是极好的选择。

  • 直连机制:它本质上是一个 WireGuard 的配置管理中心。它生成的每一个配置都是标准的 WireGuard 配置。
  • 为什么适合你:
  • 完全静态:它不干涉包的转发逻辑,只是帮你管理密钥、IP 分配和对端(Peer)关系。
  • 无 Agent 负担:你可以只用它来生成配置,然后在 PVE 上使用原生的 wg-quick 运行,没有任何第三方后台进程。

方案对比表

方案核心协议运行模式配置复杂度推荐理由
NetmakerWireGuard内核态 (Kernel)较高性能最强,原生内核支持,适合 PVE 宿主机
NetbirdWireGuard用户态 (可切换)低体验最好,打洞能力强
FirezoneWireGuard内核态 (静态)中只是管理界面,生成标准配置,无副作用
HeadscaleWireGuard用户态 (Tailscale)高如果你放不下 Tailscale 的生态,它是自建方案

💡 针对 PVE 稳定性的最终建议

不管你选择哪种管理工具,为了彻底避免之前遇到的 NFS/Ceph 导致的内核死锁,我强烈建议采用 “旁路网关” 模式:

  1. 宿主机不装任何 VPN 软件:保持 PVE 内核纯净。
  2. 创建 LXC 容器(Gateway):
  3. 在 LXC 里安装上述任何一种工具(如 Netmaker 客户端)。
  4. 开启 LXC 的 IP 转发功能。
  5. 路由指向:
  6. 在你的主路由器上增加一条静态路由:将 VPN 网段(如 10.8.0.0/24)的下一跳指向这个 LXC 的本地 IP。
  7. 或者在 PVE 宿主机上增加这条路由。

这样做的巨大好处是:
即使 VPN 容器内部因为网络波动、NFS 超时或者驱动问题卡死了,它只会导致那个容器崩溃,而绝对不会引发宿主机的内核信号量死锁,你的 PVE 依然可以正常访问,Ceph 依然可以稳定运行。


在 Netmaker 中,网络架构的设计直接决定了路由的复杂度和系统的安全性。以下是关于多个网络的创建时机、单内网的影响以及社区版限制的详细说明:

一、 在什么情况下需要创建多个网络?

创建多个 Netmaker 网络(Networks)的核心目的在于隔离和路由控制。以下情况强烈建议将节点拆分到不同的网络中:

  • 隔离协作者的网络环境:如果多个人或团队共同管理资源,将各自的节点划分到独立的网络中,可以有效避免内部 WireGuard 网络的路由冲突。例如,当协作者的活动网络或本地子网(如 192.168.x.x)与你的子网配置发生重叠时,物理拆分网络是防止流量黑洞最直接的方式。
  • 底层基础设施与应用层隔离:为了安全起见,通常需要为底层环境(例如跨地域的 PVE 高可用集群、存储复制节点)建立一个专属的 Mesh 网络;而将暴露在外的应用层服务(如运行 Docker 容器、反向代理、邮件服务器的节点)放在另一个网络中。这能确保即使应用层节点被攻破,攻击者也无法直接探测到虚拟化底层的通信。
  • 拓扑结构的差异化需求:某些场景下你需要全互联的 Mesh 拓扑(服务器之间互相通信),而在另一些场景下你只需要中心辐射型(Hub-and-Spoke)拓扑(例如只允许外部客户端连接到某个出口网关,但不允许它们互相通信)。针对不同的拓扑需求创建独立的网络,可以大幅简化访问控制列表(ACL)的配置。
  • 避免 CIDR 冲突:当需要连接分布在不同云厂商的 VPC,且这些 VPC 使用了相同的私有 IP 地址段时,将它们放入各自的 Netmaker 网络并分配不同的虚拟 Overlay 子网,可以避免路由表错乱。

二、 如果都放在一个内网里有什么影响?

将所有设备(服务器、个人终端、容器实例)全部接入单一的 Netmaker 网络,优势在于管理极其简单,所有节点开箱即能实现互通。但随着规模扩大,会带来以下负面影响:

  • 安全爆炸半径过大:单一扁平网络意味着所有节点在 Layer 3(网络层)上是直接互通的。如果网络中某个边缘节点或安全性较低的测试容器被攻陷,攻击者可以直接扫描并横向移动到整个网络内的所有核心基础设施。
  • 路由表极度膨胀(网络噪音):WireGuard 的 Mesh 架构会为网络内的每一个节点生成指向其他所有节点的对等(Peer)配置。在一个庞大的单内网中,任何一个节点的加入、退出或 IP 变动,都会触发控制平面向所有节点下发配置更新。这会导致配置同步变慢,并增加系统守护进程的负担。
  • 管理与排错困难:由于缺乏逻辑分组,在执行 wg show 等终端诊断命令时,你面对的将是密密麻麻、难以区分的公钥和 Endpoint IP。当出现非对称路由或连通性中断时,在一个庞大的扁平网络中定位故障点会比在模块化网络中耗时得多。

三、 免费社区版(Community Edition)有哪些限制?

Netmaker 近期对商业模式进行了较大幅度的调整,将大量特性转移到了 Pro 或企业版(SaaS/On-Prem),目前的免费社区版在规模和高级功能上有着非常严格的限制:

  • 设备与网络数量硬编码上限:

    • 通常被限制为最多运行 1 个服务器实例。
    • 最多只能创建 2 个网络(Networks)。
    • 严格的用户和节点数限制(目前最新的基础免费策略通常被限制在 3 个用户、10 个核心节点以及 10 个外部客户端左右)。
  • 高级权限与用户管理(RBAC):社区版仅提供最基础的用户管理和简单的 OAuth 接入。无法进行细粒度的权限控制(例如限制某个用户只能访问特定节点),也无法限制单个用户允许绑定的设备数量。
  • 监控与日志:缺少系统级的 Metrics 导出与高级流量监控面板。在复杂的网络状态下,这对于底层延迟和丢包的排查非常不利。
  • 高可用与企业级网关:社区版支持基础的入口/出口网关(Ingress/Egress)和中继(Relay),但自动化故障转移(Failover Servers)以及控制平面的高可用(HA)架构仅对付费用户开放。