免费 ARP 是什么?它在 IP 冲突检测和主备切换中有什么作用?
简化版
免费 ARP,Gratuitous ARP,是主机主动发送关于自己 IP 和 MAC 映射的 ARP 报文,不一定是为了查询别人。
它常用于 2 类场景:检测 IP 地址冲突,以及通知局域网内其他设备更新 ARP 缓存。比如主备切换时,VIP 从旧机器漂移到新机器,新机器会发送免费 ARP,让交换机和其他主机尽快把 VIP 对应到新 MAC。
它能加速收敛,但也可能被攻击者滥用进行 ARP 欺骗。
详细版
普通 ARP 是:
Who has 192.168.1.20?
免费 ARP 可能是:
192.168.1.10 is at aa:bb:cc:dd:ee:ff
发送者主动声明“这个 IP 对应我的 MAC”。
常见用途:
- 主机启动时检测是否已有设备使用同一 IP。
- VIP 漂移后刷新其他主机 ARP 缓存。
- 网卡或虚拟机迁移后更新网络映射。
- 高可用组件通知网络拓扑变化。
面试要补充:免费 ARP 是二层局域网内的通知机制,跨路由器不会传播到所有网络。
完整版教学
1. 先定义免费 ARP
免费 ARP 不是“免费的协议”,而是“不需要别人先问,我主动发”的 ARP。
主机会广播自己的 IP 和 MAC 映射。
它可以表现为 ARP Request,也可以表现为 ARP Reply,具体实现略有差异。
免费 ARP 的关键词是主动声明、刷新缓存、检测冲突。
2. IP 冲突检测
主机配置一个 IP 后,可以发送免费 ARP。
例如它准备使用:
192.168.1.10
如果局域网里已经有别的机器使用这个 IP,对方可能回应。
主机就能发现 IP 冲突。
这在静态 IP、虚拟机、容器网络里都很有价值。
3. ARP 缓存刷新
主机或网关会缓存 IP 到 MAC 的映射。
如果某个 IP 对应的 MAC 变了,旧缓存可能导致流量仍发往旧机器。
免费 ARP 可以主动告诉大家:
192.168.1.100 is at 00:11:22:33:44:55
收到的设备可能更新自己的 ARP 表。
这能减少等待 ARP 缓存自然过期的时间。
4. 主备切换中的作用
高可用系统常使用 VIP。
VIP: 192.168.1.100
Master MAC: aa:aa:aa
Backup MAC: bb:bb:bb
当 Master 故障,Backup 接管 VIP。
Backup 会发送免费 ARP,告诉局域网:
192.168.1.100 is now at bb:bb:bb
这样客户端后续访问 VIP 时,二层帧发往新机器。
5. 和交换机 MAC 表的关系
ARP 缓存存在主机和三层设备中。
交换机还维护 MAC 地址表。
免费 ARP 报文从新端口发出时,交换机也能学习到源 MAC 出现在哪个端口。
因此主备漂移、虚拟机迁移时,免费 ARP 有助于同时推动 ARP 缓存和二层转发表收敛。
但不同设备处理策略可能不同。
| 缓存/表项 | 记录内容 | 免费 ARP 的影响 |
|---|---|---|
| ARP 缓存 | IP 到 MAC | 可能更新 VIP 或主机 IP 对应 MAC |
| MAC 地址表 | MAC 到端口 | 交换机可学习源 MAC 新位置 |
| 路由表 | 目的网段到下一跳 | 通常不直接改变 |
| 邻居表 | 邻居地址映射 | 在三层设备上可能被刷新 |
6. 安全风险
免费 ARP 可以被合法系统用于通知,也可以被攻击者滥用。
攻击者可能伪造:
Gateway-IP is at Attacker-MAC
让受害者把发往网关的流量交给攻击者。
这就是 ARP 欺骗的一种方式。
防护要结合静态 ARP、动态 ARP 检测、交换机安全策略等。
7. 常见误区与追问
- 误区:免费 ARP 只用于攻击。 它也常用于 IP 冲突检测和高可用切换。
- 误区:免费 ARP 可以全网广播。 ARP 是二层广播,通常不会跨路由器传播。
- 误区:收到免费 ARP 后所有设备一定更新缓存。 不同系统策略可能不同,收敛不一定完全一致。
- 追问:VIP 漂移为什么要发免费 ARP? 为了让其他设备尽快把 VIP 对应到新 MAC。
- 追问:免费 ARP 和普通 ARP 最大区别是什么? 普通 ARP 通常是查询,免费 ARP 是主动声明自己的映射。
- 追问:为什么它有安全风险? 因为局域网设备可能信任伪造的 IP-MAC 声明。
8. 加强记忆
免费 ARP 记成“我主动告诉大家:这个 IP 现在归这个 MAC”。
它既能帮高可用快速切换,也能被坏人拿来骗缓存。