Понадобилось мне отследить изменения arp записей.
Посмотрев в интернете понял, что есть такой порт arpwatch.
Arpwatch — демон отслеживающий соответствие между ip и mac адресами. Если обнаруживается несоответствие то сообщения записываются в лог.
Его и будем ставить.
# cd /usr/ports/net-mgmt/arpwatch && make install clean
Добавим поддержку автозагрузки после ребута.
# cat /etc/rc.conf | grep arp arpwatch_enable="YES" arpwatch_flags="-m root@likeunix.ru" # Уведомления на мыло. arpwatch_interfaces="ql0" # ql0 это мой сетевой интерфейс который я буду слушать, на нем крутиться окола 50 ip адресов.
Добавим логирование.
# cat /etc/syslog.conf | grep arp
!arpwatch
*.notice /var/log/arpwatch.log
Перезагрузим демон syslog.
killall -HUP syslogd
Мы же не хотим, что бы логи разростались до больших размеров, для этого настроим ротацию логов.
# cat /etc/newsyslog.conf | grep arp
/var/log/arpwatch.log 640 3 100 * JC
Пояснению по логу.
new activity — связка ethernet/ip-адресов снова проявила активность спустя шесть месяцев или больше
new station — ethernet-адрес зафиксирован впервые
flip flop — ethernet-адрес изменился с одного известного адреса на другой известный адрес
changed ethernet address — хост перешёл на использование нового ethernet-адреса
Просмотр arp кэш.
# arp -an
-a, чтобы перечислить все записи кеша,
-n, чтобы не преобразовывать IP адреса в имена
Вот и все.