Linux
預設 arp 記憶體超時
我沒有找到如何檢查和更改 Linux 上的預設 arp 記憶體超時。我使用帶有核心 3.x 的 debian(但我認為它與舊核心相同)
60 秒
你可以檢查它:
cat /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
並改變它
echo timeout > /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
超時是新值
我承認,在我寫這篇文章時,這是一個三年前的問題。但是我在研究同一主題時遇到了這個問題,並且在證實 watchmansky 的答案(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上的程式碼確認)