端口安全 max 2:会议室接交换机就断网

会议室墙口沿用办公位模板,端口安全上限仅 2 个 MAC,接小交换机后设备数超限触发 violation shutdown,整口 err-disabled。调高上限并配置自动恢复后恢复。

问题背景

办公楼有 200 多个接入端口,统一由一套配置模板下发。办公位的标准拓扑是“IP 话机 + 电脑”:话机接墙口,电脑接话机,所以模板里给每个端口配置了端口安全,最大 MAC 数设为 2,违规动作是 shutdown。这套策略跑了很多年,既能防止有人私接路由器,也限制了广播域里的 MAC 数量。

会议室用的是同一套模板。过去会议室里只有一台电视和一台笔记本,两个 MAC 刚好卡在上限内,一直没出问题。上周行政在 4F 会议室加了一套视频会议终端,又为了让笔记本、电视、终端同时联网,在墙口上接了一个 5 口小交换机。当天下午,会议室的有限网络整体断了。

故障现象

  • 4F 会议室墙口对应的交换机端口指示灯熄灭或呈琥珀色,房间内有线设备全部离线。
  • 同楼层其他房间网络正常,Wi-Fi 也正常,只有这一个端口出问题。
  • 交换机日志出现 %PORT_SECURITY-2-PSECURE_VIOLATION,提示端口因端口安全违规被禁用。
  • 把多余设备拔掉、只留一台笔记本,端口仍然不恢复;必须重新插拔或登录交换机操作。
  • show interfaces status 里该端口状态是 err-disabled,不是普通的 down。
  • 视频会议终端无法联网,会议只能改用无线,画面频繁卡顿。

排查过程

第一步定位端口。先查 show interfaces status err-disabled,列出所有被 err-disable 的端口,4F 会议室的 Gi1/0/23 在列表里,原因列显示 psecure-violation。这说明不是网线、光模块或上联问题,而是端口安全策略主动把端口关了。

第二步看端口安全状态。执行 show port-security interface Gi1/0/23,关键字段是:Maximum 2、Current 4、Violation Shutdown、Aging Disabled。也就是说,这个端口最多允许 2 个源 MAC,实际学到了 4 个,超过上限后按配置直接 shutdown。

第三步看学到了哪些 MAC。show port-security address 列出该端口的 4 个 MAC:笔记本、电视、视频会议终端,以及一台 USB-C 扩展坞的网卡。小交换机本身是无管理的,不占 MAC,但它把四台设备的二层流量都汇总到了墙口,端口安全看到的就是 4 个源 MAC。

第四步核对配置来源。show running-config interface Gi1/0/23 显示端口安全参数与办公位完全一致:switchport port-security maximum 2、violation shutdown、没有配置 aging。会议室的墙口从来没有单独模板,一直跟着办公位走。

第五步解释为什么拔设备不恢复。端口进入 err-disabled 后不会因为链路恢复自动重新启用,需要 shutdown / no shutdown,或者开启 errdisable 自动恢复。现场同事只拔了设备,端口仍停在禁用状态,所以看起来“插回去也没用”。

第六步复盘触发过程。会议室原来两个设备,刚好 2 个 MAC;加了视频终端和小交换机后变成 4 个,超过 max 2 的瞬间触发 violation,端口被关闭。只要拓扑不变,重新启用后还会再次触发。

解决方案

  1. 先恢复端口:在交换机上对该端口执行 shutdown 再 no shutdown,端口立即恢复;如果启用了 errdisable recovery cause psecure-violation,等待自动恢复周期(例如 300 秒)也可以。
  2. 给会议室单独建端口模板:最大 MAC 数调到 16,违规动作从 shutdown 改为 restrict(丢弃违规帧并记日志,端口保持 up),并配置 aging time(例如 10 分钟)。这样偶尔接入新设备不会直接把整个房间断网。
  3. 保留办公位模板:普通工位仍然维持 max 2、violation shutdown。办公位的拓扑固定,严格策略能有效阻止私接;不要把会议室的宽松策略全局套用。
  4. 按场景划分端口配置:至少区分办公位、会议室、打印机区、AP 上联、临时工位五类,每类明确最大 MAC 数、违规动作和 aging。模板按区域下发,不再一刀切。
  5. 补自动恢复与告警:全局开启 errdisable recovery 并设置合理间隔,同时把 PSECURE_VIOLATION 日志接入监控。自动恢复解决“端口一直死着”,告警解决“恢复了但没人知道为什么”。
  6. 验证:恢复后确认四台设备都能上线,show port-security interface 显示 Current 4、Maximum 16,违规计数不再增长;再模拟拔插一次,确认端口不会再次 shutdown。

根因分析

直接根因是 会议室墙口沿用了办公位的端口安全模板,最大 MAC 数只有 2;接入小交换机后设备数变成 4,超过上限触发 violation shutdown,端口被 err-disable,整个房间的有线网络中断。

更深一层,是把端口安全当成了“配了就行”的安全开关,而没有按使用场景设计容量。办公位的 2 个 MAC 是合理的,因为那里永远只有话机和电脑;会议室是共享空间,设备数量天然会变,继续套用同一个上限,等于给正常使用埋了一个硬阈值。再加上 violation 动作选了 shutdown、没有 aging、没有自动恢复,一次普通的设备增加就被放大成整口断网。

还有一层是排障信息不对称。端口 err-disabled 在用户侧看起来就是“网口坏了”,现场第一反应是换线、换口;如果不知道去看 show interfaces status err-disabled 和端口安全计数,很容易在物理层绕圈。

预防措施

  • 端口配置按场景分模板:办公位、会议室、打印区、AP 上联、临时工位分别定义最大 MAC 数、违规动作和 aging,禁止全楼一套参数。
  • 会议室和共享区域的 max MAC 数按“峰值设备数 + 余量”设定,并优先使用 restrict 而不是 shutdown,避免单台设备触发整口中断。
  • 全局启用 errdisable 自动恢复,同时把端口安全违规、err-disable 次数接入监控告警,做到既自动恢复又可追溯。
  • 网络变更管理覆盖“加一个小交换机”这类小动作:会议室增加设备前先确认墙口策略,必要时提前调整模板。
  • 定期导出端口安全表,核对各端口学到的 MAC 数与设备清单,发现异常增长及时处理。

总结

端口安全的本意是防止 MAC 泛洪和私接,但它同时是一条容量策略:上限设多少,决定了这个端口能容纳多少设备。办公位的 2 个 MAC 是精心设计的边界,搬到会议室就成了事故阈值。真正的问题不是“端口安全太严”,而是把不同场景塞进了同一个模板。按场景设计端口、给共享空间留余量、让违规动作从“关机”变成“限流加告警”,才能既守住安全,又不把正常变更变成断网。

延伸阅读

使用 Hugo 构建
主题 Stack 由 Jimmy 设计