尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
MAC地址漂移是什么?成因排查与根除方案详解
上个月值班处理过一个挺典型的故障核心交换机的日志几秒钟刷一条告警仔细看全是同一种类型——MAC地址漂移。当时全网视频会议卡顿打印机时不时掉线还有几台服务器互相提示IP地址冲突。团队按告警信息逐台设备排查最后在一台不起眼的接入交换机下面找到了一根被员工随手接上的网线正好把两个信息点连成了环。拔掉那根线以后日志立刻安静下来业务陆续恢复。这类问题在二层网络里实在太常见但每次出现都容易让人措手不及。我写这篇文章就是想彻底讲清楚“MAC地址漂移到底是什么、为什么会发生、怎么快速定位、怎么从根上防住”给正在值班或者刚接触交换机维护的朋友一份可以直接参考的思路。网络运维工程师、弱电实施人员、以及正在学习交换技术的新手都能在里面找到自己需要的部分。1. 先搞清楚MAC地址漂移到底是什么1.1 从MAC地址表的建立说起要理解MAC地址漂移得先明白交换机是怎么认识网络里的设备的。二层交换机本身不知道终端在哪它转发数据靠的是MAC地址表。每收到一个数据帧交换机会看帧里面的源MAC地址然后把这个MAC和收到帧的端口对应起来记录到MAC地址表里。举个例子端口1收到一个源MAC是AA-BB-CC-00-11-22的帧交换机就在表里写上“AA-BB-CC-00-11-22对应端口1”以后凡是目的MAC是这个地址的帧就从端口1转发出去。这个过程可以类比成小区门卫登记住户信息。门卫最初不认识谁住在哪栋楼但每次看到有人从某个门进去就记下“这个人住在哪栋楼”。如果哪天他看到同一个门牌号的人从另一栋楼出来他脑子里的登记信息就会开始打架。交换机也一样它学习的MAC地址表在每个VLAN内是唯一的一个MAC地址正常情况只能对应一个出接口。如果两个端口都声称自己是同一个MAC问题就来了。MAC地址表还有一个老化机制通常是默认300秒老化的目的是让表项适应网络变化。但只要网络里持续有流量表项就会被不断刷新一直保留。正常情况下这个机制很稳定不会出问题可一旦出现异常情况比如环路或者有人伪造地址MAC表项就会在多个端口之间来回跳动这才是漂移现象的根源。1.2 漂移的定义与表象正式定义其实很直白交换机在端口A学习到MAC地址X之后又在端口B收到了源MAC同样是X的帧于是将MAC地址X的出接口从端口A更新为端口B。再之后又可能从端口A收到又被更新回端口A。这种MAC地址表项在不同端口之间反复横跳的现象就叫MAC地址漂移也叫MAC flapping。表象上最明显的是交换机日志里出现大量类似“MAC address flapping”的告警信息。如果点的网管平台有告警功能会看到某个MAC在几个端口之间频繁变动。流量大时交换机CPU因为不停处理MAC地址表更新占用率会明显上升。如果伴随环路广播风暴会同时出现网络设备CPU飙升、业务大面积卡顿或中断。不过也要区别看待漂移告警。无线漫游、服务器双网卡主备切换、虚拟机热迁移这类正常场景也可能短暂触发MAC重新学习出现一两次漂移记录但频率低、持续时间短通常不会造成故障。真正需要紧张的是那种持续的、高频的、伴随业务异常的漂移。我自己的判断标准是如果日志里漂移告警持续超过几十条、涉及的端口相对固定、同时网络出现卡顿或冲突那就基本可以确定是网络故障需要立即动手处理。漂移场景频率影响是否需要处理无线终端漫游偶发基本无感不需要双网卡主备切换切换瞬间短暂丢几个包观察确认即可物理环路持续高频广播风暴、业务中断必须处理地址伪造/抢占持续或间歇IP冲突、通信异常必须处理2. 为什么会发生漂移几类典型成因2.1 环路的“自我复制”效应物理环路是我实际遇到最多的一种成因。所谓环路简单说就是交换机之间出现了超过一条可用的二层路径。常见情况包括两台交换机之间接了两根网线但没有做链路聚合一台傻瓜交换机同时通过两条线连接到上级交换机或者施工时留下的一段废弃跳线两端仍然插在交换机上形成了隐藏的三角形物理环路。为什么环路会直接导致MAC地址漂移呢因为当网络里出现环路时广播帧和未知单播帧会在环里不断被交换机泛洪。泛洪的意思是一个帧从所有端口发出去然后又被下一台交换机从其他端口收回来再继续泛洪。这样每一台交换机都会从环路上的不同端口收到同一个源MAC的帧MAC表项自然就在这些端口之间反复覆盖更新。环路里的帧还会指数级翻倍复制很快形成广播风暴。可以这样理解环路上每个交换机都在不停转发相当于同一个人在小区东门和西门同时出现而且越来越频繁门卫的登记系统直接就乱掉了。环路越严重复制的帧越多MAC表震荡越快网络瘫痪得就越彻底。所以遇到大量漂移告警时第一个要想到的原因就是环路。2.2 私接设备与地址抢占另一类高频成因和环路无关纯粹是终端侧或私接设备惹的祸。最常见的故障场景是办公室里有人自带了小路由器想把有线网络分享给手机或者平板用结果把网线插在了小路由器的LAN口上而小路由器本身又开启了DHCP服务。这样整个网里就同时出现了两个DHCP服务器终端获取地址时可能跑到小路由器上拿了一个错误网段的IP小路由器本身的MAC也会在交换机的不同端口出现产生漂移告警。还有一类是地址抢占。有人手动修改了自己电脑的MAC地址改成网关的MAC或者服务器MAC试图“顶替”合法设备的身份。交换机从正确端口学到服务器MAC之后又从抢地址的设备所在端口学到了相同MAC表项被刷新成错误端口。结果就是所有发往该MAC的流量被引去了错误方向业务中断同时日志里出现漂移。这类故障的特征和环路有明显的区别。环路的漂移端口通常是交换机之间互联的端口两个端口都对着其他交换机私接或地址抢占的漂移端口里往往有一个是连接终端的接入端口。如果漂移的MAC是网关MAC、服务器MAC同时在网内还看到了IP冲突告警那很大概率是私接设备或伪造地址而不是环路。2.3 配置失误带来的连锁反应配置失误虽然不如前两类常见但一旦发生排查起来往往更费劲。比如同一台交换机上有两条物理链路都放进了同一个VLAN却没有配置链路聚合这两条链路的另一端连着同一台设备于是就在逻辑上形成了一个环。再比如某些项目为了“网络顺畅”把生成树协议直接关闭结果上层的冗余链路在故障切换时没有收敛机制立刻产生环路和漂移。还有一种场景和虚拟化相关。某台服务器做了双网卡绑定正常情况下是主备模式只有一块网卡在工作。如果绑定模式配置错误或者链路检测失效备卡错误地接收并转发数据帧就会导致该服务器MAC地址从两个物理端口被学到产生漂移。虽然这不影响服务器自身通信但交换机会不断告警如果上游还有其他安全策略甚至会直接把端口阻塞。配置失误引发的漂移经常出现在网络变更之后。比如新接了一台交换机配置是复制粘贴过来的VLAN划分没改接口模式没调接上线半小时后全网开始刷漂移日志。这种情况处理起来不能只拔线了事必须把配置从头查一遍把逻辑拓扑重新理清楚。3. 怎么发现和确认漂移告警、日志与命令3.1 影响不只是日志告警那么简单很多人觉得MAC漂移不就是日志里多几条告警嘛其实它的影响远不止于此。交换机CPU资源是有限的持续高频率的MAC表更新会占用大量CPU处理能力轻则设备响应变慢重则连管理功能都会卡死。MAC地址表一旦不稳定数据帧从错误端口出去再折返回来形成转发黑洞。用户侧看到的现象是网络一会通一会断丢包率时高时低最直观的感受就是视频会议冻结、共享文件打不开、打印机任务错乱。更危险的是如果有人冒充网关MAC地址全网终端的默认网关流量都会被引导到错误设备上这可能造成数据被截获。所以在实际运维中我把MAC漂移当成一个“必须看”的告警等级而不只是普通事件。只要日志出现持续漂移就要按故障来处理不能拖。3.2 不同设备上的查询方法排查漂移先要看日志和MAC表关键是获取三个信息漂移的MAC地址、属于哪个VLAN、涉及哪几个端口。在不同厂商的交换机上命令和字段会有差异但排查思路完全一致。在常见的主网设备上查看历史漂移记录的命令类似这样display mac-address flapping record执行后可以看到历史上发生漂移的MAC地址、VLAN、端口编号和最后发生时间。如果想看当前MAC地址表项用display mac-address [ vlan 10 ]查看日志可以执行display logbuffer | include flapping如果是另一类设备命令可能长这样show mac address-table flapping show logging | include flapping不同厂商的命令关键字差别较大有的放在网管软件里查看有的需要在全局视图下提前开启漂移检测功能才能真正记录信息。我拿到一台不熟悉的设备时会先看命令帮助再结合设备手册确认字段含义。但不管命令怎么变最终要回答的问题只有一个哪个MAC在哪个VLAN哪几个端口之间来回跳。3.3 排查漂移源位置的思路排查漂移位置我习惯按下面这个顺序来走确定告警范围。先看漂移集中在哪个VLAN、哪一段端口避免全网乱查。查漂移MAC的当前表项。用命令查一下这个MAC当前对应哪个端口再对照网络拓扑判断该端口上连的是什么设备。判断故障类型。如果漂移发生在两台交换机之间的互联端口上优先怀疑环路如果漂移端口是终端接入端口优先怀疑私接或地址抢占。顺着链路往下查。如果是交换机互联口之间漂移就从这两台交换机出发逐级往下找哪一层还有多余的连接或分支重点检查那里。用拔线法确认。在通知业务方之后拔掉可疑链路观察告警是否消失。消失就说明拔对了恢复后再处理另一条可疑链路。我自己踩过比较深的坑是第一次遇到漂移时第一反应是重启交换机。重启确实能让网络安静一阵子但没找到根因过不了半小时告警又来了还因为重启打断了正在跑的业务事后没少挨批评。后来学乖了先把日志存好再逐台设备顺着链路查最后发现只是段废弃的跳线在作祟。拔线法虽然看起简单但一定要先通知业务再做否则你可能拔的就是人家的主用链路。4. 处理与防范从“治标”到“治本”4.1 临时抑制——黑洞MAC如果漂移的MAC已经确认是非法的、不该出现在网络里的地址但短时间内又找不到对应设备在哪可以先把它的流量压住让业务先恢复。交换机支持配置黑洞MAC把某个MAC地址的流量直接丢弃不让它继续参与MAC表学习。在支持该功能的交换机上配置类似这样system-view mac-address blackhole 0011-2233-4455 vlan 10写成全局配置后凡是目的MAC是这个地址的数据帧交换机一律丢弃。这对临时止血非常有效MAC表不再被这个地址反复刷新告警也会大幅减少。但必须说清楚黑洞MAC只是权宜之计。它会让这个MAC地址彻底无法通信如果配置错了把合法设备的MAC写进黑洞那就等于直接把这台设备断网了。而且在配置之前一定要确认这个地址确实不属于任何合法终端、服务器或网络设备。一旦找到根因要立刻删除这条黑洞配置恢复网络的正常状态。4.2 根除环路——STP和链路聚合处理漂移不能只靠着临时压制得把根因解决掉。针对物理环路最核心的手段是启用生成树协议。生成树协议的逻辑是让交换机之间通过交互BPDU报文计算出一棵无环的逻辑树然后自动阻塞冗余端口。如果网络里有两条物理路径协议会保留一条阻塞另一条环路就从逻辑上被打破了。现在大多数交换机默认已经开启了生成树但要注意模式下联网络里如果有不支持生成树的傻瓜交换机或者某些端口被配置成了边缘端口还是会存在风险。所以我一般会在上联到核心的端口上开启边缘端口功能的同时打开BPDU保护防止下联设备发送异常BPDU影响整个生成树计算。如果两条链路同时是为了带宽和冗余更好的做法是配置链路聚合比如用LACP协议把两块物理口绑成一个逻辑口。这样既避免了环路又能把两条链路流量负载分担比依赖生成树阻塞一条链路要高效得多。配置完成后要主动检查一下聚合口状态和生成树状态确认端口没有处于异常震荡状态。4.3 端口安全与准入控制对付私接设备和伪造MAC端口安全是比黑洞更治本的措施。端口安全可以限制交换机端口上学习的MAC地址数量并且绑定允许接入的合法MAC。比如一个办公位只允许接一台电脑就可以设置端口最多学习一个MAC地址超过数量时交换机自动关闭端口或者丢弃数据帧从物理层面阻断非法设备接入。我通常会给接入端口配置类似这样的策略端口最大学习MAC数量为1违规后关闭端口同时记录日志。这样工位上再插小路由器或者再交换机端口就会被直接关掉问题设备无法接入网络。需要注意的是一台手机一个MAC这种正常设备如果终端数量较多端口学习数量需要适当调整否则容易误封正常设备。配合DHCP Snooping效果会更好。开启DHCP Snooping之后只有连接可信任上行链路的端口才允许发送DHCP响应报文其他端口收到的DHCP响应报文会被丢弃。这样一来私接的小路由器就算开了DHCP也无法向网内终端分发错误地址从源头掐断地址冲突问题。未使用端口直接shutdown也能减少有人从这里私接设备的机会。4.4 网络设计层面的预防处理完眼前的故障还得把网络结构本身的漏洞补上。从设计层面看接入、汇聚、核心三层结构要清晰避免跨层直连形成不合规的网状结构。管理VLAN和业务VLAN最好分开让广播域更可控万一某个区域出现环路影响面也不会一下子覆盖全网。我建议所有交换机统一开启生成树和环路检测并把设备的配置文件保存下来定期做版本管理和备份。每次变更前先备份配置变更后保存日志观察至少一两个业务周期确认没有异常后再关闭变更窗口。巡检时重点看这几项日志里有没有flapping告警、端口的流量有没有异常翻倍、MAC地址表的数量有没有明显增长。这些指标能帮你把很多潜在问题提前暴露出来不至于一定要等到业务挂了才去救火。5. 常见问题与排查技巧实录5.1 一次典型的排查过程回顾之前在某单位处理过一次典型的漂移故障过程很能说明这类问题的排查思路。当时办公网VLAN 10里不断出现MAC地址漂移告警涉及端口集中在两台接入交换机之间。从告警里看到同一台交换机的GE0/0/1口和GE0/0/2口都在反复学习同一个MAC地址而这两个端口分别连接两台不同的接入交换机。按经验这多半是两台交换机之间存在物理环路。我顺着两端跳线查了下去结果发现这两台交换机之间除了常规的上联光缆之外还留有一段很多年前施工用的备用网线线头埋在桥架里只有一小截露在外面恰好被整理机柜时插到了交换机上。这段线没人知道还在用但它在逻辑上正好把两台交换机连成了环。拔掉这段备用线后漂移告警立刻不再出现。随后我在两端接口上配置了链路聚合并重新梳理了桥架里的废弃线缆把隐患彻底清掉。这个案例说明很多时候环路不是故意布出来的而是施工遗留和历史变更累积出来的。所以排查漂移时除了看当前的连接也别忘了问一句“这个桥架里还有没有多余的旧线是通着的”这种问题不查线是很难想到的。5.2 常见问题速查问题现象可能原因建议处理两个上行口之间持续漂移交换机间物理环路拔线确认开启STP或配置链路聚合终端接入口与上行口漂移并伴随IP冲突私接小路由器或伪造MAC关闭该端口启用端口安全和DHCP Snooping日志间歇性漂移网络基本正常无线漫游、双网卡切换观察即可无需过度处理全网所有端口同时大量漂移广播风暴、严重环路断开部分链路优先恢复业务再逐层排查已开启STP但仍有漂移下联傻瓜交换机不受控或缺失BPDU保护检查边缘端口配置开启环路检测服务器MAC在两个端口间漂移双网卡绑定或虚拟化迁移配置异常检查服务器网卡绑定策略确认后调整交换机端口5.3 经验中积累的几条避坑细节排查漂移前一定要把日志导出来存在本地。故障处理完成后还要写复盘没有原始日志很难还原现场。拔线操作看着简单但真要动手前最好先跟业务方说一声有些线缆标签和拓扑图对不上拔错了影响比故障本身还大。处理过程里别忘了先确认设备的管理通道是带外的或者说串口可以登。网络严重拥塞的时候业务网的管理地址可能连不上这时候如果有带外管理或者串口就可以保住最后的操作通道。还有一个容易被忽略的点有些交换机的漂移记录只保留最近几十条发现告警后如果不及时查看等自己忙完其他事情再看历史记录可能已经被刷掉了。所以一看到告警先截图再慢慢排查这个习惯能帮你省很多事。最后说说构建长期防线的经验。我给所有接入交换机做了统一的端口安全策略和生成树配置同时把配置变更流程卡住了涉及二层的变更必须先确认有没有可能引起环路有没有打开生成树和环路检测。半年之后再翻日志漂移告警基本绝迹。就算偶尔出现一次也大多是无线漫游产生的正常事件对照记录一看就能判断不再需要反复救火了。关于MAC地址漂移我自己的体会就是八个字先看日志再动线缆。日志不会骗人它会把漂移的MAC地址、VLAN和端口对清清楚楚地摆在那里顺着信息往下走基本上都能在半小时内锁定位。真正让人走弯路的时候往往是凭感觉拔线、凭经验重启设备把本可以快速定位的问题搞复杂了。所以遇到flapping告警先深呼吸存日志看表项查拓扑再决定下一步动作。按这个流程走大部分漂移问题都能稳稳拿下。
RELATED

相关推荐

H.265码流分析指南:从参数集到GOP,定位播放异常

H.265码流分析指南:从参数集到GOP,定位播放异常

搞音视频的人迟早会被H.265码流分析找上门。我最初学这个,不是去啃标准文档,而是线上播放器突然出现规律性花屏,文件用本地播放器放一切正常,换了Web播放器就每隔几秒碎一次画面。当时的直觉是播放器兼容性有问题,查来…

📅 2026/10/21 22:55:37
Halcon算子中文详解:从取图到测量的视觉项目实战指南

Halcon算子中文详解:从取图到测量的视觉项目实战指南

打开Halcon的算子浏览器,第一反应大概率是懵的。满屏英文动词缩写——read_image、threshold、connection、select_shape、find_shape_model——每个单词都认识,但合在一起完全不知道它在视觉流程里到底扮演什么角色。我刚开始学Halcon时也是这个状态&am…

📅 2026/10/21 22:50:37
中亚五国矢量图shp格式:GIS边界底图与空间分析实战指南

中亚五国矢量图shp格式:GIS边界底图与空间分析实战指南

简介:这份中亚五国矢量图数据集面向GIS从业者、地理科研人员及区域研究学习者,提供哈萨克斯坦、乌兹别克斯坦、吉尔吉斯斯坦、塔吉克斯坦和土库曼斯坦五国的精确地理边界与属性信息,可用于地图制作、土地利用规划、区域发展分析及政治边界研究…

📅 2026/10/21 22:50:37
MORE NEWS

更多资讯

📰

无名杀完全上手指南:在浏览器里跑一套可自由改造的三国杀引擎

无名杀完全上手指南:在浏览器里跑一套可自由改造的三国杀引擎 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 我把仓库克隆下来挂到本地服务器上,用 Chrome 内核浏览器打开页面,就能选武将、发牌…

📰

datawhale:Happy-LLM 打卡-Task02:注意力机制与Transformer的Encoder-Decoder架构《Attention Is All You Need》

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

yoinks 完整指南:1800+ 站点的终端视频下载快速上手

yoinks 完整指南:1800 站点的终端视频下载快速上手 【免费下载链接】yoinks yoink any video from your terminal. no shady ads. 项目地址: https://gitcode.com/GitHub_Trending/yo/yoinks 在浏览器里搜"下载视频",经常要走一段弯路&…

📰

DouK-Downloader 抖音 TikTok 下载工具教程:3 步完成批量作品下载、直播录制与评论采集

DouK-Downloader 抖音 TikTok 下载工具教程:3 步完成批量作品下载、直播录制与评论采集 【免费下载链接】TikTokDownloader 抖音 / TikTok 平台作品下载/数据采集工具 项目地址: https://gitcode.com/GitHub_Trending/ti/TikTokDownloader DouK-Downloader&a…

📰

免费学Python:learnpython完整笔记与互动课程资源全解

【免费下载链接】learnpython Python Resources for Everyone 项目地址: https://gitcode.com/gh_mirrors/learnpython5/learnpython 点击查看 免费下载 learnpython 是一个面向所有人的免费 Python 学习资源仓库,把完整的 Python 学习笔记、互动课程、…

📰

【RHCA+】_etc_yum.repos.d_文件名.repo

“ 目录:RHCA -> 6 软件仓库 -> 34 _etc_yum.repos.d_文件名.repo ”实际的软件仓库配置文件repo文件变量作用$releasever当前OS发行版的主版本号;例:8、7、6$archCPU架构;例:aarch64、i686、x86_64$basearch系统…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬