Я знаю, что этот вопрос был помечен как "не по теме" и "непрофессиональный", но при создании шлюза или IDS это может быть весьма актуальным. Кроме того, Google не находит ничего полезного ...
В каждом обычном коммутаторе есть такая вещь, как MAC-таблица (или CAM-таблица) (согласно этой статье: https://en.wikipedia.org/wiki/CAM_Table)
Если коммутатор точно знает маршрут к MAC-адресу и объявляет их на каждом порту (кажется логичным) ...
Я обычно устанавливаю arpalert в системе для этой цели. Это демон, который использует libcap для отслеживания трафика. Он хранит базу данных MAC-адресов для каждого интерфейса. Он также может отслеживать некоторые необычные типы событий и отправлять уведомления. Он отслеживает последнее использование и сохраняет базу данных при перезагрузках (по сравнению с простой настройкой интерфейса моста).
Честно говоря, все говорят "arp -a", но я не удовлетворен этим ответом, поскольку он показывает только известный MAC-адреса (и соответствующие им IP-адреса).
К списку все адреса на порту, вам необходимо изменить текущую конфигурацию сети. Мы будем использовать пакет bridge-utils, но любая другая реализация моста (например, OpenvSwitch) может это сделать. Следующее описание будет работать в системах на основе Debian:
Предположим, что это порт eth0, а IP-адрес динамический. В / etc / network / interfaces должно появиться следующее
allow-hotplug eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge-ports eth0
bridge_fd 0
bridge_stp off
Чтобы применить эти изменения, вы можете либо использовать ifup на eth0, а затем на br0, либо просто перезапустить.
В нем будет указана полная таблица MAC-адресов:
root@debian:~# brctl showmacs br0
Результат должен выглядеть примерно так:
port no mac addr is local? ageing timer
1 ab:cd:ef:01:02:03 no 1.72
1 ab:cd:ef:01:02:04 no 25.52
1 ab:cd:ef:01:02:05 no 2.64
1 ab:cd:ef:01:02:06 no 10.67
1 ab:cd:ef:01:02:07 yes 0.00