arp show 是一个用于查看和管理系统 ARP (Address Resolution Protocol, 地址解析协议) 缓存的命令,它不是一个 Linux 或 Windows 的原生命令,而是 Arpwatch 工具包中的一个命令行工具。

什么是 ARP?
在深入命令之前,先简单理解一下 ARP 的作用:
- 网络层 (Layer 3) 使用 IP 地址进行通信,
168.1.100。 - 数据链路层 (Layer 2) 使用 MAC 地址(物理地址)进行通信,
00:1A:2B:3C:4D:5E。 - ARP 就是一个协议,它的作用是在同一个局域网内,根据一个设备的 IP 地址 来查询其对应的 MAC 地址,这个过程就像在问:“这个 IP 地址是谁的?请告诉我你的 MAC 地址。”
每个设备都会维护一个 ARP 缓存表,记录了 IP 地址和 MAC 地址的映射关系,以提高通信效率,避免每次通信都发送广播查询。
arp show 命令详解
arp show 命令主要用于查看和管理由 Arpwatch 监控的 ARP 条目,Arpwatch 是一个网络监控工具,它会被动地监听网络流量,记录 ARP 交互,并检测可疑的 ARP 活动(如 ARP 欺骗)。
基本语法
arp show [选项]
常用选项和功能
| 选项 | 描述 | 示例 |
|---|---|---|
-a |
显示所有 ARP 条目,这是最常用的选项,等同于不带任何选项直接运行 arp show。 |
arp show -a |
-n |
以数字形式显示地址,默认情况下,它会尝试将 IP 地址解析为主机名,此选项可以禁用反向解析,使输出速度更快。 | arp show -n |
-d |
删除指定的 ARP 条目,需要管理员权限 (sudo)。 |
sudo arp show -d <ip_address> |
-f <文件> |
从指定文件中读取 ARP 条目,这个文件通常由 Arpwatch 生成,用于恢复或初始化 ARP 缓存。 | arp show -f arp.dat |
-v |
显示详细信息,提供更详细的输出,包括接口信息等。 | arp show -v |
-i <接口> |
只显示指定网络接口的 ARP 条目。 | arp show -i eth0 |
-N <网络/掩码> |
只显示属于指定网络的 ARP 条目。 | arp show -N 192.168.1.0/24 |
输出字段解释
arp show -a 的输出通常包含以下几列:

$ arp show -a
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:11:22:33:44:55 C eth0
192.168.1.101 ether 0A:1B:2C:3D:4E:5F C eth0
- Address: 目标主机的 IP 地址。
- HWtype: 硬件地址类型,对于以太网通常是
ether。 - HWaddress: 对应的 MAC 地址(物理地址)。
- Flags: 标志位,表示 ARP 条目的状态。
C: Complete (完整),表示这是一个有效的、可用的条目。M: Permanent (永久),这是一个静态条目,不会被超时机制删除。P: Publish (发布),该条目是本机发布的。S: Static (静态),与M类似,表示手动添加的静态条目。
- Mask: 子网掩码,通常在
arp show的输出中为空或显示为 ,因为 Arpwatch 的重点在于条目本身,而不是路由。 - Iface: 接入该 ARP 条目的网络接口名称,如
eth0,wlan0等。
与系统原生 arp 命令的对比
在 Linux 系统中,通常使用 ip neigh 或 arp 命令来管理 ARP 缓存。arp show 是 Arpwatch 工具的一部分,功能上与它们有重叠,但也有区别。
| 特性 | arp show (Arpwatch) |
ip neigh (现代 Linux) |
arp (传统 Linux) |
|---|---|---|---|
| 所属工具 | Arpwatch 监控工具 | iproute2 套件 |
net-tools 套件 |
| 主要用途 | 查看 Arpwatch 记录的条目,用于审计和安全 | 现代、功能强大的网络邻居管理工具 | 传统的 ARP 缓存管理工具 |
| 推荐度 | 在使用 Arpwatch 时使用 | 推荐用于日常管理 | 已被 ip neigh 取代,不推荐 |
| 查看 ARP | arp show -a |
ip neigh show |
arp -a |
| 删除 ARP | arp show -d <ip> |
sudo ip neigh del <ip> dev <iface> |
sudo arp -d <ip> |
为什么 ip neigh 更推荐?
ip neigh 是 iproute2 的一部分,是现代 Linux 系统中管理网络邻居(包括 ARP、NDP 等)的标准工具,它更稳定、功能更强大,并且是未来的发展方向。
实际应用场景
-
网络故障排查: 当你无法 ping 通局域网内的另一台电脑时,可以检查 ARP 缓存中是否有对应的条目,以及 MAC 地址是否正确。
# 查看特定 IP 的 ARP 条目 arp show | grep 192.168.1.50 # 或者使用系统命令 ip neigh show 192.168.1.50
-
发现 ARP 欺骗: Arpwatch 的核心功能就是检测 ARP 异常,如果你看到同一个 IP 地址对应了多个不同的 MAC 地址,或者一个 MAC 地址对应了多个 IP 地址,这很可能是 ARP 欺骗攻击的迹象。
(图片来源网络,侵删)# Arpwatch 会通过邮件或日志报告这些异常 # 你也可以手动检查 arp show 的输出 arp show -a | sort -k1,1n | uniq -c -d -f 0
-
手动管理 ARP 缓存: 在某些网络环境下,你可能需要手动添加静态 ARP 条目,以确保网络通信的稳定和安全(防止 ARP 欺骗),虽然
arp show本身不用于添加,但ip neigh可以:# 添加一个静态 ARP 条目 sudo ip neigh add 192.168.1.200 lladdr 00:AA:BB:CC:DD:EE dev eth0 nud permanent
arp show是 Arpwatch 工具包的一部分,主要用于查看 Arpwatch 监控到的 ARP 条目,常用于安全审计和异常检测。- 对于日常的 Linux 系统管理,推荐使用更现代的
ip neigh命令来查看和管理 ARP 缓存。 - 理解 ARP 协议的工作原理对于网络排错和安全防护至关重要。
