1

В FreeBSD, если интерфейс, на котором находится IP-устройство, является физическим NIC, я могу найти интерфейс для физического NIC, используя arp -a .

Но какой самый простой способ получить IP-адрес известного устройства, к которому подключен интерфейс, если он подключен по мосту или по другому логическому интерфейсу? Я могу получить его логический интерфейс от ARP, но тогда он просто показывает интерфейс моста в ARP, а не фактический внешний интерфейс.

То, что я хочу идентифицировать, - это интерфейс, представляющий реальную внешнюю сетевую карту, которую использует IP, так что я могу подключать / отключать правильный провод, проверять ошибки соответствующего сетевого коммутатора или что-то еще. Предположим, что для простоты нет проблем с многолучевым распространением, агрегированными / ошибочными соединениями или проблемами брандмауэра, и что я могу отличить внешние сетевые адаптеры от их драйвера (например, и т.д.)

Как я могу получить это?

Примеры:

  • (Наиболее распространенная ситуация) Система имеет em0 , em1 , em2 , em3 и они соединены мостом bridge0 с назначенным IP-адресом. Я подключаю ноутбук к коммутатору, который подключен к одному из emo - em3 . Когда я использую arp -a я получаю устройство - но оно перечислено с интерфейсом bridge0 который логически правильный, но физически бесполезный.
  • (менее распространенный случай) Портативный компьютер подключен через VPN к коммутатору, подключенному к мосту, если. Фактический интерфейс указан для VPN, а не для моста или NIC коммутатора.
  • (Гораздо менее распространенная ситуация) Устройство неправильно настроено со статическим IP-адресом, который не соответствует интерфейсной подсети. Возможно, это отправка и получение трансляций, если так, мы бы получили их. У него нет записи ARP , потому что ARP who-has отправляется на интерфейс для ожидаемой, а не фактической подсети. Но он будет отвечать на пакет со своим статическим IP-адресом или ARP who-has через правильный сетевой адаптер.

Примечание. Существуют также другие случаи (VPN и т.д.), В которых может быть несколько уровней сгруппированных логических интерфейсов, пока не будет достигнут фактический используемый физический интерфейс. Таким образом, проблема, как правило, заключается в обнаружении устройства с нефизическим интерфейсом и обращении к базовому интерфейсу, который представляет физический сетевой адаптер, через который он подключен.

1 ответ1

0

Мостовой интерфейс действует как коммутатор, поэтому он использует любой интерфейс, необходимый для связи с нужным Ethernet-адресом. Так, например, если em0 напрямую связан с mac-адресами aa.bb.cc.dd.ee.ff и a1.bb.cc.dd.ee.ff , а em1 напрямую связан с mac-адресами aa.cc.bb.dd.ee.ff и a1.cc.bb.dd.ee.ff , вы уже знаете, какой интерфейс искать. tcpdump также очень полезен в подобных ситуациях: если вы передадите его -e он также отобразит адреса Ethernet. Другие случаи могут быть рассмотрены, как правило, путем просмотра таблиц маршрутизации и вывода из них, если не фактического интерфейса, по крайней мере, наиболее вероятного. tcpdump оказывается лучшим помощником в подобных случаях снова и снова.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .