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

网络 安全
正常情况下,网络中不会在短时间内出现大量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的接口能够自动恢复,在系统视图下配置如下命令:
error-down auto-recovery cause mac-address-flapping interval time-value
  • 如果接口由于发生了MAC地址漂移,被设置为离开VLAN,如要实现接口自动恢复,可以在系统视图下配置如下命令:
mac-address flapping quit-vlan recover-time time-value

MAC地址漂移配置命令介绍 

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

[Huawei-GigabitEthernet0/0/1] mac-learning priority priority-id

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

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

[Huawei-GigabitEthernet0/0/1] mac-learning priority flapping-defend action discard

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

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

[Huawei] undo mac-learning priority priority-id allow-flapping

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

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

[Huawei-vlan2] mac-address flapping detection

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

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

[Huawei] mac-address flapping detection exclude vlan { vlan-id1 [ to vlan-id2 ] } &<1-10>

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

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

[Huawei-GigabitEthernet0/0/1] mac-address flapping action { quit-vlan | error-down }

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

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

[Huawei] mac-address flapping aging-time aging-time

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

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

[Huawei-vlan2] loop-detect eth-loop { [ block-mac ] block-time block-time retry-times retry-times | alarm-only }

MAC地址漂移配置举例

实验介绍:

  • 网络基础配置已完成,Switch3与Switch4之间误接网线导致网络出现环路;
  • 在Switch1的接口GE0/0/1上配置MAC地址防漂移功能,防止被非法用户攻击;
  • 在Switch2上配置MAC地址漂移检测功能,判断网络中存在的环路,排除故障。

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

[Switch1] interface GigabitEthernet 0/0/1
[Switch1-GigabitEthernet 0/0/1] mac-leaning priority 3

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

[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
责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2016-01-26 11:23:18

2017-07-14 17:41:20

2022-01-13 14:01:39

Rfid克隆防护

2009-02-19 09:26:01

2016-03-06 22:59:27

移动办公/华三

2013-02-26 10:05:04

IT人员程序员台湾IT

2010-04-13 14:04:04

系统迁移

2017-03-07 12:17:31

2024-02-29 13:42:00

Linuxsar命令uptime

2015-10-10 13:22:26

2020-06-01 10:11:27

云计算云迁移数字化转型

2013-06-28 10:54:08

2015-11-16 23:49:39

2014-03-07 10:20:06

存储虚拟化

2014-03-07 10:18:31

存储在线

2010-04-10 17:43:24

无线蹭网卡

2015-02-27 13:51:32

数据安全

2017-12-19 15:20:47

代码应用架构

2011-11-02 13:43:31

苹果iCloud云计算

2011-10-14 16:05:55

苹果iCloud云计算
点赞
收藏

51CTO技术栈公众号