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
タイムアウトは新しい値です
私がこれを書いているとき、これは3年前の質問であることを認めます。しかし、同じテーマを調査しているときにこの質問に出くわし、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
*の間にランダムに設定された存続時間の値を受け取ります。
つまり、base_reachable_time_ms
の値が変更されない限り、新しいキャッシュARPエントリごとに15〜45秒のタイムアウトが開始されます。
これは、キャッシュされたARPエントリの現在のタイムアウト値が使用前に検証され、ガベージコレクションレートがキャッシュエントリの有効な有効性に影響しないことを前提としています。
(* https://elixir.bootlin.com/linux/v4.17.11/source/net/core/neighbour.c#L115 のコードを読んで確認済み)