过滤 ARP 操作码
ARP 报文里的操作码表示这是一次请求还是一次应答:1 是请求,2 是应答。配合发送方与目标地址字段,可以清楚回答「谁在问谁的地址」以及「谁应答了」。网关地址冲突、免费 ARP 引发的地址漂移,都要靠这几个字段来定位。
基本信息
| 适用平台 | Wireshark(arp 协议解析) |
|---|---|
| 过滤语法 | arp.opcode == 1(请求)、arp.opcode == 2(应答) |
| 关键字段 | arp.src.proto_ipv4、arp.dst.proto_ipv4 |
| 协议依据 | RFC 826(ARP) |
典型使用场景
- 排查网关冲突:看同一个地址是否有两个不同来源的应答
- 识别地址迁移:设备迁移时会发出免费 ARP 通告自身地址
- 检查探测行为:地址冲突检测会发送不期待应答的请求
- 统计广播占比:请求属于广播,数量异常说明缓存或子网有问题
- 与本地表对照:抓包结果与本地地址表互相印证
常用示例
常用示例
arp.opcode == 1 && arp.dst.proto_ipv4 == 10.0.0.1 # 谁在询问网关地址
arp.opcode == 2 # 全部应答
arp.src.proto_ipv4 == 10.0.0.5 && arp.opcode == 2 # 某地址的应答来源操作码与字段
| 字段 | 取值 | 含义 |
|---|---|---|
| 操作码 | 1 | 请求 |
| 操作码 | 2 | 应答 |
| 发送方协议地址 | 任意地址 | 请求方自身的地址 |
| 目标协议地址 | 任意地址 | 希望查询的地址 |
免费 ARP 是发送方把自身地址主动通告出去,主机迁移、地址冲突检测与冗余切换时都会出现。抓到它不一定代表故障,要结合实际可用性判断。
同一个地址出现两个不同来源的应答时,要同时看时间与端口,才能区分这是迁移过程中的短暂重叠,还是真正的地址冲突。
本地地址表会缓存解析结果,从而掩盖已经发生的冲突。抓包结果要与本地地址表对照着看,才能发现缓存里保存的是旧值。
ARP 只在同一个广播域内传播,抓到网关的地址解析并不代表跨网段通信的真实路径。排查跨网段问题时应改用 IP 层字段来筛选。