3. ARP攻击与广播:从原理到防御

ARP协议,说白了就是网络世界的“户籍警”。它负责把IP地址翻译成MAC地址。没有它,数据包就找不到门牌号。但恰恰是这个基础协议,成了广播泛滥的重灾区。

我处理过不少网络卡顿的案例,十有八九跟ARP脱不了干系。今天咱们就把它彻底讲透。

3.1 ARP协议工作原理

ARP的工作流程其实很简单。主机A要找主机B,但只知道B的IP,不知道B的MAC。怎么办?它就在局域网里吼一嗓子:“谁是192.168.1.2?请把你的MAC告诉我!”

这个吼声,就是ARP请求。它是广播帧,目标MAC是全F。局域网里所有设备都能听到。只有IP匹配的那台设备会回应:“我是192.168.1.2,我的MAC是aa:bb:cc:dd:ee:ff”。

回应是单播,直接发给询问者。询问者收到后,把IP-MAC映射写进ARP缓存表。下次再找同一台设备,直接查表,不用再吼了。

ARP缓存表结构

IP地址 MAC地址 类型 老化时间
192.168.1.1 00:11:22:33:44:55 动态 120秒
192.168.1.2 aa:bb:cc:dd:ee:ff 动态 120秒
192.168.1.254 00:11:22:33:44:66 静态 永久

这里有个关键点:ARP是无状态的。它不验证请求的真伪,也不检查回应的合法性。谁回应,它就信谁。这就是漏洞所在。

3.2 ARP欺骗导致广播泛滥

ARP欺骗,就是攻击者冒充别人。攻击者C给主机A发一个ARP回应:“我是网关192.168.1.1,我的MAC是cc:cc:cc:cc:cc:cc”。主机A信了,把网关的MAC改成了C的MAC。

从此,主机A发往互联网的所有数据,都先到C手里。C可以抓包、篡改、甚至直接丢弃。这就是中间人攻击。

更可怕的是广播泛滥。攻击者可以伪造大量ARP请求,每秒发几千个。每个请求都是广播帧,交换机得把它复制到所有端口。网络瞬间被填满,正常业务根本跑不动。

我曾经遇到过一个案例:某公司早上9点网络瘫痪,所有电脑都ping不通网关。我赶到现场,抓包一看,ARP广播每秒超过5000个。顺着MAC地址找到一台办公电脑,里面中了ARP病毒。拔掉网线,网络立刻恢复。后来查监控,那台电脑凌晨3点就开始发ARP包了。

ARP欺骗的典型症状:

  • 网络间歇性卡顿,丢包率忽高忽低
  • 部分电脑能上网,部分不能
  • ping网关有时通有时不通
  • ARP缓存表里出现重复IP对应不同MAC

为什么会这样?因为攻击者不是一直发,而是间歇性发送伪造ARP。正常设备和攻击者轮流“抢答”,导致MAC地址来回跳变。数据包就像无头苍蝇,一会儿送到真网关,一会儿送到攻击者手里。

3.3 DAI动态ARP检测配置

对付ARP欺骗,最有效的办法是DAI(Dynamic ARP Inspection)。它的核心思想很简单:只信任DHCP Snooping绑定表里的IP-MAC映射。不在表里的ARP包,直接丢弃。

DAI的配置分三步走:

  1. 启用DHCP Snooping:让交换机监听DHCP交互,建立IP-MAC绑定表。
  2. 启用DAI:在VLAN上开启ARP检测。
  3. 设置信任端口:连接路由器、服务器的端口设为信任,不检测ARP。连接终端的端口设为不信任,严格检测。

下面是一个典型的Cisco交换机配置示例:

! 全局启用DHCP Snooping
ip dhcp snooping
ip dhcp snooping vlan 10

! 设置上行端口为信任
interface GigabitEthernet0/1
 description Uplink to Core
 ip dhcp snooping trust

! 设置下行端口为不信任(默认就是不信任)
interface GigabitEthernet0/2
 description Access Port
 no ip dhcp snooping trust

! 在VLAN 10上启用DAI
ip arp inspection vlan 10

! 可选:设置DAI验证项
ip arp inspection validate src-mac dst-mac ip

我个人习惯:在启用DAI之前,先确认DHCP Snooping绑定表是完整的。用show ip dhcp snooping binding查看。如果表里缺了关键设备,DAI会把它们的ARP包全丢掉,造成断网事故。

DAI的验证逻辑:

ARP包类型 源IP-MAC是否在绑定表 DAI动作
请求 是 放行
请求 否 丢弃并记录日志
回应 是 放行
回应 否 丢弃并记录日志

DAI还有一个杀手锏:速率限制。它可以限制每个端口每秒能通过的ARP包数量。超过阈值,端口会被err-disable。这能有效防止ARP广播风暴。

! 设置DAI速率限制
interface GigabitEthernet0/2
 ip arp inspection limit rate 15 pps

! 设置err-disable恢复时间
errdisable recovery cause arp-inspection
errdisable recovery interval 300

嗯,这里要注意:速率限制的阈值不能设得太低。正常网络里,ARP包每秒也就几个到十几个。设成15pps已经够用。如果设成5pps,开机时大量ARP请求可能触发误封。

我曾经踩过这个坑:给一个300台电脑的办公区设了10pps的速率限制。结果早上8点半,大批员工同时开机,ARP请求瞬间超过阈值,几十个端口被err-disable。电话被打爆了。后来改成30pps,问题解决。

最后,咱们用一张图总结ARP攻击与防御的核心逻辑:

ARP攻击与DAI防御逻辑图 主机A发ARP请求 主机B回应单播 写入ARP缓存 主机A发ARP请求 攻击者C伪造回应 写入错误映射 后果:中间人攻击 / 广播泛滥 / 网络瘫痪 症状:间歇性丢包、ARP缓存跳变、网关ping不通 启用DHCP Snooping 建立IP-MAC绑定表 DAI验证放行 DAI核心:只信任DHCP Snooping绑定表里的ARP包,其余一律丢弃

总结一下:ARP协议本身没有安全机制,这是设计缺陷。但我们可以通过DAI来弥补。配置DAI时,记得先确认DHCP Snooping绑定表完整,再设置合理的速率限制。这样既能防攻击,又不会误伤正常业务。