交换机CPU瞬间飙升到99%,甚至100%,控制台卡死,远程登录超时,整个网络陷入瘫痪。这种情况在网络运维中并不少见,尤其是当遭遇大流量DDoS攻击或异常流量突发时,交换机作为数据转发的核心节点,其CPU资源会被大量无效或恶意的数据包瞬间耗尽。CPU过载的直接后果就是设备无法正常处理ARP请求、STP计算、路由协议更新以及管理平面的响应,导致网络大面积中断。
处理这类故障,核心思路不是去深究攻击源头的IP归属,而是第一时间恢复设备的控制平面可用性。交换机CPU高的本质,是大量数据包被“上送”到了CPU处理,而不是通过ASIC芯片进行硬件转发。正常情况下,交换机的数据转发由硬件芯片完成,不消耗CPU资源。但某些特定类型的报文,比如广播包、组播包、TTL为1的报文、带选项的IP报文、ARP请求以及需要CPU处理的ACL日志等,会被强制送到CPU。攻击者正是利用了这一特性,伪造大量需要CPU处理的报文,导致CPU满载。
第一步:紧急隔离,物理断腕如果你已经无法通过SSH或Telnet远程登录交换机,说明控制平面已经彻底阻塞。此时最直接有效的方法是通过Console线连接设备。Console口是带外管理通道,不经过交换矩阵,即使CPU满载,只要设备没有死机重启,Console口通常仍能响应,只是反应会非常慢。插上Console线后,如果敲击回车没有反应,不要慌张,耐心等待,CPU可能会在极短的间隙处理Console输入。
一旦进入命令行界面,立即执行关闭所有端口的操作,或者关闭连接外部网络的物理接口。对于Cisco设备,可以进入全局配置模式,执行 interface range gi1/0/1 - 48 然后 shutdown。对于华为或H3C设备,使用 interface range g1/0/1 to g1/0/48 后执行 shutdown。如果不知道攻击来自哪个方向,最保险的做法是只保留Console连接的带外管理口,断开所有业务端口。这一步是为了先保住设备,防止CPU长时间过载导致硬件损坏或设备重启。
在端口被关闭、CPU利用率瞬间回落后,不要急于恢复所有端口。先开启一个上行端口,或者只开启连接内网核心的端口,并立即部署抓包和流量分析。此时CPU已经恢复正常,操作会非常流畅。执行查看CPU利用率的命令,例如华为的 display cpu-usage 或思科的 show processes cpu,确认当前负载正常。
接着,重点查看上送CPU的报文统计。在华为交换机上,display cpu-defend statistics 是一个非常关键的命令,它能显示各类协议报文上送CPU的速率和丢弃情况。你需要关注那些速率异常高的报文类型,比如ARP Request、ICMP、DHCP、SNMP或者未知单播。在思科设备上,可以使用 show control-plane 相关命令查看上送CPU的流量分类。通过对比正常基线,通常能一眼看出是哪一类报文出现了数量级的暴增。
如果交换机支持NetStream或sFlow,查看流量采样数据也是快速定位攻击特征的方法。重点观察源IP、目的IP、源端口、目的端口、协议类型以及报文长度。大流量攻击往往伴随着固定长度的报文,或者随机源IP的SYN Flood、UDP Flood。找到攻击流量的特征后,比如攻击目标是某个特定服务器IP的80端口,或者攻击报文都是长度为128字节的UDP包,就可以进行精准过滤。
第三步:控制平面防护策略部署识别出攻击特征后,不能仅仅依靠ACL来过滤。因为如果ACL配置不当,或者攻击流量太大,即使ACL过滤了数据包,但ACL本身如果需要CPU处理日志或软件转发,依然会加重CPU负担。正确的做法是结合控制平面策略(Control Plane Policing,CoPP)和硬件ACL。
CoPP是专门保护CPU资源的机制。在华为交换机上,可以使用 cpu-defend policy 来限制特定协议报文的上送速率。例如,如果发现是ARP攻击,可以配置针对ARP报文的限速:
cpu-defend policy protect-cpu car packet-type arp cir 128 cbs 10000
然后将该策略应用到全局。对于思科设备,使用 control-plane 配置模式下的 police 命令限制特定类型流量的速率。关键点在于,CoPP是在报文上送CPU之前进行限速和丢弃,能有效保护CPU。配置CoPP时,要基于设备正常业务量设置合理的CIR(承诺信息速率),不要盲目限制过小,否则会导致正常协议中断,比如OSPF邻居震荡。
对于已知的攻击源IP或特定攻击端口,下发硬件ACL进行过滤。确保ACL是应用在接口的入方向,并且ACL规则能够被硬件芯片直接处理,不产生日志。例如在华为交换机上,配置ACL时不要带 logging 参数,否则匹配的报文又会被送CPU记录日志,适得其反。一个典型的反攻击ACL如下:
acl number 3001 rule 5 deny udp destination-port eq 80 rule 10 permit ip
将此ACL应用到连接外网的接口入方向,能够直接在硬件层面丢弃攻击流量,完全不消耗CPU。
第四步:ARP与MAC地址表防护很多导致CPU过高的攻击是ARP攻击,包括ARP泛洪和ARP欺骗。交换机在处理大量ARP请求时,需要CPU进行解析和回应,如果每秒收到数万个ARP请求,CPU必然不堪重负。除了使用CoPP限制ARP报文速率外,还需要开启ARP防攻击功能。
在华为交换机上,配置基于接口的ARP限速:arp anti-attack rate-limit enable 并设置合理的限速阈值。同时开启ARP Miss消息限速,因为当交换机查找路由表或ARP表失败时,会产生ARP Miss消息上送CPU,攻击者会利用这一点。配置 arp-miss speed-limit source-ip maximum 50 能有效缓解此类攻击。对于思科设备,可以配置 ip arp inspection 结合DHCP Snooping,只允许合法的ARP报文通过。
此外,MAC地址表泛洪攻击也会消耗交换机资源。攻击者发送大量伪造源MAC地址的数据包,试图填满交换机的MAC地址表,导致合法流量被广播。配置端口安全,限制单个接口学习的MAC地址数量,例如 port-security maximum 10,并配置违规后的动作 port-security violation restrict,能有效阻止此类攻击。
如果攻击流量非常大,已经超过了交换机接口带宽,或者攻击是针对某个特定IP地址的反射放大攻击,那么仅仅在交换机上防护可能不够。此时需要在上游路由器或运营商侧进行清洗。在交换机上,可以配置黑洞路由来丢弃去往目标IP的流量,但这会牺牲被攻击的服务器。
配置静态黑洞路由,例如 ip route-static 1.1.1.1 255.255.255.255 Null0,将攻击目标IP的流量引入空接口。这样做虽然会导致该服务器无法对外提供服务,但能迅速释放交换机CPU和带宽资源,保护整个网络其他业务的正常运行。这是一种断臂求生的策略,在无法立即联系到运营商清洗流量时非常有效。
更精细的做法是结合BGP Flow Specification,如果网络支持,可以将攻击流量的五元组特征通过BGP Flowspec下发到边界路由器,实现动态的流量丢弃。这需要网络设备支持BGP Flowspec功能,并且配置相应的策略。
第六步:应急恢复与业务验证在各项防护策略部署完成后,开始逐步恢复端口。先开启核心交换机的上联口,观察CPU利用率是否平稳。然后依次开启接入层端口,每开启一个端口,观察几分钟,确保没有异常流量再次涌入。使用 display interface 查看接口流量速率,使用 display cpu-usage 实时监控CPU状态。
当所有端口恢复后,进行业务连通性测试。重点验证关键应用,如ERP系统、数据库、视频会议等是否恢复正常。同时检查STP拓扑是否收敛正常,VLAN间路由是否可达,DHCP服务是否正常。很多时候,攻击停止后,由于STP重新计算或ARP表老化,网络需要几分钟才能完全恢复,这是正常现象,不要急于反复插拔线路。
第七步:事后溯源与架构加固应急处置结束后,必须进行深入的事件复盘。从设备日志中提取攻击时间段的信息,华为设备可以查看 display logbuffer,思科设备查看 show logging。结合NetStream或sFlow数据,分析攻击流量的源头、类型、规模以及持续时间。如果发现是内网主机发起的攻击,需要立即对该主机进行隔离和杀毒。如果是外网攻击,将攻击特征提供给ISP或安全服务商,进行上游封堵。
在架构层面,考虑将控制平面与数据平面进行更严格的隔离。部署专用的带外管理网络,确保在业务网络瘫痪时,管理员仍能通过独立的物理通道管理设备。优化网络拓扑,减少二层广播域的大小,划分VLAN,避免单一广播域过大导致广播风暴。在关键节点部署专业的流量清洗设备或抗DDoS设备,将安全防线前移。
对于交换机本身,开启并优化CPU防护策略,将其作为设备上线前的标准配置,而不是等到攻击发生后再补救。定期检查CPU防护策略的命中统计,根据业务变化调整限速阈值。建立网络流量基线,通过SNMP或Telemetry实时监控CPU利用率和上送报文速率,设置告警阈值,当CPU利用率超过70%时立即触发告警,为应急处置争取宝贵时间。
大流量攻击导致交换机CPU过高的应急处置,核心在于快速隔离、精准识别、硬件过滤和策略限速。整个过程必须冷静果断,先恢复控制平面可用性,再逐步恢复业务,最后进行加固优化。每一次攻击都是一次检验网络健壮性的机会,将应急措施转化为常态配置,才能真正提升网络的抗攻击能力。
