linux arp老化需协同配置base_reachable_time、gc_stale_time、gc_interval和gc_thresh1四参数,缺一不可;仅改gc_stale_time无效,因条目从reachable转stale再删除依赖四者共同作用,且必须按具体接口(如eth0)或default模板分别设置,验证须用ip neigh show查状态。

直接改 /proc/sys/net/ipv4/neigh/*/gc_stale_time 不够,必须配齐这组参数
只改 gc_stale_time 很容易发现“设了 30 秒,条目却卡在 STALE 状态十几分钟不删”——这不是 bug,是 Linux ARP 状态机的正常行为。真正决定老化节奏的是四个参数协同作用:base_reachable_time、gc_stale_time、gc_interval 和 gc_thresh1。缺一不可。
-
base_reachable_time:定义条目从新建到被标记为 STALE 的基础时长(单位秒),默认 30;实际生效值会在该值 ±50% 范围内随机浮动,避免全网设备同步刷新 -
gc_stale_time:STALE 条目能保留多久才进入待回收队列,默认 60;它不等于“总存活时间”,只是第二阶段时限 -
gc_interval:垃圾回收器扫描缓存的周期,默认 30;如果设太长,哪怕条目已过期,也要等下一次扫描才清理 -
gc_thresh1:ARP 缓存最小条目数阈值,默认 128;**关键点**:只有缓存条目数 ≥ 该值,GC 才会启动;设成 0 才能确保老化机制始终生效
ip neigh show 看到的 REACHABLE/STALE 状态,才是真实老化依据
arp -a 只显示 IP-MAC 映射,不反映状态;真正判断是否老化,必须用 ip neigh show。输出里每行末尾的 REACHABLE、STALE、FAILED 才是内核当前认定的状态。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 刚添加或刚通信过的条目是
REACHABLE,倒计时基于base_reachable_time - 超时后自动变
STALE,此时发包不会立刻触发 ARP 请求,而是先等delay_first_probe_time(默认 5 秒)再试探 - 若
STALE状态持续超过gc_stale_time,且 GC 已运行(满足gc_thresh1条件),才会被删或标为FAILED
修改参数要分接口设,别只动 default
Linux 的 ARP 参数按网络接口隔离,/proc/sys/net/ipv4/neigh/default/ 是模板,但实际生效的是具体接口目录,比如 /proc/sys/net/ipv4/neigh/eth0/。如果系统有多个网卡(如 eth0 内网、ens33 外网),必须分别配置,否则修改 default 没效果。
- 查当前接口名:
ip link show | grep ': ' | awk '{print $2}' | sed 's/://' | grep -v 'lo' - 改 eth0 的老化时间:
echo 15 > /proc/sys/net/ipv4/neigh/eth0/base_reachable_time - 改所有接口(含 future 新增接口):写入
default目录,再用sysctl -w net.ipv4.neigh.default.gc_stale_time=30 - 永久生效需写入
/etc/sysctl.conf,格式如:net.ipv4.neigh.eth0.gc_stale_time = 30
用 arping 刷新状态,不是清缓存
arping -I eth0 192.168.1.1 不会删除条目,也不会强制重建;它只对已有 STALE 条目发请求,成功则转回 REACHABLE。想清空某 IP,得用 ip neigh flush to 192.168.1.1 dev eth0;想清整个接口,用 ip neigh flush dev eth0。
-
arping -D是 DAD 模式,源地址为 0.0.0.0,用于检测 IP 冲突,不更新本地缓存 -
arp -d在较新内核中已被弃用,ip neigh delete才是标准方式 - 定时清理别用
arping -a(BusyBox 下该选项不存在),cron 里应写/sbin/ip neigh flush dev eth0
base_reachable_time × (1±0.5) + gc_stale_time,但最终是否清理还取决于 gc_interval 扫描时机和 gc_thresh1 是否达标——这三个条件全满足,条目才会真正消失。










