第111篇:ARP 欺骗攻击与 DAI(Dynamic ARP Inspection)
关键词:ARP 欺骗、ARP Spoofing、DAI、动态 ARP 检测、DHCP Snooping 绑定表、中间人攻击、二层安全
一、引言
在前一篇第110篇中,我们学习了 IP Source Guard 如何防止 IP 地址欺骗。然而,即使源 IP 地址是合法的,攻击者仍然可以通过 ARP 欺骗篡改 ARP 表,将网关或其他主机的 IP 地址映射到自己的 MAC 地址上,从而实现中间人攻击。
ARP(Address Resolution Protocol)是一个无状态的协议,它没有验证机制。交换机收到 ARP 报文后,默认会无条件更新 MAC 地址表和 ARP 缓存,这为 ARP 欺骗攻击提供了可乘之机。
Dynamic ARP Inspection(DAI,动态 ARP 检测)通过在接入端口上验证 ARP 报文的合法性,确保只有合法的 IP-MAC 映射才能通过,有效防范 ARP 欺骗攻击。
二、核心概念
2.1 ARP 欺骗攻击原理
ARP 协议本身缺乏安全机制。当一个主机需要解析目标 IP 对应的 MAC 地址时,它会发送 ARP Request 广播;目标主机会回复 ARP Reply。ARP 欺骗攻击者通过发送伪造的 ARP Reply,将自己伪装成网关或其他主机。
| 攻击方式 | 描述 | 危害 |
|---|---|---|
| 网关欺骗 | 攻击者发送 ARP Reply,将自己的 MAC 绑定到网关 IP | 所有发往网关的流量被劫持到攻击者 |
| 目标主机欺骗 | 攻击者将目标主机的 IP 映射到自己的 MAC | 网关发往目标主机的流量被劫持 |
| 双向欺骗 | 同时对网关和目标主机进行 ARP 欺骗 | 完整的中间人攻击,可窃听和篡改所有数据 |
2.2 ARP 欺骗攻击过程

2.3 DAI 工作原理
DAI 通过在交换机上检查 ARP 报文的合法性来防止 ARP 欺骗:

2.4 DAI 的信任端口模型
| 端口类型 | DAI 信任状态 | 说明 |
|---|---|---|
| 连接网关的端口 | 信任 | 网关的 ARP 报文不需要验证 |
| 连接合法 DHCP 服务器的端口 | 信任 | DHCP 服务器可能发送 Gratuitous ARP |
| 连接终端的端口 | 不信任 | 所有 ARP 报文均需验证 |
| 上行互联端口 | 信任 | 避免跨交换机 ARP 被丢弃 |
三、技术细节
3.1 DAI 与 DHCP Snooping 的关系
DAI 高度依赖 DHCP Snooping 绑定表来验证 ARP 报文的合法性。绑定表中记录了 IP-MAC-VLAN-Port 的映射关系,DAI 将收到的 ARP 报文中的 IP-MAC 映射与绑定表项进行比对。

3.2 DAI 检查内容
DAI 对 ARP 报文的检查包括以下字段:
| 检查字段 | 说明 |
|---|---|
| 发送端 IP(Sender IP) | ARP 报文中声称的源 IP |
| 发送端 MAC(Sender MAC) | ARP 报文中声称的源 MAC |
| 目标端 IP(Target IP) | ARP 报文中声称的目标 IP |
| VLAN ID | 报文所在的 VLAN |
| 入端口 | 报文进入的交换机端口 |
3.3 静态 ARP 绑定
对于使用静态 IP 地址的设备(如打印机、服务器),DHCP Snooping 无法自动生成绑定表项。需要配置静态 ARP 绑定:
# 配置静态 ARP 绑定表项
[HUAWEI] arp static 10.10.10.250 001a-2b3c-4d5e interface GigabitEthernet 0/0/8 vlan 10
同时,还需要在 DHCP Snooping 中配置用户绑定,以便 DAI 进行验证:
# 配置 DHCP Snooping 静态绑定
[HUAWEI] dhcp snooping userbinding static 001a-2b3c-4d5e 10.10.10.250 10 GigabitEthernet 0/0/8
3.4 DAI 违规处理
当 DAI 检测到非法 ARP 报文时,可以配置以下处理方式:
| 处理方式 | 说明 | 命令 |
|---|---|---|
| 丢弃(默认) | 丢弃非法 ARP 报文 | arp-check action discard |
| 关闭端口 | 检测到非法 ARP 后 shutdown 端口 | arp-check action shutdown |
| 限速 | 限制非法 ARP 报文的速率 | 端口速率限制 |
四、实战配置/案例分析
4.1 华为交换机 DAI 配置
# ========== 前提:DHCP Snooping 已启用 ==========
# 1. 全局启用 DAI
[HUAWEI] arp-check enable
# 2. 在 VLAN 视图下启用 DAI
[HUAWEI] vlan 10
[HUAWEI-vlan10] arp-check enable
[HUAWEI-vlan10] quit
# 3. 配置信任端口(连接网关/上联的端口)
[HUAWEI] interface GigabitEthernet 0/0/24
[HUAWEI-GigabitEthernet0/0/24] arp-check trust enable
[HUAWEI-GigabitEthernet0/0/24] quit
# 4. 为静态 IP 设备配置绑定
[HUAWEI] dhcp snooping userbinding static 001a-2b3c-4d5e 10.10.10.250 10 GigabitEthernet 0/0/8
# 5. 配置 DAI 违规处理动作
[HUAWEI] vlan 10
[HUAWEI-vlan10] arp-check action shutdown
[HUAWEI-vlan10] quit
# ========== 验证 ==========
[HUAWEI] display arp-check configuration vlan 10
[HUAWEI] display arp-check statistics
4.2 故障案例:ARP 欺骗导致内网大面积断网
场景描述:某银行支行营业大厅,所有终端突然无法访问核心业务系统。运维人员到达现场后发现,终端之间可以互相 ping 通,但访问服务器均超时。
排查过程:
- 检查网关连通性:
# 从终端 ping 网关
ping 10.10.10.1
# 显示全部超时
# 查看终端 ARP 表
arp -a
# 发现网关 10.10.10.1 的 MAC 地址是一个陌生 MAC
- 检查交换机 MAC 地址表:
[SW-ACC] display mac-address | include 网关MAC
# 发现网关 MAC 出现在 GE0/0/12 端口,但 GE0/0/12 连接的是普通终端
- 排查攻击源:
[SW-ACC] display arp-check statistics
# 未启用 DAI,无法提供攻击证据
[SW-ACC] display mac-address dynamic interface GigabitEthernet 0/0/12
# GE0/0/12 端口存在多个 MAC 地址漂移
- 根因确认:GE0/0/12 连接的客户笔记本电脑感染了 ARP 欺骗病毒(如 ARP 攻击工具),持续向全网发送伪造的 ARP Reply,将网关 IP 映射到自己的 MAC 地址上。
处理措施:
# 第一步:临时隔离攻击端口
[SW-ACC] interface GigabitEthernet 0/0/12
[SW-ACC-GigabitEthernet0/0/12] shutdown
# 第二步:部署 DAI 防护
[SW-ACC] dhcp snooping enable
[SW-ACC] arp-check enable
# 配置信任端口
[SW-ACC] interface GigabitEthernet 0/0/24
[SW-ACC-GigabitEthernet0/0/24] arp-check trust enable
[SW-ACC-GigabitEthernet0/0/24] dhcp snooping trusted
# 在 VLAN 级别启用 DAI
[SW-ACC] vlan 10
[SW-ACC-vlan10] arp-check enable
[SW-ACC-vlan10] quit
# 第三步:对感染终端进行病毒查杀后恢复端口
[SW-ACC] interface GigabitEthernet 0/0/12
[SW-ACC-GigabitEthernet0/0/12] undo shutdown
4.3 故障案例:DAI 误杀合法 Gratuitous ARP
场景描述:部署 DAI 后,某台 Linux 服务器的虚拟 IP(VIP)在主备切换后无法正常工作,备机无法接管 VIP。
排查过程:
- 检查 DAI 统计:
[SW-ACC] display arp-check statistics vlan 10
# 发现大量来自服务器端口的 ARP 报文被丢弃
- 分析报文:
[SW-ACC] debugging arp-check packet
# 服务器发送 Gratuitous ARP(发送端IP=目标IP=VIP),用于更新全网 ARP 缓存
# 但 VIP 不在 DHCP Snooping 绑定表中,DAI 判定为非法
- 根因分析:Linux 服务器 VIP 使用静态配置,不是通过 DHCP 获取的,所以 DHCP Snooping 绑定表中没有该 VIP 的条目。当服务器发生主备切换时,新主机发送 Gratuitous ARP 广播来更新 ARP 缓存,DAI 检查发现 VIP-MAC 不在绑定表中,直接丢弃。
处理措施:
# 为 VIP 配置静态 DHCP Snooping 绑定
[SW-ACC] dhcp snooping userbinding static 00e0-fc00-00aa 10.10.10.200 10 GigabitEthernet 0/0/20
# 同时配置静态 ARP
[SW-ACC] arp static 10.10.10.200 00e0-fc00-00aa interface GigabitEthernet 0/0/20 vlan 10
4.4 DAI 与 IPSG 的联合部署
# DAI + IPSG 联合部署,构建完整的二层防护体系
[HUAWEI] dhcp snooping enable
[HUAWEI] arp-check enable
# VLAN 级别同时启用
[HUAWEI] vlan 10
[HUAWEI-vlan10] dhcp snooping ip-source-guard enable include-mac
[HUAWEI-vlan10] arp-check enable
[HUAWEI-vlan10] quit
# IPSG 防护 IP 欺骗
# DAI 防护 ARP 欺骗
# 两者结合,从 IP 层和 ARP 层双重保护
五、总结
| 项目 | 说明 |
|---|---|
| ARP 欺骗本质 | 利用 ARP 协议无验证机制,发送伪造 ARP Reply 篡改映射关系 |
| DAI 本质 | 在接入端口验证 ARP 报文的 IP-MAC 映射是否合法 |
| 依赖 DHCP Snooping | DAI 使用 DHCP Snooping 绑定表作为验证依据 |
| 信任端口 | 连接网关/上联的端口设为信任,绕过 DAI 检查 |
| 静态 IP 处理 | 需要配置 DHCP Snooping 静态绑定表项 |
| 违规处理 | 丢弃(默认)或 shutdown 端口 |
| 华为推荐 | 全局启用 DAI + VLAN 级别启用 + 仅信任上行端口 |
思考
-
DAI 可以检测非法的 ARP Reply,但 Gratuitous ARP(主动 ARP)的发送端 IP 和 target IP 相同,DAI 如何处理这种情况?
-
如果网络中所有终端都使用静态 IP 地址,DHCP Snooping 绑定表为空,DAI 是否还能正常工作?
-
在 VRRP 场景中,虚拟 MAC 地址对应的 IP-MAC 映射需要配置 DAI 静态绑定吗?为什么?
下篇预告:第112篇:端口安全:MAC 地址绑定与 Sticky MAC