Я не нашел, как проверить и изменить тайм-аут кеша arp по умолчанию в Linux. Я использую debian с ядром 3.x (но я предполагал, что то же самое и со старыми ядрами)
60 секунд
вы можете проверить это с помощью:
cat /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
и измените это с помощью
echo timeout > /proc/sys/net/ipv4/neigh/ethX/gc_stale_time
тайм-аут - новое значение
Я понимаю, что когда я пишу это, это вопрос трехлетней давности. Но я столкнулся с этим вопросом во время исследования того же предмета и в процессе подтверждения ответа Вахмански (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)