Como ir de uma interface lógica para a interface do NIC subjacente que um dispositivo está usando, no FreeBSD?

1

No FreeBSD, se a interface em que um dispositivo IP está ativo for um NIC físico, então eu posso procurar a interface para o NIC físico usando arp -a .

Mas qual é a maneira mais fácil de obter um endereço IP de um dispositivo conhecido? A interface está conectada, se estiver em ponte ou em alguma outra lógica interface? Eu posso obter sua interface lógica do ARP, mas apenas mostra a interface de ponte no ARP, não a interface externa real.

O que eu quero identificar é a interface que representa uma NIC externa real que o IP está usando, para que eu possa conectar / desconectar o fio correto, verificar com erro o switch de rede apropriado ou o que for. Suponha que não haja multipathing, conexões agregadas / fallover ou problemas de firewall para simplificar e que eu possa distinguir NICs externas de seus drivers (em, re, etc)

Como posso conseguir isso?

Exemplos:

  • (Situação mais comum) O sistema tem em0 , em1 , em2 , em3 e eles são vinculados por bridge0 , que tem um endereço IP designado. Eu conecto um laptop em um switch que está conectado a um dos emo - em3 . Quando eu uso arp -a eu recebo o dispositivo - mas ele está listado com a interface bridge0 , que é logicamente correta, mas fisicamente inútil.
  • (caso menos comum) Um laptop é conectado através de VPN em um switch conectado a uma ponte se. A interface real listada é a da VPN, não a bridge ou a NIC do switch.
  • (situação menos comum de longe) Um dispositivo está configurado incorretamente com um IP estático que não corresponde à sub-rede da interface. Talvez seja o envio e recebimento de transmissões, se assim for, nós receberíamos isso. Ele não possui uma entrada ARP porque ARP who-has é enviado na interface para a sub-rede não esperada. Mas ele responderia a um pacote com seu IP estático ou um ARP who-has por meio da NIC correta.

Note - There are also other cases (VPN etc) where there might be several layers of stacked logical interfaces until one gets to the actual physical interface being used. So the issue is generally, about detecting a device with a non-physical interface and recursing to an underlying interface that represents the physical NIC it's connected through.

    
por Stilez 20.07.2017 / 10:20

1 resposta

0

Uma interface em ponte atua como um switch, por isso usa qualquer interface necessária para falar com o endereço de ethernet que deseja. Por exemplo, se em0 estiver diretamente conectado aos endereços mac aa.bb.cc.dd.ee.ff e a1.bb.cc.dd.ee.ff , enquanto em1 estiver diretamente conectado aos endereços mac aa.cc.bb.dd.ee.ff e a1.cc.bb.dd.ee.ff , você já saberá qual interface procurar. tcpdump também é muito útil em situações como essa, se você passar a opção -e , ele também mostrará endereços de ethernet. Os outros casos podem ser tratados geralmente examinando as tabelas de roteamento e deduzindo-as de lá, se não a interface real, pelo menos a mais provável. tcpdump prova ser o melhor assistente em casos como esse e novamente.

    
por 30.07.2017 / 22:14