MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。
当一个MAC地址在两个端口之间频繁发生迁移时,即会产生MAC地址漂移现象。
正常情况下,网络中不会在极短的时间内出现大量MAC地址漂移的情况。出现这样一种现象一般都意味着网络中存在环路,或者存在网络攻击行为。
如果是环路引发MAC地址漂移,治本的方法是部署防环技术,例如STP,消除二层环路。如果由于网络攻击等其他原因引发,则可使用如下MAC地址防漂移特性:
当MAC地址在交换机的两个接口之间发生漂移时,可以将其中一个接口的MAC地址学习优先级提高。高优先级的接口学习到的MAC地址表项将覆盖低优先级接口学习到的MAC地址表项。
当伪造网络设备所连接口的MAC地址优先级与安全的网络设备相同时,后学习到的伪造网络设备MAC地址表项不会覆盖之前正确的表项。
缺省时接口MAC地址学习的优先级均为0,数值越大优先级越高。当同一个MAC地址被两个接口学习到后,接口MAC地址学习优先级高的会被保留,MAC地址学习优先级低的被覆盖。
在配置不允许相同优先级接口MAC地址漂移时,如果安全网络设备下电,则交换机仍会学习到伪造网络设备的MAC地址,当网络设备再次上电时将无法学习到正确的MAC地址。因此该特性需谨慎使用,如果交换机的接口连接的网络设备是服务器,当服务器下电后,另外的接口学习到和服务器相同的MAC地址,当服务器再次上电后就不能学习到正确的MAC地址。
配置VLAN的MAC地址漂移检测功能能检测指定VLAN下的所有的MAC地址是否发生漂移。
当MAC地址发生漂移后,可以配置指定的动作,例如告警、阻断接口或阻断MAC地址。
在配置基于VLAN的MAC地址漂移检测功能后,如果MAC地址发生漂移时,则可依据需求配置接口做出的动作有以下三种:
接口阻断,当检测到MAC地址发生漂移时,根据设置的阻塞时间对接口进行阻塞,并关闭接口收发报文的能力。
MAC地址阻断,当检测到MAC地址发生漂移时,只阻塞当前MAC地址,而不对物理接口进行阻塞,当前接口下的其他MAC的通信不受影响。
接口将被阻塞10秒(该时长使用block-time关键字指定),接口被阻塞时是无法正常收发数据的。
10秒之后接口会被放开并重新进行仔细的检测,此时该接口能够顺利收发数据,如果20秒内没有再检测到MAC地址漂移,则接口的阻塞将被彻底解除;而如果20秒内再次检测到MAC地址漂移,则再次将该接口阻塞,如此重复2次(该次数使用retry-times关键字指定),如果交换机依然能检测到该接口发生MAC地址漂移,则永久阻塞该接口。
当交换机检测到MAC地址漂移,在缺省情况下,它只是简单地上报告警,并不会采取其他动作。在实际网络部署中,能够准确的通过网络需求,对检测到MAC地址漂移之后定义以下动作:
error-down:当配置了MAC地址漂移检测的端口检测到有MAC地址漂移时,将对应接口状态置为error-down,不再转发数据。
quit-vlan:当配置了MAC地址漂移检测的端口检测到有MAC地址漂移时,将退出当前接口所属的VLAN。
华为交换机默认开启全局MAC地址漂移检测功能,因此缺省时交换机便会对设备上的所有VLAN进行MAC地址漂移检测。
在某些场景下,需要对某些VLAN不进行MAC地址漂移检测,能够最终靠配置MAC地址漂移检测的VLAN白名单来实现。
如果接口由于发生了MAC地址漂移从而被设置为Error-Down,默认情况下是不会自动恢复的。
如果希望Error-Down的接口能自动恢复,在系统视图下配置如下命令:
如果接口由于发生了MAC地址漂移,被设置为离开VLAN,如要实现接口自动恢复,可以在系统视图下配置如下命令:
缺省情况下,已经配置了对交换机上所有VLAN进行MAC地址漂移检测的功能。
网络基础配置已完成,Switch3与Switch4之间误接网线导致网络出现环路;
在Switch1的接口GE0/0/1上配置MAC地址防漂移功能,防止被非法用户攻击;
在Switch2上配置MAC地址漂移检测功能,判断网络中存在的环路,排除故障。
(1)在Switch1与Server相连的接口GE0/0/1上配置MAC地址学习优先级高于其他接口,此优先级默认值为0。
在Switch2上配置MAC地址漂移检测功能,并配置接口MAC地址漂移后的处理动作: