什么是MAC地址漂移?
干了10年网工私藏的硬核知识点:90%的新手碰到网络卡、丢包,查半天都找不到根因,大概率是踩了MAC地址漂移的坑,看完直接少走半个月弯路。
很多做运维的朋友都碰到过这种邪门事:
明明服务器好好插在交换机1号端口上,转头设备就把它的MAC地址记到2号端口去了,数据发着发着就跑错路,网莫名其妙就断了,日志翻烂了都找不到问题。
这就是大家常听的MAC地址漂移。
说白了逻辑特别简单:
同一个VLAN里,交换机本来在A端口学了某个设备的MAC地址,转头又在B端口收到了带这个源MAC的数据包,直接就把之前的记录给覆盖了,相当于设备的「网络门牌号」被系统自动改了。
常见的漂移原因无非就4种,前3种都是故障,最后1种反而是正常现象:
第一种最普遍,网络里藏了二层环路。
数据帧在环路里转着圈疯跑,交换机隔几秒就能从不同端口收到同一个MAC的包,地址表不飘才怪。
第二种是遭遇了MAC地址攻击。
恶意设备伪造已经在线的服务器的MAC发数据包,直接就把交换机里原来的合法地址记录给冲掉了,正主直接就上不了网。
第三种是MAC地址冲突。
同一个广播域里俩设备不小心用了一样的MAC,俩设备抢同一个网络门牌号,交换机的地址表来回跳,不飘才奇了怪。
第四种完全是正常现象,半毛钱危害都没有。
就是部署了VRRP的冗余网络里,原来的主设备挂了,备份设备顶上之后会发免费ARP,主动把交换机里虚拟MAC的端口记录刷新到自己这边,完全是为了保证业务不中断的正常操作,不用瞎处理。
真碰到漂移了别慌,对着原因找解法,手到病除:
要是查出来是二层环路搞的,直接把环路掐了,问题当场就解决。
要是是攻击或者地址冲突导致的,4招就能搞定:
第一招直接在交换机上配静态MAC地址,手动写死的表项,谁都刷不动,稳得很。
第二招给不同接口设MAC地址学习优先级,高优先级的表项低优先级接口根本抢不走,不会被随便覆盖。
第三招直接开MAC地址漂移检测功能,一有异动马上告警,你第一时间就能定位问题。
第四招给交换机配端口安全,从根上堵死别人乱改MAC地址表项的可能。
我刚入行的时候第一次碰到漂移,对着满墙的网线查了整整两天,最后还是师傅点了一句才反应过来是有人私接小路由搞出了环路,你们有没有碰到过查得头大的奇葩网络故障?
