什么是MAC地址漂移?
一个MAC地址一会出现在A接口,一会出现在B接口,这就是MAC地址漂移吗?看起来是的,但是仔细一想的话,这句话是值得商榷的,如果同一个MAC地址出现在同一个交换机但不同的vlan接口上可以吗?是可以的,那我要不要做一个实验试一试呢?是要做的?我仅仅理解了,或写了下来,那仅是知识,称不上技能,只有做了之后,身体力行之后,才是身体记忆,身体记忆靠谱吗?也不是很靠谱,我们还是会遗忘,因为我们的大脑就是这么设计的,哎~,分析到了大脑的物理层面,似乎再也无法向后进行了,重复,复习 ,通过复习可以加深我们的记忆,还要涉及到推理,只有涉及到推理,才是真正的学习。衡量自己是否在学习,就观察一下自己是否在推理即可。好了,言归正传,那什么是MAC地址漂移呢?处在同一个广播域中该MAC地址的所属接口没down、和没有老化之前,在其它却学到了这个MAC地址,我们将这种现象称之为MAC地址漂移。
什么是假的MAC地址漂移?
同一交换机下的同一个vlan下,电脑原来接在了A接口,一会又接到B接口下,我在公司经常这么做?这样算是地址漂移吗?不算,为啥,因为当我的电脑从A接口拔下来之后,交换机所属的接口就down了,该mac-address在mac地址表当中就消失了,接着又从别的接口学到了,这很正常呀,这种现象不能算做是MAC地址漂移;
接上文,那如果源接口没有down呢?没有down如果老化了之后,从别的接口学到, 这也不算是漂移?如果接口没down,也同有老化之前,在别的接口学到了同样的mac地址,这才算漂移,发生了漂移了之后有什么现象呢?命令行会报错这是一个,还有一个就是MAC地址会发生变化,就是说,新学到将到覆盖旧有的,这样有什么坏处,坏处与arp欺骗有点相似,就是想找的人与找到的人对不上号!这是可以做为一种进攻手段的。
什么情况下会产生mac地址漂移呢?
- 有人恶作剧,故意捣乱,这也有可能呀,少见而已
- 环路发生的时候,这应该是最经常的发生的
- 上面两种是不太正常的,那正常情况下有没有可能会发生MAC地址漂移呢?有的,常见的两种情况,ap漫游,ap漫游是怎么回事呢?ap一般都是接在交换机之下的,假如我们有两个ap,我们在这个房间使用某个AP,于是我们的MAC地址被记录在交换机上的A接口了,然后我们去了另外一个房间,用了另外的AP,正好这个AP与刚才那个Ap都是处在同一个广播域当中,上一个MAC地址还存在于MAC地址表当中,而且接口也没有down,结果另一个接口又学到了,这样不行吗?行,而且是当然行,如果不让它行,那我们的设备无法上网了,应该让它做MAC地址的覆盖,可见,mac漂移并不见得全是坏事。
- 在vrrp环境当中,为什么在VRRP环境下也会也会发生MAC地址漂移呢?如果我们对VRRP的原理理解够深入的话,一下子就会明白其中的原理,VRRP虚拟出来的路由器有单独的IP和MAC地址,这个虚拟出来的路由的MAC会向下游交换机刷新,一般都是主向下发送免费ARP进行刷新,但是一旦主挂了,那就是备向下游交换机刷新,主备处于不同的物理接口,这下明白了吧。
如何避免MAC地址漂移呢?
1、提高接口MAC地址学习的优先级,优先级越大越优先,默认所有接口的优先级都是0 ,假如现在A接口的优先级是2,B接口的优先级是0,都学到了某个MAC地址,这时候后学到不会覆盖先学到的了,B接口不会学习,简而言之一句话,优先级低的不会覆盖优先级高的,但是同级别依然会覆盖,怎么办呢?
2、不允许相同优先级的接口发生MAC地址表覆盖,默认是同vlan的相同优先级的接口是可以相互覆盖的,比如我们公司,确认非研发人员经常拿着笔记本到处走,这就不行了,只能老老实实的呆在他的工位。
int g0/0/1 mac-learning proority 3
#不允许同优先级的接口MAC地址漂移 undo mac-learning prooircy ID allow-flapping
无论是第一种方法还是第二种方法,其相同之处就是在第一个地方学习了某个MAC地址,然后在另外的地方就不学习了,这样就能防止MAC地址漂移了。
其应用场景呢?比如我们公司,研发人员都接了两个网线接口,然后都用着封条封着,防止他们接到别的地方去,如果使用了这这种MAC地址防漂移的机制的话,不允许同优先级的接口发生MAC地址表覆盖,会有用吗?不会有用的,为什么?一个员工原本电脑从A接口接着,现在把线拔了下来接到同vlan的另外接口,依然是可以使用的?为啥?因为A接口拔线之后就down了,down了mac地址表就消失了,再出现B接口的话就不算漂移了,所以这两种机制是不会生效的。其它还是有办法的,在上述两种方法后还可以加入惩罚的机制,如果从别的地方又学到相同的MAC地址,检测到后将其阻塞,阻塞一段时间(自定义),如果不是有这种情况的话,还可以彻底将其阻塞。
。
问答题
能否从一个物理接口学到相同的MAC地址,其实是可以的,比如交换机上联接口是路由器的情况下,路由器用了子接口做了单臂路由,和子接口是没有单独的MAC地址的,其实子接口就应该没有自己的MAC地址,因为MAC地址全球唯一的,除了物理接口能给,虚拟接口是不能给的固态的MAC地址的,VRRP的虚拟路由器是有自己独立的MAC地址,那这个地址是华为给他预留的吗?并不是的,前半部分是华为给它预留的,后一部分是根据ID号自己产生的。
mac地址漂移默认是开启的,也就是说我们什么都不配置的话,就会有报警提示的,如下所示:
Oct 17 2020 11:01:04-08:00 Huawei L2IFPPI/4/MFLPVLANALARM:OID 1.3.6.1.4.1.2011.5 .25.160.3.7 MAC move detected, VlanId = 1, MacAddress = 5489-98df-6666, Original -Port = GE0/0/5, Flapping port = GE0/0/1. Please check the network accessed to f lapping port.
配置方法:
配置mac地址漂移检测 新版本:配置全局MAC地址漂移检测(默认开启 新版本) [Huawei]mac-address flapping detection 需检测10次漂移现象才会弹出上述日志 [Huawei]mac-address flapping action { error-down | quit-vlan } (缺省只发出告警,模拟器不支持)
相当于优先级,但没有优先级灵活,先学习才是合法的
老版本: [Huawei]vlan 1 [Huawei]loop-detect eth-loop alarm-only 或者 [Huawei-vlan1]loop-detect eth-loop block-time 10 retry-times 2 \\配置MAC地址漂移检测功能 检测到mac漂移后阻塞接口10s,重试2次,如果检测到2次漂移后则一直阻塞 注意:如果接口一直被阻塞,需全局:reset loop-detect eth-loop vlan 1 all 才可以恢复被阻塞的接口。shut/undo shut 无用。
## 查看当前接口的阻塞状态 [Huawei]dis loop-detect eth-loop VLAN Block-time RetryTimes Block-action --------------- --------------- --------------- --------------- 1 10 2 block-port Total items:1 Blocked ports: PortName Vlan Status Expire(s) Leave times ------------------------ -------- ------------- ------------- ------------- GigabitEthernet0/0/5 1 Block 9 0 Total items:1 Blocked Mac Address: Mac Address Vlan Status Expire(s) Leave times ------------------------ -------- ------------- ------------- ------------- # 仅是暂时把阻塞接口恢复,清空上面阻塞,但是配置并没有被取消 [Huawei]reset loop-detect eth-loop vlan 1 all