可使用arp、ip neigh或/proc/net/arp查看linux arp缓存表:arp -n快速显示数字格式条目;ip neigh show提供状态(如reachable)和结构化输出;/proc/net/arp适合最小化环境,支持awk精准提取。

如果您需要确认局域网内某台设备的MAC地址,或排查网络通信异常,可能需检查Linux主机当前维护的IP与MAC地址映射关系。以下是查看ARP缓存表的多种方法:
一、使用arp命令查看ARP缓存
arp命令是传统且广泛支持的工具,用于直接读取内核ARP缓存表,输出格式简洁,适用于快速核查。
1、以数字形式显示所有条目(不解析主机名),避免DNS延迟影响:arp -n
2、以详细模式显示统计信息及每条缓存状态:arp -vn
3、仅查看指定网络接口(如eth0)上的ARP条目:arp -n -i eth0
4、使用BSD风格输出(列宽不固定,兼容旧脚本):arp -a
二、使用ip neigh命令查看邻居表
ip neigh是现代Linux系统推荐的替代方案,属于iproute2套件,功能更全面,能显示链路层状态、可达性、NDISC相关标志等,且输出结构化程度高。
1、列出所有IPv4邻居条目(含状态如REACHABLE、STALE、FAILED):ip neigh show
2、仅显示特定接口(如ens33)的邻居信息:ip neigh show dev ens33
3、只显示处于REACHABLE状态的有效条目:ip neigh show nud reachable
4、以简明格式输出(省略冗余字段):ip -br neigh show
三、直接读取/proc/net/arp文件
/proc/net/arp是内核暴露的ARP缓存原始数据接口,内容与arp -n输出一致,无需额外工具依赖,适合在最小化环境或容器中使用。
1、查看完整ARP表原始内容:cat /proc/net/arp
2、过滤出非空条目并格式化显示(跳过表头和空行):awk '$1 != "IP" && $1 != "" {print $1, $4, $5}' /proc/net/arp
3、仅提取目标IP(如192.168.1.1)对应的MAC地址:awk '$1 == "192.168.1.1" {print $4}' /proc/net/arp
四、结合grep筛选特定IP或MAC
当ARP表条目较多时,可配合文本过滤工具快速定位目标记录,提升排查效率。
1、查找包含指定IP地址(如10.0.0.5)的所有ARP条目:arp -n | grep "10.0.0.5"
2、搜索特定MAC地址(如00:1a:2b:3c:4d:5e)所在行:ip neigh show | grep "00:1a:2b:3c:4d:5e"
3、忽略大小写匹配MAC地址段(如匹配"aa:bb:cc"):arp -n | grep -i "aa:bb:cc"
五、验证ARP条目是否为动态或静态
ARP缓存中条目类型直接影响其生命周期:动态条目(标记为"C")会随超时自动刷新;静态条目(标记为"CM"或"M")需手动删除,不会被覆盖。
1、在arp -n输出中识别Flags列:C 表示动态缓存,M 表示静态配置,P 表示公共代理条目
2、使用ip neigh查看条目状态及类型:ip neigh show | awk '{print $1, $5, $6}'
3、确认某IP(如172.16.0.10)是否为静态绑定:arp -n | awk '$1=="172.16.0.10" && $3~/M/'










