目录
  • MAC地址漂移
    • 什么是MAC地址漂移?
    • 什么是假的MAC地址漂移?
    • 什么情况下会产生mac地址漂移呢?
    • 如何避免MAC地址漂移呢?
    • 问答题

 

MAC地址漂移

什么是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地址漂移呢?

  1. 有人恶作剧,故意捣乱,这也有可能呀,少见而已
  2. 环路发生的时候,这应该是最经常的发生的
  3. 上面两种是不太正常的,那正常情况下有没有可能会发生MAC地址漂移呢?有的,常见的两种情况,ap漫游,ap漫游是怎么回事呢?ap一般都是接在交换机之下的,假如我们有两个ap,我们在这个房间使用某个AP,于是我们的MAC地址被记录在交换机上的A接口了,然后我们去了另外一个房间,用了另外的AP,正好这个AP与刚才那个Ap都是处在同一个广播域当中,上一个MAC地址还存在于MAC地址表当中,而且接口也没有down,结果另一个接口又学到了,这样不行吗?行,而且是当然行,如果不让它行,那我们的设备无法上网了,应该让它做MAC地址的覆盖,可见,mac漂移并不见得全是坏事。
  4. 在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号自己产生的。
HCIE_交换篇_MAC地址漂移_地址漂移

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