最初只是想节省一根网线

我曾经尝试把客厅和书房之间的一根墙内网线承担更多职责:上级交换机连接书房交换机,书房路由器再回接交换机,希望借此完成所谓的“单线复用”。

实际接线接近这样:

1
2
3
4
5
6
7
主路由 / 上级交换机

│ 墙内网线

书房交换机 ── 路由器
▲ │
└───────────┘

在没有正确配置 VLAN、STP/RSTP 或链路聚合的情况下,这不是单线复用,而是一个二层物理环路。

为什么环路会拖垮整个网络

以太网交换机根据源 MAC 地址学习设备所在端口,但广播帧和未知单播帧需要向多个端口泛洪。二层帧没有类似 IP TTL 的天然跳数限制,一旦拓扑形成闭环,帧可能被重复转发,交换机的 MAC 地址表也会在不同端口之间来回震荡。

最终的表象通常不是一个整齐的错误提示,而是一组“玄学”症状:

1
2
3
4
5
6
交换机灯高频闪烁
全家网络突然变慢或断开
设备一会儿拿到地址,一会儿拿不到
Wi-Fi 显示已连接但无法访问网关
NAS、电视和电脑之间时通时不通
路由器管理页面也难以打开

STP 的作用正是为二层广播域选择一棵无环转发树,阻塞冗余路径,在主路径失效时再重新收敛。Cisco 的文档将其描述为通过选择性转发来消除环路,并保护广播域免受广播风暴影响,可参考 Spanning Tree Protocol

但家用非管理型交换机未必支持 STP,即使支持,也不能把“开了 STP”当成随意回接线路的许可证。

正确的单线复用依赖 VLAN

如果光猫与主路由不在同一位置,只有一根墙内网线,却必须同时承载 WAN、LAN 或 IPTV,正确方式通常是:

1
2
3
4
5
6
7
8
9
光猫 / 主路由

支持 VLAN 的管理型交换机
│ 802.1Q Trunk

支持 VLAN 的管理型交换机
├─ Access 端口:WAN
├─ Access 端口:LAN
└─ Access 端口:IPTV

Trunk 在线路中传输多个带标签 VLAN;末端交换机再通过 Access 端口、PVID 和 Tagged/Untagged 规则把不同广播域交给正确设备。它解决的是“同一物理链路承载多个逻辑网络”,不是把同一个广播域随意首尾相连。

部署前至少要对齐:

  • 两端交换机都支持 802.1Q VLAN。
  • 每个端口的 PVID、Tagged、Untagged 规则一致。
  • WAN 与 LAN 不能意外落入同一广播域。
  • 管理地址仍有可靠的回滚访问路径。
  • 变更前保存配置,并准备逐根拔线恢复的方案。

我最后选择的拓扑

家庭主网恢复成了一棵容易解释的树:

1
2
3
4
5
6
7
8
9
10
11
12
13
光猫

主路由(唯一 DHCP)

上级交换机

墙内链路

书房交换机
├─ NAS
├─ 台式机
├─ Home Assistant
└─ 独立代理路由器 WAN

其中:

  • 主路由只保留一个,DHCP 只保留一个权威来源。
  • Mesh 节点工作在 AP 模式,不再参与主网路由。
  • 代理路由器从交换机取得 WAN,上游故障不会被它反向传播。
  • 实验网络与稳定主网分离,代理插件崩溃只影响主动连接代理网络的设备。

如何验收恢复结果

修复环路后,我会按这个顺序检查:

  1. 先只保留主路由、一个交换机和一台终端。
  2. 确认网关、DHCP 和 DNS 正常。
  3. 每次只接回一条下行链路,观察交换机端口与延迟。
  4. 检查网络中是否出现第二个 DHCP 服务器。
  5. 验证 NAS、打印机和 Home Assistant 等关键服务。
  6. 保存最终拓扑和端口标签,避免半年后重新猜线。

结语

这次事故真正的问题不是设备太多,而是把“物理接通”误当成“逻辑正确”。家庭网络也有故障域、广播域和回滚路径。主网保持树状、实验网络旁挂隔离,虽然少了一点炫技,却换来了全家不陪我一起断网。