Есть ли способ запросить все MAC-адреса в сети?

Есть ли способ запросить все MAC-адреса в сети?

Я знаю, что этот вопрос был помечен как "не по теме" и "непрофессиональный", но при создании шлюза или IDS это может быть весьма актуально. Кроме того, Google не находит ничего полезного...

В каждом обычном коммутаторе есть такая вещь, как таблица MAC-адресов (или таблица CAM) (согласно этой статье:https://en.wikipedia.org/wiki/CAM_Table)

Если коммутатор точно знает маршрут к MAC-адресу и объявляет его на каждом порту (кажется логичным)...

  • Предположим, что у вас Linux-компьютер. Возможно ли сделать запрос?каждыйMAC-адрес в сети на указанном интерфейсе?

решение1

Я обычно устанавливаюарпалертв системе для этой цели. Это демон, который использует libcap для отслеживания трафика. Он хранит базу данных mac-адресов для каждого интерфейса. Он также может следить за некоторыми необычными типами событий и отправлять уведомления. Он отслеживает последнее использование и будет хранить базу данных при перезагрузках (по сравнению с простой настройкой интерфейса моста).

решение2

Ну, если честно, все говорят "arp -a", но меня этот ответ не устраивает, так как он показывает толькоизвестенMAC-адреса (и соответствующие им IP-адреса).

К спискувсеадреса на порту, вам нужно будет изменить текущую конфигурацию сети. Мы будем использовать пакет bridge-utils, но любая другая реализация моста (например: OpenvSwitch) может это сделать. Следующее описание будет работать в системах на базе Debian:

  1. Сначала вам следует установить пакет bridge-utils.
  2. Установите выбранный порт вниз с помощью ifdown
  3. Создайте мост на порту, на котором вы хотите просмотреть MAC-адреса.

Предположим, что порт — 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, либо просто перезапустить.

  1. Теперь вы можете использовать brctl для запроса порта

Он выведет полную таблицу 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

Связанный контент