如果是环路引发MAC地址漂移,治本的方法是部署防环技术,例如STP,消除二层环路。如果由于网络攻击等其他原因引起,则可使用如下MAC地址防漂移特性:
当MAC地址在交换机的两个接口之间发生漂移时,可以将其中一个接口的MAC地址学习优先级提高。高优先级的接口学习到的MAC地址表项将覆盖低优先级接口学习到的MAC地址表项。
当伪造网络设备所连接口的MAC地址优先级与安全的网络设备相同时,后学习到的伪造网络设备MAC地址表项不会覆盖之前正确的表项。
❝”
缺省时接口MAC地址学习的优先级均为0,数值越大优先级越高。当同一个MAC地址被两个接口学习到后,接口MAC地址学习优先级高的会被保留,MAC地址学习优先级低的被覆盖。 在配置不允许相同优先级接口MAC地址漂移时,如果安全网络设备下电,则交换机仍会学习到伪造网络设备的MAC地址,当网络设备再次上电时将无法学习到正确的MAC地址。因此该特性需谨慎使用,如果交换机的接口连接的网络设备是服务器,当服务器下电后,另外的接口学习到与服务器相同的MAC地址,当服务器再次上电后就不能学习到正确的MAC地址。
交换机支持MAC地址漂移检测机制,分为以下两种方式:
在配置基于VLAN的MAC地址漂移检测功能后,如果MAC地址发生漂移时,则可根据需求配置接口做出的动作有以下三种:
❝当配置接口阻塞时:
”
检测到VLAN2内产生MAC地址漂移时,将产生漂移后的接口直接阻塞。 接口将被阻塞10秒(该时长使用block-time关键字指定),接口被阻塞时是无法正常收发数据的。 10秒之后接口会被放开并重新进行检测,此时该接口可以正常收发数据,如果20秒内没有再检测到MAC地址漂移,则接口的阻塞将被彻底解除;而如果20秒内再次检测到MAC地址漂移,则再次将该接口阻塞,如此重复2次(该次数使用retry-times关键字指定),如果交换机依然能检测到该接口发生MAC地址漂移,则永久阻塞该接口。
当交换机检测到MAC地址漂移,在缺省情况下,它只是简单地上报告警,并不会采取其他动作。在实际网络部署中,可以根据网络需求,对检测到MAC地址漂移之后定义以下动作:
❝”
华为交换机默认开启全局MAC地址漂移检测功能,因此缺省时交换机便会对设备上的所有VLAN进行MAC地址漂移检测。 在某些场景下,需要对某些VLAN不进行MAC地址漂移检测,可以通过配置MAC地址漂移检测的VLAN白名单来实现。 如果接口由于发生了MAC地址漂移从而被设置为Error-Down,默认情况下是不会自动恢复的。 如果希望Error-Down的接口能够自动恢复,在系统视图下配置如下命令: error-down auto-recovery cause mac-address-flApping interval time-value
如果接口由于发生了MAC地址漂移,被设置为离开VLAN,如要实现接口自动恢复,可以在系统视图下配置如下命令: mac-address flapping quit-vlan recover-time time-value
[Huawei-GigabitEthe.NET0/0/1] mac-learning priority priority-id
❝缺省情况下,接口学习MAC地址的优先级为0,数值越大优先级越高。
”
[Huawei-GigabitEthernet0/0/1] mac-learning priority flapping-defend action discard
❝缺省情况下,禁止MAC地址漂移时报文的处理动作是转发
”
[Huawei] undo mac-learning priority priority-id allow-flapping
❝缺省情况下,允许相同优先级的接口发生MAC地址漂移。
”
[Huawei-vlan2] mac-address flapping detection
❝缺省情况下,已经配置了对交换机上所有VLAN进行MAC地址漂移检测的功能
”
[Huawei] mac-address flapping detection exclude vlan { vlan-id1 [ to vlan-id2 ] } &<1-10>
❝缺省情况下,没有配置MAC地址漂移检测的VLAN白名单。
”
[Huawei-GigabitEthernet0/0/1] mac-address flapping action { quit-vlan | error-down }
❝缺省情况下,对超过MAC地址学习数限制的报文采取丢弃动作。
”
[Huawei] mac-address flapping aging-time aging-time
❝缺省情况下,MAC地址漂移表项的老化时间为300秒。
”
[Huawei-vlan2] loop-detect eth-loop { [ block-mac ] block-time block-time retry-times retry-times | alarm-only }
❝实验介绍:
”
网络基础配置已完成,Switch3与Switch4之间误接网线导致网络出现环路; 在Switch1的接口GE0/0/1上配置MAC地址防漂移功能,防止被非法用户攻击; 在Switch2上配置MAC地址漂移检测功能,判断网络中存在的环路,排除故障。
[Switch1] interface GigabitEthernet 0/0/1
[Switch1-GigabitEthernet 0/0/1] mac-leaning priority 3
[Switch2] mac-address flapping detection
[Switch2] mac-address flapping aging-time 500
[Switch2-GigabitEthernet0/0/1] mac-address flapping action error-down
[Switch2-GigabitEthernet0/0/2] mac-address flapping action error-down
[Switch2] error-down auto-recovery cause mac-address-flapping interval 500
❝”
当Switch3与Switch4之间误连接之后,Switch2的接口GE0/0/1的MAC地址漂移到接口GE0/0/2后,触发接口error-down,接口GE0/0/2关闭。 使用display mac-address flapping record可查看到漂移记录。
配置验证配置完成后,当Switch2的接口GE0/0/1的MAC地址漂移到接口GE0/0/2后,接口GE0/0/2关闭;使用display mac-address flapping record
可查看到漂移记录。
[Switch2] display mac-address flapping record
S : start time
E : end time
(Q) : quit vlan
(D) : error down
---------------------------------------------------------------------------------------------------
Move-Time VLAN MAC-Address Original-Port Move-Ports MoveNum
---------------------------------------------------------------------------------------------------
S:2020-06-22 17:22:36 1 5489-9815-662b GE0/0/1 GE0/0/2(D) 83
E:2020-06-22 17:22:44
---------------------------------------------------------------------------------------------------
Total items on slot 0: 1