Wie komme ich in FreeBSD von einer logischen Schnittstelle zur Schnittstelle der zugrunde liegenden NIC, die ein Gerät verwendet?

301
Stilez

Wenn in FreeBSD die Schnittstelle, auf der sich ein IP-Gerät befindet, eine physische Netzwerkkarte ist, kann ich die Schnittstelle für die physische Netzwerkkarte nachschlagen arp -a.

Aber wie kann man am einfachsten von einer IP-Adresse eines bekannten Geräts auf die Schnittstelle zugreifen, wenn es sich um eine überbrückte oder eine andere logische Schnittstelle handelt? Ich kann seine logische Schnittstelle von ARP beziehen, aber dann wird nur die Bridge-Schnittstelle in ARP angezeigt, nicht die eigentliche externe Schnittstelle.

Was ich identifizieren möchte, ist die Schnittstelle, die eine echte externe Netzwerkkarte darstellt, die von der IP verwendet wird. Daher kann ich die richtige Verbindung herstellen / trennen, den entsprechenden Netzwerk-Switch oder was auch immer überprüfen. Nehmen Sie zur Vereinfachung keine Multipathing-, Aggregat- / Fallover-Verbindungen oder Firewall-Probleme an, und ich kann externe NICs von ihrem Treiber unterscheiden (em, re etc).

Wie kann ich das bekommen?

Beispiele:

  • (Die häufigsten Situation) - System hat em0, em1, em2, em3und sie überbrückt werden von bridge0denen hat eine bestimmte IP - Adresse. Ich stecke einen Laptop in einen Schalter, der mit einem von emo- verbunden ist em3. Wenn ich benutze, arp -abekomme ich das Gerät - aber es wird mit einer Schnittstelle aufgelistet, bridge0die logisch korrekt ist, aber physisch nicht hilfreich ist.
  • (seltener) Ein Laptop ist über ein VPN mit einem Switch verbunden, der mit einem überbrückten if verbunden ist. Die tatsächlich angegebene Schnittstelle ist die des VPNs, nicht der Bridge oder der NIC des Switches.
  • (Weniger weit verbreitete Situation) Ein Gerät ist mit einer statischen IP-Adresse falsch konfiguriert, die nicht zum Schnittstellen-Subnetz passt. Vielleicht senden und empfangen sie Broadcasts, wenn dies der Fall wäre. Es hat keinen ARP-Eintrag, da ARP who-hasfür das erwartete nicht das tatsächliche Teilnetz an die Schnittstelle gesendet wird. Es würde jedoch auf ein Paket mit seiner statischen IP oder einem ARP who-hasüber die richtige NIC antworten .

Hinweis - Es gibt auch andere Fälle (VPN usw.), in denen möglicherweise mehrere Schichten gestapelter logischer Schnittstellen vorhanden sind, bis eine zur tatsächlich verwendeten physikalischen Schnittstelle gelangt. Im Allgemeinen geht es also darum, ein Gerät mit einer nicht physischen Schnittstelle zu erkennen und zu einer zugrundeliegenden Schnittstelle zu rekursieren, die die physische Netzwerkkarte darstellt, über die es verbunden ist.

1

1 Antwort auf die Frage

0
gmelis

Eine überbrückte Schnittstelle verhält sich wie ein Switch, dh sie verwendet die Schnittstelle, die sie benötigt, um mit der gewünschten Ethernet-Adresse zu kommunizieren. So zum Beispiel, wenn em0direkt mit MAC - Adressen aa.bb.cc.dd.ee.ffund a1.bb.cc.dd.ee.ff, während em1direkt an Mac - Adressen verbunden ist aa.cc.bb.dd.ee.ffund a1.cc.bb.dd.ee.ff, wissen Sie bereits, welche Schnittstelle zu suchen. tcpdumpist auch in solchen Situationen sehr nützlich, wenn Sie den -eSchalter übergeben, der auch Ethernet-Adressen anzeigt. Die anderen Fälle können im Allgemeinen behandelt werden, indem die Routingtabellen betrachtet werden und von dort aus, wenn nicht die tatsächliche Schnittstelle, zumindest die wahrscheinlichste. tcpdumperweist sich in solchen Fällen immer wieder als der beste Assistent.