Erkennen, über welche Schnittstelle der Datenverkehr zu einer IP-Adresse läuft

Erkennen, über welche Schnittstelle der Datenverkehr zu einer IP-Adresse läuft

Ich erstelle ein Skript und muss feststellen, durch welche Schnittstelle der Datenverkehr einer IP-Adresse geht. Dies liegt daran, dass in Arch eine IP-Adresse nur für eine von vier Netzwerkkarten verwendet wird, aber jede dieser vier sein kann.

Ich habe es manuell so gemacht, dass ich einen TCPdump ausgeführt habe: Wenn ich Pakete sehe, ist dies die Schnittstelle. Wenn nicht, breche ich den TCPdump ab und führe einen weiteren TCPdump auf einer anderen Schnittstelle aus.

Ich verwende FreeBSD.

Antwort1

Anrufroute get.

route get 192.0.2.42 | awk '$1 ~ /interface/ {print $2}'

Antwort2

netstat -tauzeigt Ihnen die lokale Adresse und den Port, die von einem Programm verwendet werden. Jede Schnittstelle hat ihre eigene Adresse, außer in Fällen wie Bonding... Ist das die Information, die Sie brauchen?

Wenn dies der Fall ist, können Sie die Ausgabe ganz einfach grepin cuteinem Skript verwenden.

Beispiel: netstat -taunpe | grep firefox | awk '{print $4}' | cut -d ':' -f 1 Ruft die lokale Adresse ab, die von den von „Firefox“ hergestellten Verbindungen verwendet wird.

Antwort3

Bei *BSDs bin ich mir nicht sicher, aber unter Linux route -nwerden Ihnen (neben anderen Dingen) Flags (Sie möchten wahrscheinlich nach der Zeile suchen, die als Standardroute markiert ist) und der Gerätename angezeigt:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.100.63.254   0.0.0.0         UG    0      0        0 eth0
10.100.0.0      0.0.0.0         255.255.192.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

oder:

$ ip route
default via 10.100.63.254 dev eth0 
10.100.0.0/18 dev eth0  proto kernel  scope link  src 10.100.12.38 
127.0.0.0/8 dev lo  scope link 
169.254.0.0/16 dev eth0  scope link

verwandte Informationen