第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 | 正常转发 | 无需恢复 |
八、思考
- BPDU Guard 和 BPDU Filter 的本质区别是什么?
- 为什么 Loop Guard 不能用在边缘端口上?
- 如果一台交换机所有下行端口配置了 Root Guard,新接入的交换机优先级更优,会发生什么?
- Error-Disable 后如何自动恢复?恢复间隔在哪里配置?
- 在实际部署中,为什么 Loop Guard 和 Root Guard 不能同时配置在同一个端口上?
下篇预告:第103篇《TC 保护与拓扑变更优化》——详解 TC(Topology Change)报文如何影响网络性能,以及如何通过 TC Protection、TC Snooping 等机制优化拓扑变更行为。