60 Sekunden
Sie können es überprüfen mit:
cat /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
und ändern Sie es mit
echo timeout > /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
timeout ist neuer Wert
Ich erkenne an, dass dies, während ich dies schreibe, eine drei Jahre alte Frage ist. Aber ich bin auf diese Frage gestoßen, als ich dasselbe Thema recherchiert habe, und während ich die Antwort von Watchmansky (https://serverfault.com/a/684381/188907) bestätigt habe, habe ich ein bisschen mehr über die Situation erfahren, zumindest so wie sie existiert heute.
Laut https://linux.die.net/man/7/arp ist die Einstellung
gc_stale_time
beeinflusst, wie oft der ARP-Cache auf veraltete Einträge überprüft wird. (Oder Müll gesammelt , daher das "gc_" am Anfang des Einstellungsnamens.)
In der Zwischenzeit wird der Wert
base_reachable_time_ms
steuert tatsächlich, wie lange ein ARP-Cache-Eintrag gültig ist, und ist standardmäßig auf 30000 Millisekunden eingestellt. Aber jeder neue ARP-Cache-Eintrag erhält tatsächlich einen Time-to-Live-Wert, der zufällig irgendwo zwischen base_reachable_time_ms / 2 and 3*base_reachable_time_ms / 2
gesetzt wird *.
Das bedeutet, dass jeder neue zwischengespeicherte ARP-Eintrag eine Startzeitüberschreitung zwischen 15 und 45 Sekunden hat, es sei denn, der Wert ist base_reachable_time_ms
geändert.
Dies setzt voraus, dass der aktuelle Timeout-Wert für einen zwischengespeicherten ARP-Eintrag vor der Verwendung validiert wird und dass die Speicherbereinigungsrate die effektive Gültigkeit der Cache-Einträge nicht beeinflusst.
(*Bestätigt durch Lesen des Codes unter https://elixir.bootlin.com/linux/v4.17.11/source/net/core/neighbour.c#L115)