前言

交换机MAC地址表的容量是有限的,当网络中存在MAC地址泛洪攻击时,交换机的MAC地址表可能会瞬间被大量垃圾MAC地址表项填满;

此时交换机再收到合法的数据帧时,就无法再进行MAC地址学习了,数据帧的转发必将产生问题。

为了应对这个问题,可以在交换机上对MAC地址表进行配置管理,包括缩短老化时间、配置静态表项、限制MAC地址学习数量。

同时还可以配置port-security去严格限制可连接的设备。本文将介绍这些技术。

mac地址表配置

修改老化时间

系统会为每个动态MAC地址表项启动一个老化定时器,如果MAC地址表项是动态学习得到的,而且在设定的两倍表项老化时间内没有被更新,则该表项将被删除。

如果得到更新,则该表项的老化时间重新计算。老化时间越短,则设备对周边的网络变化越敏感;反之则越不敏感。

随着网络拓扑的不断变化,设备将会学习到越来越多的MAC地址;为了避免MAC地址表项爆炸式增长,使用mac-address aging-time命令为动态MAC表项设置合理的老化时间,及时删除MAC地址表中的废弃MAC地址表项。

动态MAC地址表项的老化时间需要根据现网实际情况和设备性能来设置。

  • 相对稳定的网络可以设置较长的老化时间,变化频繁的网络应该设置较短的老化时间。
  • 高端设备和低端设备的MAC地址表项存储容量差别较大,可将低端设备的老化时间适当调小,以加速老化节省MAC地址表项。

配置

  1. 执行命令system-view,进入系统视图。

  2. 执行命令mac-address aging-time aging-time,配置动态MAC表项的老化时间。

    老化时间的取值范围是0,10~1000000,单位是秒,缺省值是300秒。0表示动态MAC地址表项不老化。

注意事项

  • 当配置动态MAC地址表项的老化时间为0秒时,学习到的动态MAC地址则不会被老化,可能会使MAC地址表项爆炸式增长,影响设备性能。
  • 全局下只有一个动态MAC地址表项的老化时间,多次执行mac-address aging-time命令后,以最后一次配置为准。

配置静态MAC地址表项

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

  • 静态MAC地址表项不会老化,保存后设备重启不会消失,只能手动删除。
  • 静态MAC地址表项中指定的MAC地址,必须是单播MAC地址,不能是组播和广播MAC地址。
  • 静态MAC地址表项的优先级高于动态MAC地址表项,且从其他接口收到源地址为该静态表项MAC地址的报文会被丢弃。
  • 已经存在的MAC地址类型是authen、pre-authen、security、sticky的MAC表项,不能将它配置为静态MAC地址表项。

配置

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

限制可学习的MAC地址表项数量

一些安全性较差的网络容易受到黑客的MAC地址攻击,由于MAC地址表的容量是有限的,当黑客伪造大量源MAC地址不同的报文并发送给交换机后,交换机的MAC表项资源就可能被耗尽。

当MAC表被填满后,即使它再收到正常的报文,也无法学习到报文中的源MAC地址。

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

一般配合其他命令一起使用(静态MAC或后续介绍的端口安全技术)。

配置:

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

    1. 执行命令system-view,进入系统视图。

    2. 执行命令interface interface-type interface-number,进入接口视图。

    3. 执行命令mac-limit maximum max-num,限制接口的MAC地址学习数。

    4. 执行命令mac-limit action { discard | forward },配置当MAC地址数达到限制后,对报文应采取的动作。

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

    5. 执行命令mac-limit alarm { disable | enable },配置当MAC地址数达到限制后是否进行告警。

      默认情况下,对超过MAC地址学习数限制的报文进行告警。

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

    1. 执行命令system-view,进入系统视图。

    2. 执行命令vlan vlan-id,进入VLAN视图。

    3. 执行命令mac-limit maximum max-num,限制VLAN的MAC地址学习数。

    4. 执行命令mac-limit alarm { disable | enable },配置当MAC地址数达到限制后是否进行告警。

      默认情况下,对超过MAC地址学习数限制的报文进行告警。

端口安全

在一些安全要求高的场景下,企业要求接入层交换机上每个连接终端设备的接口均只允许一台PC接入网络;

也就是说,如果有用户试图将连接它PC的网线接入一台小型交换机从而扩展上网接口,那么这种行为应该被发现并禁止。

另外,只有可信赖的终端发送的数据帧才允许被交换机转发到上层网络,员工不能私下更换位置(将PC移动到其他工位,也就是连接了交换机的其他接口)。

接口安全(Port Security)可用于实现上述需求。通过在交换机的特定接口上部署接口安全,可以限制接口的MAC地址学习数量,并配置当出现违规行为时的惩罚机制。

另外,部署了Port Security的接口可以将其学习到的MAC地址变为安全MAC地址,从而阻止除了安全地址之外的其他MAC地址通过该接口接入网络。

工作原理

  • Port Security接口开始工作后,会解析交换机在接口上收到的数据帧的源MAC地址,并进行MAC地址学习;

    学习到的MAC地址会被交换机转换为动态安全MAC地址,该接口将只允许这些MAC地址接入网络。

  • 当交换机接口学习到的MAC地址达到PotSecurity设置的上限后,交换机将不在该接口上继续学习MAC地址,因此其他非信任的终端将无法通过该接口进行通信。

  • 动态安全MAC地址表项是不会被老化的,但是交换机重启后,这些MAC地址表项将丢失,因此交换机不得不重新学习动态安全MAC地址。

  • 另一种安全MAC地址表项是Sticky MAC表项,这是在启用端口安全后又同时启用Sticky MAC功能后转换到的MAC地址。

    这种表项不会被老化的,而且交换机保存配置后重启,表项也不会丢失。

  • 此外,原本配置了静态MAC地址表项的条目在启用端口安全后,会变为安全静态MAC地址。

    该表项也是不会被老化的,而且交换机保存配置后重启,表项也不会丢失。

配置

建议

  • 如果接入用户变动比较频繁,可以通过端口安全把动态MAC地址转换为安全动态MAC地址。这样可以在用户变动时,及时清除绑定的MAC地址表项。
  • 如果接入用户变动较少,可以通过端口安全把动态MAC地址转换为Sticky MAC地址。这样在保存配置重启后,绑定的MAC地址表项不会丢失。
  • 如果接入用户变动较少,且数量较少的情况下,可以通过配置为安全静态MAC地址,实现MAC地址表项的绑定。

配置步骤

操作步骤

  1. 执行命令system-view,进入系统视图。

  2. 执行命令interface interface-type interface-number,进入接口视图。

  3. 执行命令port-security enable,使能端口安全功能。

  4. 执行命令port-security max-mac-num max-number,配置端口安全动态MAC学习限制数量。

    默认情况下,接口学习的安全MAC地址限制数量为1。

  5. (可选)执行命令port-security mac-address mac-address vlan vlan-id,手工配置安全静态MAC地址表项。

  6. (可选)执行命令port-security protect-action { protect | restrict | shutdown },配置端口安全保护动作。

    默认情况下,端口安全保护动作为restrict(丢弃报文且告警)。

    protect为丢弃报文但不告警;shutdown为关闭接口且告警(默认不会自动恢复)

  7. (可选)执行命令port-security aging-time time [ type { absolute | inactivity } ],配置接口学习到的安全动态MAC地址的老化时间。

    如果需要配置老化时间时,请合理配置MAC表项老化时间,设置时间过短(比如一分钟)会导致MAC表项老化过快而流量转发失败。

    默认情况下,接口学习的安全动态MAC地址不老化。