您的 ARP 表是大多数人在本地发生故障之前从未考虑过的网络细节之一。然后它很快就变得非常重要。
ARP 代表地址解析协议。它的工作很简单:将本地网络上的 IPv4 地址映射到 MAC 地址,以便实际传输以太网帧。 ARP 表是操作系统临时存储这些映射的缓存。
ARP表为何存在
假设您的 PC 想要将流量发送到 192.168.1.10.
IP寻址告诉计算机 哪位主持人 它想要。以太网交付仍需了解 哪个 MAC 地址 拥有本地 LAN 上的该 IP。
这就是 ARP 发挥作用的地方。
如果没有 ARP,本地 IPv4 子网上的设备将知道逻辑目的地,但不知道将帧放置在线路上所需的第 2 层地址。
ARP 的实际工作原理
这个过程通常是这样的:
- 您的设备想要到达
192.168.1.10. - 首先检查本地ARP缓存。
- 如果不存在条目,则广播 ARP 请求:“谁有 192.168.1.10?”
- 该 IP 的所有者回复其 MAC 地址。
- 您的设备将映射存储在 ARP 表中。
- 然后,流量将发送到该 MAC 地址,直到条目过期或发生更改。
ARP 只作用于本地广播域。如果目标位于您的子网之外,您的设备会解析 路由器的MAC地址,不是最终远程主机的MAC。
ARP 表条目是什么样的
一个典型的条目包含:
- IP地址
- MAC地址
- 接口
- 条目类型或邻居状态
根据操作系统的不同,您还可以查看条目是动态的、静态的、可访问的、陈旧的、不完整的还是失败的。
如何查看ARP表
Windows
arp -a
Linux
ip neigh show
年纪较大的 arp -a 命令也可以在 Linux 上运行,但是 ip neigh 是现代工具。
macOS
arp -a
检查输出时,查找您正在排除故障的确切 IP,并确认 MAC 地址与预期设备匹配。
如何清除或修改ARP条目
在 Windows 上删除一项
arp -d 192.168.1.10
刷新 Windows 上的完整 ARP 缓存
netsh interface ip delete arpcache
在 Linux 上刷新邻居条目
ip neigh flush all
在 Linux 上添加静态条目
ip neigh add 192.168.1.10 lladdr AA:BB:CC:DD:EE:FF dev eth0
静态条目在受控环境中很有用,但如果以后硬件发生变化,过度使用它们会导致维护麻烦。
ARP 表帮助诊断的实际问题
重复IP地址冲突
如果两个设备声明相同的 IP,您可能会看到 ARP 条目在两个 MAC 地址之间翻转。症状包括连接间歇性、ping 失败以及设备随机变得无法访问。
设备更换或虚拟机迁移
如果 NIC 更改或 VM 移动,旧的缓存条目可能仍指向以前的 MAC 地址。刷新 ARP 会强制重新查找。
打印机或 NAS 可从一台机器访问,但无法从另一台机器访问
这通常意味着一个系统具有有效的 ARP 条目,而另一个系统具有陈旧或中毒的条目。
网关解析问题
如果子网上的主机连默认网关都无法到达,请检查路由器 IP 是否解析为正确的 MAC 地址。
安全风险:ARP欺骗
ARP 没有设计强认证功能。这使得它容易受到 ARP 欺骗或 ARP 中毒的影响,攻击者会发送伪造的 ARP 回复,以使受害者相信攻击者的 MAC 地址属于另一个 IP(通常是默认网关)。
这可以启用:
- 中间人拦截
- 流量重定向
- 弱环境会话劫持
- 拒绝服务
常见的防御措施包括:
- 托管交换机上的动态 ARP 检查
- DHCP 监听以及交换机级强制执行
- 网络分段
- HTTPS 等加密协议,减少拦截价值
- 适用于一些关键主机的静态 ARP 条目
ARP 表与 MAC 地址表
这些不是同一件事。
- ARP表 存在于主机上,并将 IPv4 地址映射到 MAC 地址。
- MAC地址表 存在于交换机上,并将 MAC 地址映射到交换机端口。
人们在故障排除过程中经常混淆它们。如果主机知道错误的 MAC,请检查 ARP。如果交换机将帧转发到错误的端口,请检查交换机 MAC 表。
快速故障排除工作流程
如果一台设备无法到达同一子网上的另一台设备:
- Ping 目标IP。
- 奔跑
arp -a或ip neigh show. - 验证目标 IP 解析为预期的 MAC。
- 如果条目看起来错误,请刷新条目。
- 重试流量。
- 如果 MAC 不断变化,请调查重复的 IP 或欺骗。
这个简单的序列解决了数量惊人的“网络很奇怪”的本地 LAN 问题。
底线
ARP 表是 IPv4 地址和 MAC 地址之间的本地映射。它很小,是临时的,并且对于子网内的通信绝对必要。
如果同一 LAN 上的两个设备无法相互访问,则 ARP 表应该是您首先检查的内容之一。如果条目看起来不稳定或错误,您可能正在处理重复的 IP、过时的缓存或 ARP 欺骗,而不是一般的“互联网问题”。