Обновить записи ARP в FreeBSD

Вопрос или проблема

В Linux возраст записи ARP сбрасывается/обновляется, если приходит пакет. Однако, похоже, что FreeBSD просто устанавливает таймер и без условий удаляет запись ARP, даже если проходили пакеты с этим MAC-адресом/IP. Есть ли способ получить поведение Linux, обновляющее возраст при наличии трафика?

Я испытываю большие всплески трафика широковещательных ARP каждые 20 минут в своей локальной сети из-за этого. Я знаю, что можно изменить возраст в кэше FreeBSD, но это просто меняет интервалы между всплесками. Я хочу остановить всплески в первую очередь.

Прекрасная вещь в FreeBSD заключается в том, что всё документируется: arp(4)

У нас есть:

Эти маршруты периодически истекают (обычно через 20 минут после
подтверждения; записи не подтверждаются, когда не используются)

…и…

max_age Как долго запись ARP хранится в кэше
до того, как её нужно обновить. По умолчанию
1200 секунд.

Я читаю это так: если мы увидим запись в пределах maxage, то она подтверждается. То есть: когда используется, она подтверждается.

Итак, если вы выполните:

arp -i ixl0 -a
? (192.168.1.2) at 00:00:00:00:00:00 on ixl0 expires in 237 seconds [ethernet]
? (192.168.1.1) at 00:00:00:00:00:01 on ixl0 permanent [ethernet]

Вы увидите записи arp и их возраст. Если вы хотите увеличить продолжительность кэша, просто измените max_age.

Ответ или решение

Обновление ARP-энциклопедий в FreeBSD

FreeBSD, в отличие от Linux, использует несколько иную стратегию управления ARP-кешем. Ваша проблема с частыми ARP-трафиками, возникающими каждые 20 минут, связана с тем, что FreeBSD не обновляет таймеры ARP-записей на основе поступающего трафика, как это делает Linux. Давайте рассмотрим более подробно, как вы можете решить данную проблему.

ARP в FreeBSD

По умолчанию FreeBSD использует механизм, описанный в документации (мануал arp(4)), где указано, что ARP-записи истекают автоматически по истечении максимального времени (max_age). В вашем случае это значение по умолчанию составляет 1200 секунд (или 20 минут). Если за это время не поступает трафик от устройства, записи удаляются, что приводит к необходимости повторной установки связи и, соответственно, к избыточному трафику ARP.

Как добиться поведения, аналогичного Linux

В текущей версии FreeBSD нет встроенной настройки, которая позволила бы точно имитировать поведение Linux, где ARP-записи обновляются при получении пакетов. Однако, вы можете выполнить ряд настройок, чтобы минимизировать количество ARP-трафика или улучшить его поведение.

Изменение max_age

Вы уже упомянули об изменении значения max_age. Это действительно может помочь в ситуациях, когда связь с устройством бездействует длительное время. Установив значение больше 1200 секунд, вы можете сократить число ARP-броадкастов:

sysctl net.link.ether.inet.max_age=3600

Эта команда установит максимальное время жизни ARP-записей в один час.

Установка постоянных ARP-записей

Если у вас есть статические IP-адреса, вы можете вручную добавить постоянные ARP-записи для устройств, которые часто взаимодействуют в вашей сети. Это позволит избежать необходимости повторной регистрации ARP в случае, когда устройства не отправляют пакеты в течение стандартного временного интервала. Вы можете использовать следующую команду:

arp -s <IP> <MAC>

Например:

arp -s 192.168.1.2 00:00:00:00:00:02

Использование альтернативных методов

В дополнение к вышеперечисленным методам, существует возможность оптимизации сетевого трафика с помощью настройки маршрутизаторов и свитчей. Изучите возможность активации протоколов, таких как Proxy ARP или Gratuitous ARP, в тех устройствах, которые имеют поддержку этих функций. Это может помочь уменьшить количество ARP-запросов, поступающих от клиентов.

Заключение

Хотя FreeBSD не предлагает прямого способа эмулировать поведение Linux с обновлением ARP-времени при получении пакетов, изменения, такие как увеличение max_age и установка постоянных записей ARP, могут значительно улучшить ситуацию в вашей локальной сети. Постоянное мониторинг и анализ ARP-трафика помогут выявить узкие места и уменьшить ненужные пакеты. Для более глубокого анализа вы можете использовать инструменты мониторинга сети, такие как tcpdump или Wireshark.

Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...