默认 arp 缓存超时

默认 arp 缓存超时

我没有找到如何检查和更改 Linux 上的默认 arp 缓存超时。我使用的是内核为 3.x 的 debian(但我认为旧内核也一样)

答案1

60 秒

你可以使用以下方法检查:

cat /proc/sys/net/ipv4/neigh/ethX/gc_stale_time

并将其更改为

echo timeout > /proc/sys/net/ipv4/neigh/ethX/gc_stale_time

超时是新值

答案2

我承认,在我写这篇文章的时候,这是一个三年前的问题。但我在研究同一主题时偶然发现了这个问题,并在证实沃奇曼斯基的答案的过程中(https://serverfault.com/a/684381/188907),我对情况有了更多的了解,至少是现在的情况。

根据https://linux.die.net/man/7/arp, 那个设定

gc_stale_time

影响检查 ARP 缓存中陈旧条目的频率。(或者垃圾收集,因此设置名称开头为“gc_”。)

同时,价值

base_reachable_time_ms

实际上控制 ARP 缓存条目的有效时间,默认值为 30000 毫秒。但实际上每个新的 ARP 缓存条目都会收到一个随机设置在base_reachable_time_ms / 2 and 3*base_reachable_time_ms / 2* 之间的生存时间值。

这意味着每个新的缓存 ARP 条目的起始超时时间在 15 到 45 秒之间,除非值base_reachable_time_ms发生变化。

这假设缓存的 ARP 条目的当前超时值在使用前已经过验证,并且垃圾收集率不会影响缓存条目的有效有效性。

(*通过阅读以下代码确认https://elixir.bootlin.com/linux/v4.17.11/source/net/core/neighbour.c#L115

相关内容