ARP 是什么
ARP 负责把 IPv4 地址解析成 MAC 地址:同一个二层网段内,主机发广播问「谁是这个 IP」,目标主机用单播应答自己的 MAC,双方把结果缓存进 ARP 表。它是无认证的协议——谁应答就信谁,这既让网络接入足够简单,也带来了 ARP 欺骗与中间人劫持的风险。IPv6 下对应功能由邻居发现(NDP)承担。
基本信息
| 作用 | IPv4 地址到 MAC 地址的解析 |
|---|---|
| 报文类型 | ARP Request 广播、ARP Reply 单播、Gratuitous ARP 广播 |
| 缓存 | ARP 表带老化时间,内核自动清理过期项 |
| 规范 | RFC 826、RFC 5227(地址冲突检测) |
| 查看命令 | ip neigh show、arp -an |
| IPv6 对应 | NDP 的 NS/NA 报文 |
典型使用场景
- 排查同网段不通:先看 ARP 表里目标是否有正确条目
- 定位 IP 冲突:两台主机声称同一 IP,ARP 表项会不断变化
- 高可用切换:用免费 ARP 让交换机与邻居更新到新主机的 MAC
- 安全加固:接入层启用动态 ARP 检测与端口安全防欺骗
- 清理异常表项:重置网络或迁移虚拟机后清空陈旧缓存
查看与管理
查看与管理
ip neigh show # 现代命令,显示状态与老化信息
arp -an # 传统命令,兼容性好
ip neigh show dev eth0 | grep -i failed # 查看解析失败的表项
ip neigh flush dev eth0 # 清空该网卡的 ARP 缓存
# 免费 ARP:高可用切换或 IP 迁移后立即通告新 MAC
arping -U -c 3 -I eth0 10.0.0.10
# 观察 ARP 交互
tcpdump -nn -i eth0 arp -c 20报文与含义
| 报文 | 方向 | 说明 |
|---|---|---|
| ARP Request | 广播 | 询问某个 IP 对应哪个 MAC |
| ARP Reply | 单播 | 回答自己的 MAC 地址,写入对方的 ARP 表 |
| Gratuitous ARP | 广播 | 主动声明映射关系,用于 IP 迁移与冲突检测 |
| ARP 表项 REACHABLE | 本地记录 | 解析正常,可正常通信 |
| ARP 表项 FAILED/INCOMPLETE | 本地记录 | 解析未得到应答,通常意味着目标不在线或二层不通 |
跨网段通信时,本机 ARP 表里出现的是网关的 MAC,而不是目标主机的 MAC——这是正常的。想确认远端主机是否在线,应看路由与三层可达性,而不是去 ARP 表里找它。
ARP 无认证,攻击者可伪造应答把流量引到自己机器上做中间人。接入层可启用动态 ARP 检测(DAI)、IP-MAC 绑定与端口安全;关键设备之间也可以配置静态 ARP 绑定,代价是灵活性下降。