配置静态MAC表项

实现MAC地址和端口的静态绑定

背景信息

设备通过源MAC地址学习自动建立MAC地址表时,无法区分合法用户和非法用户的报文,带来了安全隐患。如果非法用户将攻击报文的源MAC地址伪装成合法用户的MAC地址,并从设备的其他接口进入,设备就会学习到错误的MAC地址表项,于是将本应转发给合法用户的报文转发给非法用户。为了提高安全性,网络管理员可手工在MAC地址表中加入特定MAC地址表项,将用户设备与接口绑定,从而防止非法用户骗取数据。

静态MAC地址表项有如下特性:

  • 静态MAC地址表项不会老化,保存后设备重启不会消失,只能手动删除。
  • 静态MAC地址表项中指定的VLAN必须已经创建并且已经加入绑定的端口。
  • 静态MAC地址表项中指定的MAC地址,必须是单播MAC地址,不能是组播和广播MAC地址。
  • 静态MAC地址表项的优先级高于动态MAC地址表项,对静态MAC地址进行漂移的报文会被丢弃

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mac-address static mac-address interface-type interface-number vlan vlan-id,添加静态MAC表项。

检查配置结果

使用命令display mac-address static,查看配置的静态MAC表项。

配置黑洞MAC表项

配置黑洞MAC表项,实现过滤非法MAC地址的功能。

背景信息

为了防止黑客通过MAC地址攻击用户设备或网络,可将非信任用户的MAC地址配置为黑洞MAC地址,过滤掉非法MAC地址。当设备收到目的MAC或源MAC地址为黑洞MAC地址的报文,直接丢弃。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令 mac-address blackhole mac-address [ vlan vlan-id ],添加黑洞MAC表项。

检查配置结果

使用命令 display mac-address blackhole,查看配置的黑洞MAC表项。

配置动态MAC表项的老化时间

为了避免MAC地址表项爆炸式增长,可以手工配置动态MAC表项的老化时间。

背景信息

随着网络拓扑的不断变化,交换机将会学习到越来越多的MAC地址。为了避免MAC地址表项爆炸式增长,需要合理配置动态MAC表项的老化时间,及时删除MAC地址表中的废弃MAC地址表项。老化时间越短,交换机对周边的网络变化越敏感,适合在网络拓扑变化比较频繁的环境;老化时间越长,交换机对周边的网络变化越不敏感,适合在网络拓扑比较稳定的环境。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mac-address aging-time aging-time,配置动态MAC表项的老化时间。
    老化时间的取值范围是0,10~1000000,单位是秒,缺省值是300秒。0表示动态MAC地址表项不老化。老化时间为0时,可以固化MAC地址,即MAC地址表项永不老化。如果想要清除已经固化的MAC地址,可以先设置老化时间为非0,然后在两倍老化时间后自动清除。

检查配置结果

使用命令display mac-address aging-time,查看动态MAC表项的老化时间。

配置关闭MAC地址学习功能

提供基于多种方式关闭MAC地址学习的配置方法。

背景信息

默认情况下,设备的MAC地址学习功能都是开启的。在收到来自周边设备的数据帧时,会解析出数据帧的源MAC地址,然后与接收该数据帧的接口组合成一条MAC地址表项,添加到MAC地址表中。以后设备接收到去往该目的MAC地址的数据帧时,则直接查询MAC地址表就可以得到正确的发送接口,避免广播。若关闭MAC地址学习功能,设备在收到数据帧时将不会进行MAC地址的学习。另外之前学习到的动态表项不会立即删除,需要等待老化时间到达后老化删除,或手工执行删除MAC命令进行删除。

操作步骤

1、关闭接口的MAC地址学习功能。

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface interface-type interface-number,进入接口视图。
  3. 执行命令mac-address learning disable [ action { discard | forward } ],在接口上关闭MAC地址学习功能。
    缺省情况下,接口的MAC地址学习功能是开启的。关闭MAC地址学习功能的缺省动作为forward,即对报文进行转发。当配置动作为discard时,会对报文的源MAC地址进行匹配,当接口和MAC地址与MAC地址表项匹配时,则对该报文进行转发。当接口和MAC地址与MAC地址表项不匹配时,则丢弃该报文。

2、关闭VLAN的MAC地址学习功能。

  1. 执行命令system-view,进入系统视图。
  2. 执行命令vlan vlan-id,进入VLAN视图。
  3. 执行命令mac-address learning disable,在VLAN上关闭MAC地址学习功能。缺省情况下,VLAN的MAC地址学习功能是开启的。

配置限制MAC地址学习数功能

通过配置MAC地址学习数,可以控制用户的接入数,从而防止黑客对MAC地址的攻击。

背景信息

一些安全性较差的网络容易受到黑客的MAC地址攻击,由于MAC地址表的容量是有限的,当黑客伪造大量源MAC地址不同的报文并发送给交换机后,交换机的MAC表项资源就可能被耗尽。当MAC表被填满后,即使它再收到正常的报文,也无法学习到报文中的源MAC地址。

配置限制MAC地址学习数,当超过限制数时不再学习MAC地址,同时可以配置当MAC地址数达到限制后对报文采取的动作,从而防止MAC地址表资源耗尽,提高网络安全性。

操作步骤

1、配置基于接口限制MAC地址学习数

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface interface-type interface-number,进入接口视图。
  3. 执行命令mac-limit maximum max-num,限制接口的MAC地址学习数。
    缺省情况下,不限制MAC地址学习数。
  4. 执行命令mac-limit action { discard | forward },配置当MAC地址数达到限制后,对报文应采取的动作。
    缺省情况下,对超过MAC地址学习数限制的报文采取丢弃动作。
  5. 执行命令mac-limit alarm { disable | enable },配置当MAC地址数达到限制后是否进行告警。
    缺省情况下,对超过MAC地址学习数限制的报文进行告警。

2、配置基于VLAN限制MAC地址学习数

  1. 执行命令system-view,进入系统视图。
  2. 执行命令vlan vlan-id,进入VLAN视图。
  3. 执行命令mac-limit maximum max-num,限制VLAN的MAC地址学习数。
    缺省情况下,不限制MAC地址学习数。
  4. 执行命令mac-limit alarm { disable | enable },配置当MAC地址数达到限制后是否进行告警。
    缺省情况下,对超过MAC地址学习数限制的报文进行告警。

检查配置结果

使用命令display mac-limit,查看MAC地址学习数限制信息。

配置MAC地址告警功能

通过配置MAC地址告警功能,可以在MAC地址使用率超过阈值,MAC地址变化和MAC地址Hash冲突时发送告警,从而使用户实时掌握MAC地址表的运行状态。

背景信息

MAC地址表资源属于设备的关键资源,有效的监控MAC地址表的使用状态,可以为设备的正常运行提供保障。交换机目前支持3种MAC地址表的告警功能。

告警功能

实现说明

MAC地址使用率超过阈值上报告警功能

当MAC地址表使用率大于等于80%时发送超过阈值告警,MAC地址表使用率小于70%时发送低于阈值的恢复告警。超过阈值的告警和低于阈值的恢复告警,是成对出现的,即只有发送过超过阈值的告警,才会在MAC地址表使用率小于70%时发送低于阈值的恢复告警。出现该告警时,说明MAC地址表的使用率超过了正常标准,建议用户对网络进行分流或扩容。

MAC地址变化上报告警功能

当新学习到MAC地址表项或MAC地址表项老化时,发送告警。

MAC地址Hash冲突上报告警功能

为了提升MAC转发性能,设备内的MAC地址表是使用Hash链保存的。当出现多个MAC地址根据Hash算法获取到同一个Key值时,就可能会出现有些MAC地址无法保存的现象,这种现象就是MAC地址Hash冲突。MAC地址发生Hash冲突时,一般表现为:设备MAC地址表空间未满,而MAC地址表项又学习不到。MAC地址发生Hash冲突时,不会影响流量的转发,只会使目的MAC是该MAC的流量通过广播方式发送,从而占用设备的带宽和资源。用户可以通过更换设备或终端的网卡解决。

操作步骤

1、开启MAC地址使用率超过阈值上报告警功能。

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mac-address threshold-alarm upper-limit upper-limit-value lower-limit lower-limit-value,配置MAC表资源使用的告警阈值。缺省情况下,MAC地址表使用的告警上下限阈值分别为80%和70%,即当MAC地址表使用率大于等于80%时发送超过阈值告警,MAC地址表使用率小于70%时发送低于阈值的恢复告警。

2、开启MAC地址变化上报告警功能。

  1. 执行命令system-view,进入系统视图。
  2. (可选)执行命令mac-address trap notification interval interval-time,配置设备对MAC地址发生学习或老化的检查周期。缺省情况下,设备对MAC地址发生学习或老化的检查周期为10秒。
  3. 执行命令interface interface-type interface-number,进入接口视图。
  4. 执行命令mac-address trap notification { aging | learn | all },开启MAC地址学习或老化的告警功能。
    缺省情况下,未开启MAC地址学习或老化的告警功能。

3、开启MAC地址Hash冲突上报告警功能。

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mac-address trap hash-conflict enable,开启设备MAC地址Hash冲突上报告警的功能。缺省情况下,设备开启MAC地址Hash冲突上报告警的功能。
  3. (可选)执行命令mac-address trap hash-conflict history history-number,配置设备MAC地址Hash冲突每个周期上报的告警条数。缺省情况下,设备MAC地址Hash冲突每个周期上报告警条数为10条。
  4. (可选)执行命令mac-address trap hash-conflict interval interval-time,配置设备MAC地址Hash冲突上报告警的周期间隔。缺省情况下,设备MAC地址Hash冲突上报告警的周期间隔为60秒。

检查配置结果

执行命令display current-configuration,查看交换机是否配置MAC地址告警功能。

配置MAC Hash模式

配置MAC Hash模式,是一种解决MAC地址Hash冲突的方式。但是在通常情况下,默认算法为最优算法,建议不要轻易变更。

背景信息

为了提升MAC转发性能,设备一般都会通过一定的Hash算法进行MAC地址学习。当出现多个MAC地址匹配到同一个Key值时,就可能出现MAC Hash冲突。MAC Hash冲突一般表现为大量的MAC地址无法学习到,到该MAC的流量只能通过广播方式发送,导致设备上的广播流量很大。出现这种问题后,可以通过尝试配置更合适的MAC Hash算法的方式来降低冲突。

说明

  1. 设备上MAC地址存储方式为HASH桶存储。使用HASH桶存储的设备会对需要存储的MAC地址的VLAN和MAC信息进行HASH运算,得到一个HASH桶索引。相同HASH桶索引的MAC地址存储在一个HASH桶内。如果某个HASH桶内学习到的MAC地址大于HASH桶的最大存储长度,这时称之为产生了MAC地址HASH冲突,该MAC地址将无法存储。所以采用这种存储的设备学习到的MAC地址,可能无法达到该设备可学习的MAC地址规格。
  2. 由于MAC地址分布没有规律性,因此无法确定哪种Hash算法最优。在通常情况下,默认算法为最优算法,建议不要轻易变更。
  3. 配置合适的MAC Hash模式只能缓解MAC地址学习的Hash冲突,不能彻底解决冲突问题。
  4. 更改MAC Hash模式后,必须重启设备使配置生效。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mac-address hash-mode { xor | crc } slot slot-id,配置设备的MAC Hash模式。缺省情况下,设备的Hash模式为crc。
  3. 执行命令mac-address hash-bucket-mode { size4 | size8 | size12 | size16 },配置MAC表的Hash桶深。缺省情况下,设备MAC表的Hash桶深为4。

说明

  1. 随着Hash桶深的变大,设备转发性能会降低。
  2. 当Hash桶深由大改小时,需要重启生效。

检查配置结果

使用命令display mac-address hash-mode,查看当前运行的MAC Hash模式和当前配置的MAC Hash模式。

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

背景信息

接口配置不同的MAC地址学习优先级后,如果不同接口学到相同的MAC地址表项,那么高优先级接口学到的MAC地址表项可以覆盖低优先级接口学到的MAC地址表项,防止MAC地址发生漂移。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mac-spoofing-defend enable,开启全局MAC-spoofing-defend功能。缺省情况下,全局的MAC-spoofing-defend功能为去开启状态。
  3. 执行命令interface interface-type interface-number,进入接口视图。
  4. 执行命令mac-spoofing-defend enable,开启接口的MAC-spoofing-defend功能,即将接口配置为信任接口。缺省情况下,没有开启接口的MAC-spoofing-defend功能。

检查配置结果

执行命令display current-configuration,查看接口MAC地址学习优先级的配置。

配置MAC地址漂移检测

背景信息

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

说明

  • 为避免重要上行流量中断,不建议用户在上行接口配置MAC地址漂移处理动作。
  • MAC地址漂移检测功能只能做单点环路检测,无法获取整个网络的拓扑信息。如果网络支持破环协议,建议使用破环协议来消除环路。
  • 如果下挂网络中可能只是在少量VLAN内出现环路,建议配置MAC地址漂移检测与接口退出VLAN联动机制。
  • 如果下挂网络中大量VLAN会成环,建议直接使用MAC地址漂移检测与接口error-down联动机制。这样可以提升处理性能,而且接口down能够被对端设备感知,若对端设备有冗余保护链路,可以快速切换。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令mac-address flapping detection,配置MAC地址漂移检测功能。缺省情况下,已经配置了MAC地址漂移检测功能,对交换机上所有VLAN进行MAC地址漂移检测。
  3. (可选)执行命令mac-address flapping detection exclude vlan { vlan-id1 [ to vlan-id2 ] } &<1-10>,配置MAC地址漂移检测的VLAN白名单,即指定不检测的VLAN。缺省情况下,没有配置MAC地址漂移检测的VLAN白名单。在某些特定场景下,如交换机连接双网卡的负载分担服务器时,可能会出现服务器的MAC地址在两个接口上学习到,而这种情况不需要作为MAC地址漂移被检测出来。可以将服务器所在的VLAN加入MAC地址漂移检测白名单,不对该VLAN进行检测。
  4. (可选)执行命令mac-address flapping detection vlan { { vlan-id1 [ to vlan-id2 ] } &<1-10> | all } security-level { high | middle | low },配置指定VLAN中MAC地址漂移检测的安全级别。缺省情况下,MAC地址漂移检测的安全级别为middle,即MAC地址发生10次迁移后,系统认为发生了MAC地址漂移。
  5. (可选)执行命令mac-address flapping aging-time aging-time ,配置MAC地址漂移表项的老化时间。缺省情况下,MAC地址漂移表项的老化时间为300秒。如果用户修改动态MAC表项的老化时间变长,会导致观测到MAC地址漂移的时间变长,为了能够及时检测到MAC地址漂移,可以修改漂移表项的老化时间。
  6. (可选)配置发生漂移后接口的处理动作及优先级。
    1. 执行命令interface interface-type interface-number,进入接口视图。
    2. 执行命令mac-address flapping action { quit-vlan | error-down },配置接口发生MAC漂移后的处理动作。缺省情况下,没有配置MAC漂移检测的处理动作。用户网络中由于环路造成了MAC地址漂移,且网络不支持破环协议,可以在相应接口上配置发生MAC地址漂移后的处理动作来实现破环。接口上配置了MAC地址漂移处理动作,如果系统检测到是该接口学习的MAC发生漂移,会将该接口关闭或者退出VLAN。在一个MAC地址漂移表项老化周期内只能关闭一个接口。MAC漂移检测联动接口退VLAN技术与其他接口动态VLAN技术相冲突,不能同时使用。例如GVRP等具有接口动态VLAN技术的功能不要与MAC漂移检测联动接口退VLAN同时配置。MAC漂移触发接口error-down与MAC漂移触发接口退VLAN是两个独立的动作,如果配置error-down的接口和配置quit-vlan的接口发生漂移时,两个接口都会执行接口下配置的操作,即配置error-down的接口会被error-down,配置quit-vlan的接口会执行退vlan操作。对于可能出现在同一个环上的接口,建议不要同时配置这两种动作。
    3. 执行命令mac-address flapping action priority priority,配置发生MAC地址漂移时接口动作的优先级。

检查配置结果

执行命令display mac-address flapping,查看MAC地址漂移的配置信息。

发生MAC地址漂移后的处理动作

配置MAC地址漂移检测功能后,在设备发生MAC地址漂移时,会上报告警,在多次出现MAC地址漂移告警时,网络可能出现了环路,管理员可以通过shutdown告警中的漂移端口进行破环。也可以通过在漂移端口配置MAC地址漂移检测后的处理动作,自动进行破环。

如果配置MAC地址漂移检测后的处理动作,自动进行破环,请注意下列几点:

  • MAC地址漂移检测后的处理动作为error-down时,默认情况下,接口关闭后不会自动恢复,只能由网络管理人员先执行shutdown命令再执行undo shutdown命令手动恢复,也可以在接口视图下执行restart命令重启接口。
    如果用户希望被关闭的接口可以自动恢复,则必须在接口error-down前通过在系统视图下执行error-down auto-recovery cause mac-address-flapping命令使能接口状态自动恢复为Up的功能,并设置接口自动恢复为Up的延时时间,才可使被关闭的接口经过延时时间后能够自动恢复。
  • MAC地址漂移检测后的处理动作为quit-vlan时,默认情况下,接口退出VLAN可以自动恢复,恢复时间为10分钟。同时自动恢复时间可以为配置值,在系统视图下执行mac-address flapping quit-vlan recover-time time-value进行配置。

配置丢弃全零MAC地址报文功能

网络中的一些主机或设备发生故障时,会向交换机发送源MAC或目的MAC地址为全0的报文。可配置交换机丢弃这些报文,还可以配置在收到这些报文时上报告警,管理员可根据告警信息来定位故障设备。

背景信息

配置该功能后,交换机会丢弃源MAC或目的MAC为全0的MAC地址报文。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令drop illegal-mac enable,开启交换机丢弃全0非法MAC地址报文。缺省情况下,交换机没有开启丢弃全0非法MAC地址报文的功能。
  3. (可选)执行命令drop illegal-mac alarm,配置交换机收到全0非法MAC地址报文时生成一条告警。缺省情况下,交换机收到全0非法MAC地址报文时不生成告警。

配置drop illegal-mac alarm命令后只能告警一次。如果需要继续告警,必须重新配置该命令。

检查配置结果

执行命令display current-configuration,查看交换机是否配置丢弃全0非法MAC地址报文的功能。

配置端口桥功能

配置端口桥功能后,接口将实现对同源同宿报文的转发。

背景信息

同源同宿报文即源MAC地址和目的MAC地址均在设备的同一接口上学习到的报文。缺省情况下,设备不转发同源同宿报文,当接口收到这种报文时,设备判断为非法报文并直接丢弃该报文。

配置端口桥功能后,当接口收到同源同宿报文时,若设备上的MAC地址表中存在与该报文的目的MAC地址对应的表项,则将报文从本接口转发出去。

端口桥功能主要应用于以下场景:

  • 设备下挂有不具备二层转发能力的设备,当这些无二层转发能力的设备连接的用户有互通需求时,会直接将报文上送到设备,由设备完成转发功能。由于这些报文的源MAC地址和目的MAC地址都是设备的同一接口学习到,此时需要开启端口桥功能,使接口转发同源同宿报文。
  • 在数据中心做接入设备且下挂服务器,一台服务器中启用多个虚拟机,并且虚拟机之间需要进行数据交换。若在服务器内部完成虚拟机之间的数据交换,会大大影响数据交换速度和服务器性能。为了提高数据交换速度和服务器性能,可以开启端口桥功能,由设备来进行数据交换。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface interface-type interface-number,进入接口视图。
  3. 执行命令port bridge enable,配置端口桥功能。缺省情况下,没有配置端口桥功能。

检查配置结果

使用命令display current-configuration查看端口桥功能是否配置成功。