我没有找到如何检查和更改 Linux 上的默认 arp 缓存超时。我在内核 3.x 中使用 debian(但我认为它与旧内核相同)
小智 12
我承认,在我写这篇文章时,这是一个三年前的问题。但是我在研究同一主题时遇到了这个问题,并且在证实 watchmansky 的回答(https://serverfault.com/a/684381/188907)的过程中,我对这种情况有了更多了解,至少在它存在时今天。
根据https://linux.die.net/man/7/arp,设置
gc_stale_time
Run Code Online (Sandbox Code Playgroud)
影响检查 ARP 缓存是否存在陈旧条目的频率。(或垃圾收集,因此设置名称开头的“gc_”。)
同时,价值
base_reachable_time_ms
Run Code Online (Sandbox Code Playgroud)
实际上控制 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/邻居.c#L115 上的代码确认)
60 秒
你可以检查它:
cat /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
Run Code Online (Sandbox Code Playgroud)
并改变它
echo timeout > /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
Run Code Online (Sandbox Code Playgroud)
超时是新值
| 归档时间: |
|
| 查看次数: |
24673 次 |
| 最近记录: |