第113篇:MAC 地址漂移检测与处理
关键词
MAC 地址漂移、MAC Flapping、环路检测、MAC 迁移、二层网络故障
一、什么是 MAC 地址漂移?
1.1 定义
MAC 地址漂移(MAC Address Flapping)是指同一个 MAC 地址在不同端口之间反复出现。交换机的 MAC 地址表不断更新,导致转发路径不稳定。
正常情况:
MAC A ──── 始终在端口 1 ──── 交换机 ──── 稳定转发
端口1: MAC A → 端口4
端口2: MAC B → 端口4
MAC 地址漂移:
MAC A ──── 一会儿在端口 1,一会儿在端口 3
端口1: MAC A → 端口4 (第1秒)
端口3: MAC A → 端口4 (第3秒) ← 漂移!
端口1: MAC A → 端口4 (第5秒) ← 漂移!
1.2 漂移的原因
| 原因 | 说明 |
|---|---|
| 二层环路 | STP 未正确收敛,帧反复经过不同路径到达不同端口 |
| 傻瓜交换机级联 | 无法 STP 的设备级联导致广播域扩散 |
| 终端设备多网卡/虚拟机 | VM 迁移、多网卡绑定、USB 网卡插拔 |
| 攻击 | 伪造 MAC 的 ARP 泛洪 |
| 配置错误 | 端口错误地 Trunk 了相同 VLAN |
二、MAC 漂移的危害
| 危害 | 说明 |
|---|---|
| 流量中断 | 指向 MAC A 的帧被错误转发到另一个端口 |
| CPU 高 | 每次漂移都需要更新 MAC 表,频繁操作占用 CPU |
| 环路风险 | MAC 漂移往往是环路的前兆 |
| 转发错误 | 帧被发往错误的端口,导致丢包 |
三、MAC 地址漂移检测
3.1 查看 MAC 地址表的变化
# 查看 MAC 地址表,注意端口列是否变化
display mac-address flapping record
-----------------------------------------------
MAC Address VLAN Source-Port Current-Port Flaps Last-Time
0001-0001-0001 10 GE0/0/1 GE0/0/3 1023 2024-12-01 10:30:25
3.2 查看 MAC 漂移统计
# 华为交换机
display mac-address flapping statistics
-----------------------------------------------
Flapping times: 1023
# 查看漂移最多的 MAC
display mac-address flapping record verbose
3.3 查看日志
display logbuffer | include flapping
# Apr 12 10:30:25 SW1 %%01MAC/4/MAC_FLAPPING(l)[1234]: MAC address 0001-0001-0001
# flapping between GigabitEthernet0/0/1 and GigabitEthernet0/0/3 in VLAN 10.
四、MAC 漂移处理策略
4.1 检测到漂移后的动作
华为交换机支持配置漂移后的处理动作:
# 方式一:阻塞漂移的其中一个端口
mac-address flapping action error-down
# 方式二:只告警不阻塞(默认)
mac-address flapping action alarm
4.2 环路场景的漂移处理
如果漂移原因是环路,直接处理环路根源:
# 1. 先确认是环路导致的漂移
display mac-address flapping record
# → 看到大量 MAC 在同一 VLAN 中两个端口间频繁漂移
# 2. 检查 STP 状态
display stp brief
# → 确认 STP 是否收敛
# 3. 临时阻断环路
interface GigabitEthernet0/0/3
shutdown
# 4. 确认网络恢复
display mac-address flapping statistics
# → 漂移停止
# 5. 检查环路原因(配置错误 / 光纤环 / 设备故障)
# 6. 修复后恢复端口
undo shutdown
4.3 病毒/攻击场景的漂移处理
# 1. 启用 MAC 漂移检测的 Error-Down 动作
mac-address flapping action error-down
# 2. 被 Error-Down 的端口需排查是否连接了攻击设备
display error-down recovery
# 3. 确认安全后恢复
error-down auto-recovery cause mac-address-flapping interval 300
五、MAC 漂移检测的配置
5.1 全局配置
# 启用 MAC 漂移检测(默认关闭)
mac-address flapping detection
# 设置检测触发阈值
mac-address flapping threshold 3
# 3 秒内同一 MAC 在同一 VLAN 中漂移 3 次即判定为漂移
# 漂移动作:将其中一个端口 Error-Down
mac-address flapping action error-down
# 如果端口因漂移被 Error-Down,自动恢复
error-down auto-recovery cause mac-address-flapping interval 600
5.2 VLAN 级别配置
# 针对特定 VLAN 启用漂移检测
vlan 10
mac-address flapping detection
5.3 查看被 Error-Down 的端口
display error-down recovery
-----------------------------------------------
Interface Cause Time-left
GE0/0/1 mac-address-flapping 120s
GE0/0/3 mac-address-flapping 300s
六、实战案例
6.1 案例:新交换机接入导致全网漂移
场景:运维人员新安装了一台接入交换机,上联到汇聚交换机。半小时后部分用户反应网络中断。
排查过程:
汇聚交换机日志:
MAC address 0050-7966-2266 flapping between GE0/0/1 and GE0/0/24 in VLAN 100.
MAC address 0050-7966-2267 flapping between GE0/0/1 and GE0/0/24 in VLAN 100.
...
display mac-address flapping record→ 上百条漂移记录- 发现 GE0/0/24 就是新接入的交换机端口
- 在新交换机上执行
display stp brief→ 发现端口角色全是 DESIGNATED - 检查配置 → 新交换机没有启用 STP!
根因:新交换机出厂配置 STP 默认关闭,接入后形成环路。
解决方案:在新交换机启用 STP:
stp enable
6.2 案例:VMware ESXi 多网卡导致漂移
场景:虚拟化平台中,VM 在不同物理网卡间迁移导致 MAC 漂移告警。
分析:这不是环路,是 VM 迁移的正常行为。
处理:
# 确认漂移不是由环路导致
# 如果确认是 VM 迁移,可以将 ESXi 端口配置为边缘端口
interface GigabitEthernet0/0/5
stp edged-port enable
# 对于已知的 VM 迁移场景,可以增加漂移阈值
mac-address flapping threshold 10
# 或者在特定 VLAN 关闭漂移检测
undo mac-address flapping detection vlan 200
七、MAC 漂移 vs MAC 泛洪
| 对比项 | MAC 漂移 | MAC 泛洪 |
|---|---|---|
| 现象 | 同一 MAC 在不同端口出现 | 大量不同的新 MAC 涌入 |
| 原因 | 环路、VM 迁移、攻击 | 端口下接了交换机 / 攻击 |
| 检测方式 | display mac-address flapping |
display mac-address 看总数 |
| 防护方式 | 漂移检测 + Error-Down | 端口安全限制 MAC 数量 |
八、总结
| 知识点 | 核心要点 |
|---|---|
| MAC 漂移 | 同一 MAC 在不同端口频繁切换 |
| 常见原因 | 环路、VM 迁移、攻击、配置错误 |
| 检测方法 | display mac-address flapping record |
| 处理动作 | 告警或 Error-Down 端口 |
| 最佳实践 | 启用漂移检测,网络稳定后调高阈值 |
| 与环路关系 | MAC 漂移往往是环路的早期信号 |
九、思考
- MAC 地址漂移的根本原因可能有哪些?
- 如果在日志中看到 MAC 漂移告警,第一步排查什么?
- MAC 漂移检测的 Error-Down 动作有什么优缺点?
- 为什么 VM 迁移也会导致 MAC 漂移?这是一种故障吗?
- MAC 漂移和 MAC 泛洪有什么区别?
下篇预告:第114篇《NDP 与 IPv6 邻居发现协议》——讲解 IPv6 中替代 ARP 的邻居发现协议(NDP),包括 NS/NA、RS/RA 和地址自动配置等核心功能。