arp命令用于查看和清理Linux ARP缓存表,常用操作包括arp -n查看、sudo arp -d删除条目、sudo ip neigh flush all清空全表;/proc/sys/net/ipv4/neigh/下参数控制超时与回收;arping可主动刷新ARP表;异常变动需排查欺骗或IP冲突。

arp命令查看和清理ARP缓存表
Linux系统中ARP表由内核维护,arp命令是直接操作它的最常用工具。它不依赖网络服务,只要内核ARP子系统在运行就能查到当前缓存内容。
- 查看全部条目:
arp -n
(加-n避免DNS反查,速度快且结果确定) - 只看某个IP对应的MAC:
arp -n | grep '192.168.1.1'
- 删除指定条目:
sudo arp -d 192.168.1.1
(注意:普通用户无权限,必须加sudo) - 清空整个ARP表:
sudo ip neigh flush all
(比arp -d -a更可靠,后者在某些发行版中已失效)
常见误操作是用 arp -d -a 想清空所有,但该命令在较新内核(如5.4+)或使用 iproute2 为主栈的系统中可能无响应或报错 SIOCDARP: No such device —— 这是因为 arp 命令底层调用已被弃用路径。
/proc/sys/net/ipv4/neigh/ 下的动态参数控制
ARP表不是静态存储,而是由邻居子系统按策略自动管理。关键行为由 /proc/sys/net/ipv4/neigh/ 下的配置项决定,比如超时时间、垃圾回收阈值等。这些值直接影响ARP条目“存活多久”以及“什么时候被踢出”。
- 查看默认超时(单位秒):
cat /proc/sys/net/ipv4/neigh/eth0/base_reachable_time_ms
(注意单位是毫秒,典型值为30000,即30秒) - 临时修改老化时间:
echo 60000 | sudo tee /proc/sys/net/ipv4/neigh/eth0/base_reachable_time_ms
- 永久生效需写入
/etc/sysctl.conf:net.ipv4.neigh.eth0.base_reachable_time_ms = 60000
- 触发立即垃圾回收:
echo 1 | sudo tee /proc/sys/net/ipv4/neigh/eth0/gc_stale_time
(仅用于调试,生产环境慎用)
不同网卡设备名(如 ens33、enp0s3)对应不同子目录,不能统一写 default —— 它只作为模板,实际生效的是具体接口目录下的值。
arping探测目标是否在线并刷新本地ARP表
当怀疑ARP表陈旧导致通信失败(比如服务器换网卡、虚拟机迁移后MAC变了),光删缓存不够,得主动触发重新学习。这时 arping 比 ping 更有效,因为它发的是ARP请求帧,能强制对端回应并更新本机ARP缓存。
- 向目标发ARP请求(不依赖ICMP):
sudo arping -c 3 -I eth0 192.168.1.1
(-c 3发3次,-I eth0指定出口接口) - 静默刷新(不打印输出,适合脚本):
sudo arping -q -c 1 -w 1 -I eth0 192.168.1.1 &>/dev/null
- 如果返回
Timeout或无响应,说明目标没在二层可达——可能是断电、VLAN隔离、防火墙丢ARP包,而非单纯ARP表问题
arping 默认走指定接口的IP地址发请求;若该接口未配IP,会报错 Cannot assign requested address,此时需先确认接口状态(ip link show eth0)和IP配置(ip addr show eth0)。
排查ARP欺骗或重复IP冲突
ARP表异常增长、频繁变动、同一IP对应多个MAC,往往是ARP欺骗或IP冲突的信号。这类问题不会直接报错,但会导致间歇性丢包、SSH中断、DNS解析慢。
- 监控ARP表变化:
watch -n 1 'arp -n | sort'
(观察几秒内是否有某IP的MAC列反复切换) - 检查是否有重复IP声明:
arp -n | awk '{print $1,$3}' | sort | uniq -w 15 -D(提取IP+MAC对,找重复IP) - 抓包验证:
sudo tcpdump -i eth0 arp -nn -c 10
(看是否收到非预期来源的ARP Reply) - 内核日志里搜ARP异常:
dmesg | grep -i "duplicate address"
(部分内核版本会在检测到冲突时记录)
很多交换机不记录ARP日志,所以主机侧的持续监控很关键;另外,DHCP分配范围外的手动配置IP最容易引发冲突,排查时优先查网段内未纳入DHCP管理的设备。










