Почему кеш 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-адрес (то есть, на какой хост указывает точка входа)?
- Является ли запись в таблице arp постоянной или нет (то есть можно ли ожидать автоматической очистки из таблицы arp)?
- Обнаружил ли я трафик через соответствующий интерфейс в течение интервала тестирования (чтобы найти или не найти доказательства для сопоставления arp с данным ip-адресом)?
В заключение:
- Как я пытался создать запись в таблице arp контролируемым образом, ожидая измерения ее долговечности?
Ответы, полученные с помощью первых трех вопросов, вероятно, улучшат процедуру тестирования, как указано в последнем вопросе.