MAC 漂移意味着什么
同一台交换机的 MAC 地址表里,某个 MAC 在短时间内反复出现在两个不同端口上,就是 MAC 漂移。它通常意味着两种可能:存在二层环路,同一个帧从两个方向被学习到;或者两台设备使用了同一个 MAC。交换机一般会打印漂移告警日志,而这个现象往往是广播风暴的前奏,属于需要尽快处理的二层异常。
基本信息
| 观测位置 | 交换机 MAC 地址表与告警日志 |
|---|---|
| 两类成因 | 二层环路,或两台设备 MAC 冲突 |
| 常见来源 | 网线两头插同一交换机、双网卡桥接后都上联、虚拟机克隆导致 MAC 重复 |
| 危害 | MAC 表震荡、转发错乱,重则引发广播风暴 |
| 配套防护 | 生成树、BPDU 保护、端口环路检测与风暴抑制 |
典型使用场景
- 交换机日志频繁刷漂移告警:先确认是环路还是 MAC 冲突
- 虚拟化环境网络异常:检查克隆虚拟机是否 MAC 重复
- 服务器双网卡改造后出现问题:确认是否形成桥接环路
- 办公网局部卡顿:排查是否有人私接设备形成环路
- 定位环路端口:结合 MAC 表变化与端口流量异常收窄范围
交换机侧定位(三厂命令)
交换机侧定位(三厂命令)
Cisco: SW# show mac address-table address 0011.2233.4455
SW# show log | include FLAPPING
SW# show spanning-tree | include Root|Blocking
华为: <SW> display mac-address 0011-2233-4455
<SW> display logbuffer | include FLA
H3C: [SW] display mac-address mac-address 0011-2233-4455
# 关注:该 MAC 最近出现在哪些端口、时间是否交替主机侧确认自身 MAC 无冲突
主机侧确认自身 MAC 无冲突
ip link show eth0 | grep ether # 确认本机 MAC
arping -c 2 -I eth0 10.0.0.1 # 二层是否能稳定到达网关
ip -s link | grep -A1 eth0 # 是否有异常的包速率
# Windows 侧:
getmac /v # 列出接口 MAC
arp -a | findstr 10.0.0.1 # 看网关 MAC 是否频繁变化成因与处置
| 成因 | 证据 | 处置 |
|---|---|---|
| 二层环路 | 交换机日志有成对端口漂移告警 | 定位环路端口并断开,恢复生成树 |
| 自环(两头同交换机) | 同一端口对反复学习同一 MAC | 拔掉多余跳线并加端口保护 |
| MAC 冲突 | 两个端口同时各有该 MAC 的活跃流量 | 修改其中一台设备的 MAC 或隔离 |
| 虚拟机克隆 | 同网段出现重复 MAC | 重新生成虚拟网卡 MAC 地址 |
| 桥接配置错误 | 服务器双网卡都通且形成环 | 调整桥接与上联方式 |
常见成因排序:网线两头都插同一交换机形成自环、服务器双网卡做了桥接又都上联、虚拟化克隆导致 MAC 重复,排查时按这个顺序核对效率最高。