网络通信 频道

别让MAC地址漂移成为你的噩梦:实用防护与检测方法

  MAC地址漂移概述

  MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。

  当一个MAC地址在两个端口之间频繁发生迁移时,即会产生MAC地址漂移现象。

  正常情况下,网络中不会在短时间内出现大量MAC地址漂移的情况。出现这种现象一般都意味着网络中存在环路,或者存在网络攻击行为。

  防止MAC地址漂移

  如果是环路引发MAC地址漂移,治本的方法是部署防环技术,例如STP,消除二层环路。如果由于网络攻击等其他原因引起,则可使用如下MAC地址防漂移特性:

  1.配置接口MAC地址学习优先级

  当MAC地址在交换机的两个接口之间发生漂移时,可以将其中一个接口的MAC地址学习优先级提高。高优先级的接口学习到的MAC地址表项将覆盖低优先级接口学习到的MAC地址表项。

  2.配置不允许相同优先级接口MAC地址漂移

  当伪造网络设备所连接口的MAC地址优先级与安全的网络设备相同时,后学习到的伪造网络设备MAC地址表项不会覆盖之前正确的表项。

  缺省时接口MAC地址学习的优先级均为0,数值越大优先级越高。当同一个MAC地址被两个接口学习到后,接口MAC地址学习优先级高的会被保留,MAC地址学习优先级低的被覆盖。

  在配置不允许相同优先级接口MAC地址漂移时,如果安全网络设备下电,则交换机仍会学习到伪造网络设备的MAC地址,当网络设备再次上电时将无法学习到正确的MAC地址。因此该特性需谨慎使用,如果交换机的接口连接的网络设备是服务器,当服务器下电后,另外的接口学习到与服务器相同的MAC地址,当服务器再次上电后就不能学习到正确的MAC地址。

  MAC地址漂移检测

  交换机支持MAC地址漂移检测机制,分为以下两种方式:

  (1)基于VLAN的MAC地址漂移检测:

  配置VLAN的MAC地址漂移检测功能可以检测指定VLAN下的所有的MAC地址是否发生漂移。

  当MAC地址发生漂移后,可以配置指定的动作,例如告警、阻断接口或阻断MAC地址。

  (2)全局MAC地址漂移检测

  该功能可以检测设备上的所有的MAC地址是否发生了漂移。

  若发生漂移,设备会上报告警到网管系统。

  用户也可以指定发生漂移后的处理动作,例如将接口关闭或退出VLAN。

  基于VLAN的MAC地址漂移检测

  在配置基于VLAN的MAC地址漂移检测功能后,如果MAC地址发生漂移时,则可根据需求配置接口做出的动作有以下三种:

  发送告警,当检测到MAC地址发生漂移时只给网管发送告警。

  接口阻断,当检测到MAC地址发生漂移时,根据设置的阻塞时间对接口进行阻塞,并关闭接口收发报文的能力。

  MAC地址阻断,当检测到MAC地址发生漂移时,只阻塞当前MAC地址,而不对物理接口进行阻塞,当前接口下的其他MAC的通信不受影响。

  当配置接口阻塞时:

  检测到VLAN2内产生MAC地址漂移时,将产生漂移后的接口直接阻塞。

  接口将被阻塞10秒(该时长使用block-time关键字指定),接口被阻塞时是无法正常收发数据的。

  10秒之后接口会被放开并重新进行检测,此时该接口可以正常收发数据,如果20秒内没有再检测到MAC地址漂移,则接口的阻塞将被彻底解除;而如果20秒内再次检测到MAC地址漂移,则再次将该接口阻塞,如此重复2次(该次数使用retry-times关键字指定),如果交换机依然能检测到该接口发生MAC地址漂移,则永久阻塞该接口。

  全局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,如要实现接口自动恢复,可以在系统视图下配置如下命令:

  MAC地址漂移配置命令介绍

  (1)配置接口学习MAC地址的优先级:

  缺省情况下,接口学习MAC地址的优先级为0,数值越大优先级越高。

  (2)配置禁止MAC地址漂移时报文的处理动作为丢弃:

  缺省情况下,禁止MAC地址漂移时报文的处理动作是转发。

  (3)配置不允许相同优先级的接口发生MAC地址漂移:

  缺省情况下,允许相同优先级的接口发生MAC地址漂移。

  (4)配置MAC地址漂移检测功能。

  缺省情况下,已经配置了对交换机上所有VLAN进行MAC地址漂移检测的功能。

  (5)(可选)配置MAC地址漂移检测的VLAN白名单:

  缺省情况下,没有配置MAC地址漂移检测的VLAN白名单。

  (6)(可选)配置发生漂移后接口的处理动作:

  缺省情况下,对超过MAC地址学习数限制的报文采取丢弃动作。

  (7)(可选)配置MAC地址漂移表项的老化时间:

  缺省情况下,MAC地址漂移表项的老化时间为300秒。

  (8) 配置MAC地址漂移检测功能:

  MAC地址漂移配置举例

      实验介绍:

  网络基础配置已完成,Switch3与Switch4之间误接网线导致网络出现环路;

  在Switch1的接口GE0/0/1上配置MAC地址防漂移功能,防止被非法用户攻击;

  在Switch2上配置MAC地址漂移检测功能,判断网络中存在的环路,排除故障。

  (1)在Switch1与Server相连的接口GE0/0/1上配置MAC地址学习优先级高于其他接口,此优先级默认值为0。

  在Switch2上配置MAC地址漂移检测功能,并配置接口MAC地址漂移后的处理动作:

  当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可查看到漂移记录。

0
相关文章