Назад | Перейти на главную страницу

Почему кеш ARP не очищается, как я, кроме как быть?

Я пытаюсь эмпирически проверить время, в течение которого запись остается в ARP cache стол.

Это время, кажется, определяется /proc/sys/net/ipv4/neigh/default/gc_stale_time файл и /proc/sys/net/ipv4/route/gc_timeout и /proc/sys/net/ipv4/route/gc_interval файлы для garbage collector.

Поскольку значения равны соответственно 60, 300 и 60, оно не должно превышать 420 секунд, не так ли?

В любом случае, кажется, продержится намного дольше (если я что-то не пропущу). В самом деле, то, что я делаю, чтобы убедиться в этом, - это выполнить следующую команду bash:

while true; do date; sudo arp -n; sleep 30; done

и спустя более 15 минут запись все еще находится в ARP table.

Обратите внимание: поскольку я прочитал, что ядро ​​может изменять значения тайм-аута на основе положительных отзывов от протоколов более высокого уровня, я не пытался получить доступ к веб-сайту в это время.

Итак, мой вопрос: почему запись все еще упоминается в таблице после такого долгого времени? Что я делаю не так или не хватает?

Я бы спросил себя:

  1. Какой IP-адрес в подсети является записью в таблице arp, отображающей MAC-адрес (т.е. на какой хост указывает вход)?
  2. Запись таблицы arp стойкий или нет (т.е. могу ли я ожидать, что он автоматически очистится из таблицы arp)?
  3. Обнюхивал ли я трафик через соответствующий интерфейс во время тестового интервала (чтобы найти или не найти доказательства переназначения arp на данный IP-адрес)?

В заключение:

  • Как я попытался создать запись в таблице arp контролируемым образом, рассчитывая измерить ее долговечность?

Ответы на первые три вопроса, вероятно, позволят уточнить процедуру тестирования, заданную в последнем вопросе.