Как перейти от логического интерфейса к интерфейсу базовой сетевой карты, используемой устройством, во FreeBSD?

260
Stilez

В 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
gmelis

Мостовой интерфейс действует как коммутатор, поэтому он использует любой интерфейс, необходимый для связи с нужным 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оказывается лучшим помощником в случаях, подобных этому снова и снова.