交换机CPU飙高却抓不到攻击包?华为ARP Miss消息限速按源IP精准压制

网里一旦有主机狂发"目的地址解析不了"的报文(端口扫描、蠕虫、配错的业务都可能),网关交换机 CPU 会突然飙高、下挂用户 ping 网关开始丢包,但 ARP 表里翻不到异常条目——因为这次触发的是 ARP Miss 消息,不是普通 ARP 报文泛洪。华为 S 系列交换机官方给的解法,是按源 IP 对 ARP Miss 消息限速,超过限速值直接认定攻击并压制。

ARP Miss 是什么(官方背景原文转述)

官方定义:如果网络中有用户向设备发送大量目标IP地址不能解析的IP报文(即路由表中存在该IP报文的目的IP对应的路由表项,但设备上没有该路由表项中下一跳对应的ARP表项),将导致设备触发大量的ARP Miss消息。这种报文会被上送设备处理,设备会根据ARP Miss消息生成和下发大量临时ARP表项并向目的网络发送大量ARP请求报文,增加设备CPU负担,同时严重消耗目的网络的带宽资源。当设备检测到某一源IP地址的IP报文在1秒内触发的ARP Miss消息数量超过了限速值,就认为此源IP地址存在攻击。

注意它和"ARP 报文限速"拦的对象不同:一个拦的是触发 ARP Miss 的 IP 报文,一个拦的是 ARP 报文本身,两层都配上防护才完整。官方建议在网关设备上进行如下配置。

怎么配(命令照官方原文)

第1步,进入系统视图,先给所有源 IP 配一个统一的 ARP Miss 消息限速值:

system-view
arp-miss speed-limit source-ip maximum maximum

第2步,对指定源 IP(可带掩码)单独限速,并指定 ARP Miss 报文的处理方式:

arp-miss speed-limit source-ip ip-address [ mask mask ] maximum maximum [ none-block | block timer timer ]

官方语义要点:两种配置同时存在时,触发 ARP Miss 的报文源 IP 匹配指定 IP 地址就用第 2 条的 maximum 值,否则用第 1 条的;限速值配 0 表示不根据源 IP 限速;缺省情况下设备允许每秒最多处理同一个源 IP 触发的 30 个 ARP Miss 消息,超限即丢弃,并默认使用 block 方式在 5 秒内持续丢弃该源 IP 后续所有 ARP Miss 报文。

配完怎么判读(官方行为口径)

本篇官方文档未附 display 验证命令,判读以官方描述的设备行为为准:同一源 IP 在 1 秒内触发超过限速值,设备即丢弃超限的 ARP Miss 消息;被限速的源 IP 无法触发 ARP 学习,其 Ping 报文会出现丢包现象——攻击源突然 ping 丢包、网关 CPU 回落,就是限速生效的信号。

几个容易踩的坑(官方注意事项原文转述)

  • 官方明确:如果同一个源 IP 频繁触发 ARP Miss 消息且速率超过 30pps 属于正常情况,则必须增大该源 IP 的限速值,否则正常流量也会触发限速,造成该用户的 ping 丢包。
  • block 方式会下发一条 ACL 来丢弃该源 IP 后续所有 ARP Miss 报文,占用设备的 ACL 资源,而 ACL 资源相对有限;none-block 方式只丢弃超限部分,对 CPU 负担的减轻效果有限。按实际权衡选择。
  • 官方建议在网关设备上配置,随便找台接入交换机配效果不对。

这种"看不见的流量攻击"排查起来特别耗时间,防护配置提前做好,比事后救火省心得多。贵州的企业做网络安全加固、网络代维,可以找诚鑫致达科技聊聊。各厂商设备的命令与默认参数存在差异,本文步骤与命令均出自华为官方文档,操作前请核对你的设备型号与软件版本。

源:华为官方文档 dc/dc_cfg_ARP_SEC_0010.md《配置ARP Miss消息限速(根据源IP地址)》