第102篇:BPDU 保护、根保护、环路保护配置

关键词

BPDU Guard、Root Guard、Loop Guard、TC Protect、Error-Disable、STP 安全


一、为什么需要 STP 增强机制?

标准 STP/RSTP/MSTP 虽然能解决环路问题,但面对攻击或配置错误时非常脆弱:

威胁场景 后果
非法交换机接入(BPDU 攻击) BPDU 优先级被篡改,根桥被抢占
低优先级交换机被误接入 根桥被意外抢夺,拓扑震荡
单向链路故障 STP 检测不到,阻塞端口被放开导致环路
频繁拓扑变更 MAC 表被反复刷新,全网丢包

因此,STP 的"三大卫士"——BPDU Guard、Root Guard、Loop Guard——应运而生。


二、BPDU Guard(BPDU 保护)

2.1 作用

接入端口(连接终端 PC、打印机等)上启用 BPDU Guard。一旦该端口收到 BPDU 报文,立即将端口置为 Error-Disable 状态(相当于 shutdown),防止非法交换机接入。

2.2 原理

正常终端 ──── 接入端口(BPDU Guard 开启)
                │
                ├── 终端不发 BPDU → 正常转发
                │
非法交换机接入 ──► 端口收到 BPDU → Error-Disable
                │
                └── 端口状态变为 DOWN,指示灯灭

2.3 配置

# ===== 全局配置(所有 Access 端口生效) =====
stp bpdu-protection

# ===== 接口级配置 =====
interface GigabitEthernet0/0/1
 stp edged-port enable          # 设为边缘端口(快速迁移到 Forwarding)
 stp bpdu-filter enable         # 可选:过滤 BPDU 收发

注意:BPDU Guard 常与 edged-port(边缘端口)配合使用。边缘端口不再参与 STP 计算,接入终端后直接进入 Forwarding 状态,接入交换机时触发 BPDU Guard。

2.4 BPDU Guard 后的恢复

端口被 Error-Disable 后需要手动恢复或配置自动恢复:

# 全局启用自动恢复
error-down auto-recovery cause bpdu-protection interval 300
# 300 秒后自动恢复端口

2.5 实战案例

故障现象:某楼层接入交换机频繁断开,所有端口指示灯全灭。

排查

display error-down recovery
# 看到 bpdu-protection 对应的端口列表
display stp
# 确认没有拓扑变更记录

根因:新来的实习生将一台傻瓜交换机接到了接入端口,该端口开启了 BPDU Guard,收到 BPDU 后 Error-Disable。上联链路断开后整台交换机失联。


三、Root Guard(根保护)

3.1 作用

Root Guard 在指定端口上启用,防止端口收到更优的 BPDU(优先级更小或 Bridge ID 更小)后成为根端口。如果该端口收到更优 BPDU,端口进入 Root-Inconsistent 状态(相当于 Listening),不再转发数据。

3.2 适用场景

汇聚交换机的下行端口(连接接入交换机)上配置 Root Guard,防止接入交换机篡改 STP 选举结果。

     Core (根桥)
       │
  汇聚交换机 ──── 端口 Root Guard
       │
   接入交换机 ──── 非法根桥?→ 端口 Blocked!

3.3 配置

interface GigabitEthernet0/0/24
 stp root-protection

3.4 不生效的场景

Root Guard 只能防止端口成为根端口,但不能防止该端口成为指定端口后的 BPDU 传播:

角色 Root Guard 影响
根端口 收到更优 BPDU → Root-Inconsistent
指定端口 不受影响(默认是该链路上最优的)

实际效果:Root Guard 保护的是接收方向——防止本设备认为对端是更优的根桥。

3.5 实战案例

场景:园区网突然所有 VLAN 中断,检查发现根桥变成了某台刚接入的接入交换机。

原因:该交换机的 STP 优先级被配置为 0(或默认 32768),低于核心交换机的优先级(4096)。

解决:在汇聚的下行端口配置 Root Guard。

interface range GigabitEthernet0/0/1 to GigabitEthernet0/0/24
 stp root-protection

此后即使接入交换机发出更优 BPDU,流量也不会切换路径。


四、Loop Guard(环路保护)

4.1 作用

Loop Guard 防止单向链路故障导致的环路。当端口长时间(超时)收不到 BPDU 时,STP 会认为对端已消失,将阻塞端口放开——如果实际链路是单向通(只收不发),就会形成环路。

4.2 原理

正常情况 单向链路故障
双向收发 BPDU A 能收到 B 的 BPDU,但 B 收不到 A 的
STP 正常计算 B 收不到 BPDU → 认为链路断开 → 放开阻塞端口
无环路 环路形成!

Loop Guard 的应对: - 端口收不到 BPDU 时不自动放开,而是进入 Loop-Inconsistent 状态 - 端口保持 Blocking,直到重新收到 BPDU

4.3 配置

interface GigabitEthernet0/0/24
 stp loop-protection

4.4 注意事项

注意点 说明
不能与 Root Guard 同时使用 两者互斥
不能用于边缘端口 边缘端口本身不参与 STP
双向链路故障时也不恢复 Loop Guard 会让端口持续 Blocked,需人工介入

五、配置组合推荐

端口类型 推荐配置
接入层 → 终端 BPDU Guard + Edge Port
汇聚层 → 接入层(下行) Root Guard + Loop Guard(二选一,不能同时)
汇聚层 → 核心层(上行) Loop Guard
核心层之间 Loop Guard

六、BPDU Filter(BPDU 过滤)

BPDU Filter 与 BPDU Guard 不同——它直接不让端口发/收 BPDU

特性 BPDU Guard BPDU Filter
收到 BPDU 后 Error-Disable 丢弃 BPDU,仍转发
发送 BPDU 正常发送 不发送
适用场景 防接入非法交换机 防端口参与 STP
# 接口级 BPDU Filter
interface GigabitEthernet0/0/1
 stp bpdu-filter enable

七、总结

保护机制 防护目标 触发后状态 恢复方式
BPDU Guard 非法交换机接入 Error-Disable 手动/自动恢复
Root Guard 根桥被抢占 Root-Inconsistent BPDU 恢复正常后自动恢复
Loop Guard 单向链路环路 Loop-Inconsistent BPDU 恢复正常后自动恢复
BPDU Filter 端口不参与 STP 正常转发 无需恢复

八、思考

  1. BPDU Guard 和 BPDU Filter 的本质区别是什么?
  2. 为什么 Loop Guard 不能用在边缘端口上?
  3. 如果一台交换机所有下行端口配置了 Root Guard,新接入的交换机优先级更优,会发生什么?
  4. Error-Disable 后如何自动恢复?恢复间隔在哪里配置?
  5. 在实际部署中,为什么 Loop Guard 和 Root Guard 不能同时配置在同一个端口上?

下篇预告:第103篇《TC 保护与拓扑变更优化》——详解 TC(Topology Change)报文如何影响网络性能,以及如何通过 TC Protection、TC Snooping 等机制优化拓扑变更行为。