使用sudo tcpdump arp抓取ARP报文时,需配合参数:指定网卡(-i)、禁用DNS解析(-n)、显示MAC地址(-e)、精简时间戳(-t)、限制数量(-c)、保存文件(-w)及按主机过滤(host)。

直接用 sudo tcpdump arp 就能抓到 ARP 报文,但要准确定位问题、避免干扰或方便后续分析,得配合几个关键参数使用。
指定网卡并禁用 DNS 解析
多网卡环境容易抓错接口,加上 -n 可避免解析主机名带来的延迟和混淆:
- sudo tcpdump -i eth0 -n arp —— 明确监听 eth0,显示纯 IP 和 MAC 地址
- 用 ip link show 或 tcpdump -D 先确认可用接口名(如 ens33、enp0s3 等)
显示 MAC 地址和精简输出
ARP 是链路层协议,MAC 地址是关键信息;去掉时间戳能让屏幕更清爽:
- sudo tcpdump -e -n -t arp —— -e 显示源/目的 MAC,-t 去掉时间戳
- 典型输出中会看到 ff:ff:ff:ff:ff:ff(广播 MAC)和 0x0806(以太网类型为 ARP)
限制数量或保存为文件
防止刷屏,也便于用 Wireshark 深入查看:
- sudo tcpdump -c 10 arp —— 只捕获前 10 个 ARP 包后自动退出
- sudo tcpdump -w arp.pcap arp —— 保存原始帧,支持离线分析
- sudo tcpdump -w arp.pcap -c 20 arp —— 同时限数量+存文件,实用又稳妥
按目标主机过滤 ARP 交互
当只想关注某台设备的地址解析行为时,叠加 host 条件即可:
- sudo tcpdump -i eth0 arp and host 192.168.1.50 —— 抓它收发的所有 ARP
- sudo tcpdump -i eth0 arp and src host 192.168.1.50 —— 只看它发出的请求或应答
- sudo tcpdump -i eth0 arp and dst host 192.168.1.50 —— 只看发给它的 ARP 请求(通常是广播帧,但目标 IP 明确)


















