web-dev-qa-db-ja.com

デフォルトのARPキャッシュタイムアウト

Linuxでデフォルトのarpキャッシュタイムアウトを確認および変更する方法が見つかりませんでした。カーネル3.xでdebianを使用しています(ただし、古いカーネルでも同じだと思いました)

6
Pol Hallen

60秒

あなたはそれをチェックすることができます:

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

そしてそれを

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

タイムアウトは新しい値です

6
watchmansky

私がこれを書いているとき、これは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 のコードを読んで確認済み)

5
Jeremy Impson