Homelab 网络系列:Backup Path:ZeroTier P2P 和 Sing-box Inbound 为什么还留着

系列导航

  1. Homelab 网络系列:开篇 - 家庭网络为什么会变复杂
  2. Homelab 网络系列:RouterOS 主网关和 WRT 旁路由为什么要分工
  3. Homelab 网络系列:透明代理 VIP、VRRP 和 Fallback DNS
  4. Homelab 网络系列:NetBird ACL:Mobile Devices / MacBook 如何访问 Homelab / Hometown / Office 网络
  5. Homelab 网络系列:Backup Path:ZeroTier P2P 和 Sing-box Inbound 为什么还留着
  6. Homelab 网络系列:自动化和可恢复性:订阅生成、健康检查、配置同步、回滚

背景

前一篇讲 NetBird 的位置:它是日常 Admin Overlay,负责 Portable Devices (Admin) 访问 Homelab / Hometown / Office / DC-101 的 Peer 和 Route。

但日常路径稳定,不等于可以删掉所有 Backup Path。

我保留 Backup Path 的原因很简单:网络真正坏的时候,最危险的不是某条链路慢,而是所有入口都依赖同一个控制面。

如果 NetBird 的 ACL、Control Plane、客户端状态、WRT 上的 Route Table 其中任何一层出问题,我仍然需要一条可以进去看的路。这个入口不一定舒服,也不一定承担完整路由,但它必须尽量和主路径解耦。

所以这里保留了两类 Backup Path:

  • ZeroTier:保留 P2P Peer 能力,不作为主要 Network Route
  • Sing-box Inbound:Homelab / Office-JT 的备用入口,由 WRT 承载

它们不是为了替代 NetBird,而是为了在 NetBird 不好用的时候,还有办法登录、确认状态、修配置。

先把路径分层

这套网络里容易混淆的地方,是“能连进去”的方案很多,但每条路径解决的问题不一样。

我现在大概这样分:

路径 角色 平时是否主用 失败时看什么
NetBird 日常 Admin Overlay Peer、ACL、Route、回程
ZeroTier P2P Emergency Peer Peer 是否在线、能否 SSH
Sing-box Inbound 公网备用入口 入口转发、WRT Inbound、下游 LAN Route
RouterOS / WRT Fallback Homelab 内部降级 是内部兜底 VIP、VRRP、DNS、普通出口

这里要避免一个误区:Backup Path 不是另一套完整生产网络。

如果把 ZeroTier 也做成完整站点路由,把 Sing-box Inbound 也做成常规默认代理,再把 NetBird 也当主入口,最后不是高可用,而是三套状态互相覆盖。排障时会先问“现在到底走哪条路”,而不是直接定位问题。

所以 Backup Path 的目标要窄:

  • 能确认远端节点是否活着
  • 能进入 WRT 或 RouterOS 看状态
  • 能在必要时修 NetBird / Sing-box / Route / ACL
  • 不承担普通客户端的默认访问
  • 不改变 Homelab 内部主网关职责

ZeroTier 为什么只保留 P2P

ZeroTier 仍然有效,但我没有把它作为主 Network Route 使用。

原因不是它不能做 Route,而是这里已经有 NetBird 负责 Admin Overlay。如果再让 ZeroTier 也发布站点网段,问题会变成:

  • 同一个站点有多套 Overlay Route
  • Portable Devices (Admin) 的访问边界分散到多个控制面
  • 回程路由和 NAT 排障要同时考虑 NetBird / ZeroTier
  • 某条路径偶然能通,容易掩盖主路径设计问题

这和 Backup Path 的目的相反。

我保留 ZeroTier 的价值主要是 Peer-level Emergency Access。比如远端站点离现场足够远,NetBird 或主入口出了问题时,ZeroTier Peer 只要还能起来,就可以作为第二条 SSH / Ping / Status Path。

它不需要知道所有 LAN Route,也不需要给普通客户端下发 Route。它只要能回答一个问题:主 Overlay 坏了以后,我还能不能进到关键节点上看一眼。

这个定位也让它更容易维护。ZeroTier 出问题时,不会影响 Homelab 的默认访问;ZeroTier 正常时,也不会改变 NetBird 的 ACL 和 Route 语义。

Sing-box Inbound 为什么放在 WRT

另一条 Backup Path 是 Sing-box Inbound。

它的形态更像传统公网入口:

  • RouterOS 保持公网入口和端口转发边界
  • 入站流量被转到对应站点的 WRT
  • WRT 上的 Sing-box Inbound 接住连接
  • 再访问 Homelab 或 Office-JT 的管理 LAN

我没有把这部分塞进 RouterOS。原因和前面几篇一样:RouterOS 是主网关,要兜住日常国内访问和基础网络;WRT 是额外能力层,适合承载 Sing-box、NetBird、ZeroTier 这类变化快、需要包管理和日志的东西。

Sing-box Inbound 放在 WRT 上,坏了也只是坏掉这条备用入口。它不应该影响普通客户端上网,也不应该改变 RouterOS 的主出口策略。

这里还有一个边界:Sing-box Inbound 是入口,不是 Homelab 内部透明代理 VIP。

透明代理 VIP 解决的是 Homelab 内部某些客户端如何出站;Sing-box Inbound 解决的是人不在现场时如何从外面进来。它们都由 WRT 承载,但故障域不一样。

sequenceDiagram
  participant Admin as Portable Devices (Admin)
  participant NetBird as NetBird Admin Overlay
  participant ZeroTier as ZeroTier P2P
  participant RouterOS as RouterOS Ingress Edge
  participant WRT as Homelab / Office-JT WRT
  participant LAN as Management LAN

  rect rgb(240, 250, 244)
    Note over Admin,LAN: 日常路径:NetBird 管 Peer、ACL、Route
    Admin->>NetBird: Connect as Portable Devices (Admin)
    NetBird->>WRT: Permitted Peer or Site Route
    WRT->>LAN: Routed or NATed Admin Access
  end

  rect rgb(255, 248, 230)
    Note over Admin,WRT: Emergency Path:ZeroTier 只保留 P2P 管理能力
    Admin->>ZeroTier: Reach Emergency Peer
    ZeroTier->>WRT: Ping / SSH / Status Check
  end

  rect rgb(245, 248, 255)
    Note over Admin,LAN: Backup Ingress:Sing-box Inbound 由 WRT 接住
    Admin->>RouterOS: Public Ingress to Backup Port
    RouterOS->>WRT: DNAT to Sing-box Inbound
    WRT->>LAN: Downstream Management Access
  end
sequenceDiagram
  participant Admin as Portable Devices (Admin)
  participant NetBird as NetBird Admin Overlay
  participant ZeroTier as ZeroTier P2P
  participant RouterOS as RouterOS Ingress Edge
  participant WRT as Homelab / Office-JT WRT
  participant LAN as Management LAN

  rect rgb(240, 250, 244)
    Note over Admin,LAN: 日常路径:NetBird 管 Peer、ACL、Route
    Admin->>NetBird: Connect as Portable Devices (Admin)
    NetBird->>WRT: Permitted Peer or Site Route
    WRT->>LAN: Routed or NATed Admin Access
  end

  rect rgb(255, 248, 230)
    Note over Admin,WRT: Emergency Path:ZeroTier 只保留 P2P 管理能力
    Admin->>ZeroTier: Reach Emergency Peer
    ZeroTier->>WRT: Ping / SSH / Status Check
  end

  rect rgb(245, 248, 255)
    Note over Admin,LAN: Backup Ingress:Sing-box Inbound 由 WRT 接住
    Admin->>RouterOS: Public Ingress to Backup Port
    RouterOS->>WRT: DNAT to Sing-box Inbound
    WRT->>LAN: Downstream Management Access
  end
sequenceDiagram
  participant Admin as Portable Devices (Admin)
  participant NetBird as NetBird Admin Overlay
  participant ZeroTier as ZeroTier P2P
  participant RouterOS as RouterOS Ingress Edge
  participant WRT as Homelab / Office-JT WRT
  participant LAN as Management LAN

  rect rgb(240, 250, 244)
    Note over Admin,LAN: 日常路径:NetBird 管 Peer、ACL、Route
    Admin->>NetBird: Connect as Portable Devices (Admin)
    NetBird->>WRT: Permitted Peer or Site Route
    WRT->>LAN: Routed or NATed Admin Access
  end

  rect rgb(255, 248, 230)
    Note over Admin,WRT: Emergency Path:ZeroTier 只保留 P2P 管理能力
    Admin->>ZeroTier: Reach Emergency Peer
    ZeroTier->>WRT: Ping / SSH / Status Check
  end

  rect rgb(245, 248, 255)
    Note over Admin,LAN: Backup Ingress:Sing-box Inbound 由 WRT 接住
    Admin->>RouterOS: Public Ingress to Backup Port
    RouterOS->>WRT: DNAT to Sing-box Inbound
    WRT->>LAN: Downstream Management Access
  end

Backup Path 不应该自动接管

我没有让这些 Backup Path 自动接管主路径。

这点很关键。

VRRP 的自动接管适合 Homelab 内部代理 VIP:客户端只认 10.1.1.253,WRT L1 健康失败时 RouterOS 接管,结果是代理能力降级,但普通访问还能走。

但远程管理入口不一样。这里如果做自动接管,很容易把故障隐藏起来:

  • NetBird 不通时,流量悄悄走 ZeroTier
  • Site Route 不通时,临时 Sing-box Inbound 变成常规路径
  • 回程路由错了,但另一个 Backup Path 让测试看起来通过

这种“看起来能用”会让设计慢慢失真。

所以我更倾向于显式切换:

  • 日常先看 NetBird
  • NetBird 不通,再看 ZeroTier Peer 是否能进
  • 需要公网入口时,才走 Sing-box Inbound
  • 修完后,回到 NetBird 和正式 Route 模型

Backup Path 的价值是救援,不是制造第四个日常控制面。

和 Office 网络的边界

Office-JT / Office-SQ / DC-101 的日常用户流量不是 NetBird,也不是这些 Backup Path。

Office 那边还有 RouterOS、WireGuard、PCC、VLAN、Switch Bonding 等一整套问题。那些路径解决的是办公室的用户流量和站点级路由,不应该混到 Homelab 系列里展开。

在这篇里,Office 只作为远端管理目标出现:

  • NetBird:日常 Admin Overlay
  • ZeroTier:远端 Peer 级别的 Emergency Access
  • Sing-box Inbound:Office-JT 的备用入口

至于 Office 为什么用 WireGuard 承载日常流量,为什么 RouterOS 内部处理策略会不一样,那应该是另一个系列。

验证

Backup Path 的验证也不能只看“客户端显示在线”。

我会按路径拆:

  • NetBird:Portable Devices (Admin) 是否在线,ACL 和 Site Routes 是否符合预期
  • ZeroTier:Peer 是否能 P2P,是否能 Ping / SSH 到关键 WRT Peer
  • Sing-box Inbound:公网入口是否到 WRT,WRT Inbound 是否监听,下游 LAN Route 是否能回
  • RouterOS:入口 DNAT 是否仍由 RouterOS 管,是否没有把 Backup Path 做成普通默认路径
  • WRT:Sing-box / NetBird / ZeroTier 的日志能否分别定位问题

这里最重要的验证,是故障域不要串。

ZeroTier 不应该因为 NetBird Route 更新失败而改变行为;Sing-box Inbound 不应该因为透明代理 VIP 切换而被误判;RouterOS 主网关不应该因为某个 Backup Path 的服务重启而影响普通客户端。

最后的结论

NetBird 是日常 Admin Overlay,ZeroTier 和 Sing-box Inbound 是 Backup Path。

ZeroTier 只保留 P2P Emergency Access,不作为主要站点 Network Route。

Sing-box Inbound 由 WRT 承载,用来提供 Homelab / Office-JT 的备用入口,不进入普通客户端默认访问路径。

这套设计的重点不是“入口越多越安全”,而是每条入口都有清楚边界。日常路径、救援路径、内部 Fallback 分开之后,故障时才能知道应该查 ACL、Peer、入口转发、WRT 服务,还是下游 LAN 回程。