Rufen Sie die Schnittstelle und die IP-Adresse ab, die für die Verbindung mit einem bestimmten Host (IP) verwendet werden.


7

Ich bin mir sicher, dass dies schon einmal gefragt und beantwortet wurde, aber ich konnte es nicht finden. Hoffentlich verbindet dies zumindest jemanden mit dem richtigen Ort.

Ich möchte meine lokale Schnittstelle und IP-Adresse herausfinden, die verwendet werden, um einen bestimmten Host zu erreichen. Wenn zum Beispiel 3 Adapter an meine Box angeschlossen waren und alle drei in verschiedene Netzwerke gingen, würde ich gerne wissen, welche der drei (insbesondere die IP-Adresse) verwendet wird, um my.local.intranet (in diesem Fall) zu erreichen In diesem Fall wäre es eine VPN-Tunnelschnittstelle. Ich vermute, dass dies ein Job für ifconfig oder traceroute ist, aber ich konnte nicht die richtigen Schalter finden.

Ich verwende OSX 10.7 (Darwin)

BEARBEITEN: Für einen einfachen Zugriff habe ich Folgendes geschrieben, um den Trick zu erledigen:

ifconfig `route get <host> | grep "interface: " | sed "s/[^:]*: \(.*\)/\1/"` | grep "inet " | sed "s/.*inet \([0-9.]*\) .*/\1/"

Verbesserungen / Optimierungen sind willkommen.

Antworten:


7

Sie können "Route" versuchen, um Ihre Routing-Tabelle zu drucken, in der die Zielnetzwerke und Gateways für Ihre verschiedenen Schnittstellen angezeigt werden.

Wenn Ihnen die IP-Adressen nicht dabei helfen, die Schnittstelle einfach zu bestimmen, führen Sie "traceroute" aus. Sehen Sie sich nach dem Ausführen der Route den ersten Hop an und vergleichen Sie ihn mit den zugehörigen Gateways von "route" und voila - das ist Ihre Schnittstelle.

#route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
145.67.4.0      switch47        255.255.255.0     U     0      0      eth0
192.168.1.0     localrouter     255.255.255.0     U     0      0      eth1

#traceroute <destination>
1    switch47.ba.foo.com   (145.67.4.1)    0.5 ms  .....
2    xxxxx.xxx.xxxx        (xxx.xxx.xxx.xxx)   0.Xms. ...

2
Am Ende habe ich die Route benutzt. Vielen Dank. Hier war mein letzter Befehl : ifconfig `route get <host> | grep "interface: " | sed "s/[^:]*: \(.*\)/\1/"` | grep "inet " | sed "s/.*inet \([0-9.]*\) .*/\1/". Dies funktioniert, aber Vorschläge / Optimierungen sind willkommen.
Umop

Ahh ok, ich wollte nur sagen, ich würde den hier aufgeführten Ansatz von mgorven wirklich empfehlen, aber wenn Sie unter Mac OS keine IP haben, bin ich froh, dass dies hilft.
Univ426


3

Sie können ip route getdie Route suchen und ausgeben, die für ein bestimmtes Ziel verwendet werden würde. Die Ausgabe sollte die Schnittstelle und die Quelladresse enthalten.

% ip route get 8.8.8.8
8.8.8.8 via 172.16.4.1 dev eth1  src 172.16.4.36

1
Es tut mir Leid. Ich habe vergessen, das Betriebssystem anzugeben. Ich verwende OSX. Nein iphier. = (
umop

1

Ich bin nicht sicher, ob dies korrekt ist, aber netstat könnte es tun. Es zeigt die lokale Adresse der hergestellten Verbindungen.

# netstat -nt
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
...
tcp        0      0 192.168.1.61:44114      64.34.119.101:80        ESTABLISHED
tcp        0      0 192.168.1.61:36036      107.21.205.201:80       ESTABLISHED

Dies ist der richtige endgültige Weg, um festzustellen, welche lokale IP verwendet wurde.
Bahamat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.