В 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-адресом или ARPwho-has
через правильный сетевой адаптер.
Примечание. Существуют также другие случаи (VPN и т.д.), В которых может быть несколько уровней сгруппированных логических интерфейсов, пока не будет достигнут фактический используемый физический интерфейс. Таким образом, проблема, как правило, заключается в обнаружении устройства с нефизическим интерфейсом и обращении к базовому интерфейсу, который представляет физический сетевой адаптер, через который он подключен.