第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.
...
  1. display mac-address flapping record → 上百条漂移记录
  2. 发现 GE0/0/24 就是新接入的交换机端口
  3. 在新交换机上执行 display stp brief → 发现端口角色全是 DESIGNATED
  4. 检查配置 → 新交换机没有启用 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 漂移往往是环路的早期信号

九、思考

  1. MAC 地址漂移的根本原因可能有哪些?
  2. 如果在日志中看到 MAC 漂移告警,第一步排查什么?
  3. MAC 漂移检测的 Error-Down 动作有什么优缺点?
  4. 为什么 VM 迁移也会导致 MAC 漂移?这是一种故障吗?
  5. MAC 漂移和 MAC 泛洪有什么区别?

下篇预告:第114篇《NDP 与 IPv6 邻居发现协议》——讲解 IPv6 中替代 ARP 的邻居发现协议(NDP),包括 NS/NA、RS/RA 和地址自动配置等核心功能。