Skip to content

1.8 免费 ARP (Gratuitous ARP) 详解

在上一章我们学习了 ARP 的基本功能:由 IP 查 MAC。 通常情况下,ARP 都是“有问必答”的:A 问 B,B 回复 A。

但有一种特殊的 ARP,它不需要别人问,而是设备自己主动发出来的,而且问的问题很奇怪——它在问自己的 IP 地址。这就是 免费 ARP (Gratuitous ARP)

1. 什么是免费 ARP?

免费 ARP 是指主机发送一个 ARP 请求(或响应),其中:

  • Sender IP (源 IP) = 本机配置的 IP
  • Target IP (目标 IP) = 本机配置的 IP

就像一个人走进房间,大喊一声:“谁叫张三?请告诉张三(我)!”

1.1 为什么要叫“免费”?

英文单词 Gratuitous 的意思是“无理由的”、“不请自来的”或者“免费的”。 因为这个 ARP 报文不是为了响应某个请求而发的,而是设备自发产生的,所以被称为“免费 ARP”。

2. 报文结构解析

免费 ARP 本质上还是一个标准的 ARP 包,并没有特殊的协议头,只是字段填法不同。 最显著的特征是:Sender IP 等于 Target IP

它通常以 Request 的形式发送(某些实现也使用 Reply)。

📢 Gratuitous ARP Request (我是 1.100,有人反对吗?)
Ethernet II Header
Dst: FF-FF-FF-FF-FF-FF (Broadcast)
Type: 0x0806 (ARP)
ARP Payload (28 Bytes)
OpCode: 1 (Request)
Sender MAC: AA-AA-AA-AA-AA-AA
Sender IP: 192.168.1.100
Target MAC: 00-00-00-00-00-00
Target IP: 192.168.1.100
⬆ Sender IP = Target IP ⬆

抓包示例: 在 Wireshark 中,你通常会看到 Info 列显示:Gratuitous ARP for 192.168.1.100 (Request)

注:新旧版wireshark抓包的Info描述可能不一样

注:新旧版wireshark抓包的Info描述可能不一样

3. 核心作用:它到底想干嘛?

既然已经知道自己的 IP 了,为什么还要问?主要有两个目的:

3.1 宣告与更新 (Announce & Update)

这是免费 ARP 最重要的功能——告诉大家“我来了”或者“我变了”。

场景一:更换网卡/主板 假设你有一台服务器 IP 是 192.168.1.10,MAC 是 AA-AA。 交换机和其他电脑的 ARP 表里都记录着:192.168.1.10 -> AA-AA。 今天网卡坏了,你换了一块新网卡,MAC 变成了 BB-BB,但 IP 还是 192.168.1.10

如果什么都不做,其他设备发给 192.168.1.10 的数据包还会发往旧 MAC AA-AA,导致通信中断。 此时,服务器启动时会自动发送一个免费 ARP:“我是 192.168.1.10,我的 MAC 是 BB-BB!” 收到这个广播的所有设备,会立即更新自己的 ARP 缓存:192.168.1.10 -> BB-BB。网络瞬间恢复。

场景二:VRRP/HSRP 主备切换 在企业网络中,两台路由器(主/备)组成一个虚拟网关(Virtual IP)。 当“主”路由器挂掉,“备”路由器接管 Virtual IP 时,它必须立刻发送免费 ARP,告诉交换机:“现在 Virtual IP 在我这里(我的接口 MAC)!”这样交换机才会把流量引向新的主路由器。

3.2 地址冲突检测 (DAD)

这是免费 ARP 的另一个经典用途。 当设备刚配置好 IP 时,先发个免费 ARP 问一下:“有人用这个 IP 吗?”

  • 如果人理我 -> 这个 IP 安全,我用了。
  • 如果人理我(回复了 ARP Reply)-> 完蛋,冲突了!报错!

注意:关于 DAD 的详细检测流程和现象,请阅读下一章 1.9 DAD (地址冲突检测) 原理深度解析

4. 安全隐患:ARP 欺骗

成也萧何,败也萧何。免费 ARP 的“强制更新”特性,也成为了黑客攻击的利器。

攻击原理: 攻击者(IP: 1.100)可以伪造一个免费 ARP 包,声称:“我是网关 192.168.1.1,我的 MAC 是 CC-CC(攻击者的MAC)”。 局域网内的电脑收到后,会天真地更新 ARP 表,把发往网关的数据全都发给攻击者。这就是典型的 ARP 欺骗 (ARP Spoofing)ARP 投毒 (ARP Poisoning)

防御手段

  1. DAI (Dynamic ARP Inspection):交换机上的高级功能,只允许合法的 ARP 包通过(结合 DHCP Snooping 绑定表)。
  2. 静态 ARP 绑定:在服务器或重要设备上手动写死 ARP 条目,不接收动态更新(维护麻烦)。