Wie kann man feststellen, auf welcher Schnittstelle eine TCP-Verbindung unterbrochen wird?

10

Ich habe einen Server mit mehreren Ethernet-Schnittstellen. Was ist der einfachste Weg, um festzustellen, über welche Schnittstelle eine ausgehende TCP-Verbindung ausgeht? Die Ergebnisse von "netstat -rn" sind für mich griechisch. Wenn Ihre Antwort also "siehe lokale Routing-Tabelle" lautet, seien Sie bitte detailliert und klar.

Bäche94
quelle

Antworten:

13

Für mich kann ich mit dem netstat -rnoder sehen, welche Schnittstelle ich genau dort haberoute -n

cyrex@cyrex:~$ netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.48.0.1      0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.48.0.0      0.0.0.0         255.255.224.0   U         0 0          0 eth0

Oder netstat -r

cyrex@cyrex:~$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         192-48-0-1.dyn. 0.0.0.0         UG        0 0          0 eth0
link-local      *               255.255.0.0     U         0 0          0 eth0
192.48.0.0      *               255.255.224.0   U         0 0          0 eth0

In beiden Fällen kann ich den Namen der Schnittstelle am Ende sehen, in diesem Fall ist es eth0

Die von diesen Befehlen angegebenen Informationen lauten wie folgt (Quelle hier zu finden ):

Ziel - Das Zielnetzwerk oder der Zielhost.

Gateway - Die Gateway-Adresse oder *falls keine festgelegt.

Genmaske - Die Netzmaske für das Zielnetz.

 255.255.255.255 for the host destination.
 0.0.0.0 for the default route.  

Flags - Mögliche Flags sind:

 U (route is up)  
 H (target is a host)  
 G (using gateway)  
 R (reinstate route for dynamic routing)  
 D (dynamically installed by daemon or redirect)  
 M (modified from routing daemon or redirect)  
 A (installed by addrconf)  
 C (cache entry)  
 ! (reject route)  

MSS - Standardmäßige maximale Segmentgröße für TCP-Verbindungen über diese Route.

Fenster - Standardfenstergröße für TCP-Verbindungen über diese Route.

irtt - Anfängliche RTT (Round Trip Time). Der Kernel verwendet dies, um die besten TCP-Protokollparameter zu erraten, ohne auf (möglicherweise langsame) Antworten zu warten.

Iface - Schnittstelle, an die Pakete für diese Route gesendet werden.

Andere Felder können sein:

Metrisch - Die Entfernung zum Ziel (normalerweise in Hopfen gezählt). Es wird nicht von neueren Kerneln verwendet, kann aber vom Routing von Dämonen benötigt werden.

Ref - Anzahl der Verweise auf diese Route. (Wird im Linux-Kernel nicht verwendet.)

Verwendung - Anzahl der Suchvorgänge für die Route. Abhängig von der Verwendung von -F und -C sind dies entweder Routen-Cache-Fehler (-F) oder Treffer (-C).

HH (nur zwischengespeichert) - Die Anzahl der ARP-Einträge und zwischengespeicherten Routen, die sich auf den Hardware-Header-Cache für die zwischengespeicherte Route beziehen. Dies ist -1, wenn für die Schnittstelle der zwischengespeicherten Route keine Hardwareadresse benötigt wird (z. B. lo).

Arp (nur zwischengespeichert) - Gibt an, ob die Hardwareadresse für die zwischengespeicherte Route aktuell ist.

Nun zur Frage. Der einfachste Weg, an den ich mich jetzt erinnern kann (wie immer gibt es mehrere Möglichkeiten, dasselbe zu tun), ist die Verwendung iptraf. Einfach installieren:

sudo apt-get install iptraf

und führen Sie es mit Root-Berechtigungen aus: sudo iptraf

Im Menü iptrafwählen Sie IP Traffic Monitor und wählen Sie dann alle Schnittstellen . Das sollte Ihnen alle TCP-Verbindungen zeigen und auf welche Schnittstelle sie sich beziehen. Es ist terminalbasiert und eignet sich für Überwachungszwecke.

Luis Alvarado
quelle
Schöne Antwort Luis. Sie können auch den Befehlroute
Panther
1
Anstatt sagen gehen Blick und sehen , wo es nicht gehen, die richtige Antwort sollte diese Routing - Tabelle Informationen sagen gegeben, können Sie sehen , wo der Verkehr für eine bestimmte Adresse wird gehen.
Psusi
8

Sie können die Kernel-Routing-Tabellen mit dem ipBefehl abfragen . Der route getUnterbefehl gibt genau an, wie der Kernel ein Paket an eine Zieladresse weiterleitet:

 $ ip route get to 10.0.2.2
 10.0.2.2 dev eth0  src 10.0.2.15

wohingegen

$ ip route get to 192.168.3.5
192.168.3.5 via 10.0.2.2 dev eth0  src 10.0.2.15

und

$ ip route get to 127.0.1.1
local 127.0.1.1 dev lo  src 127.0.0.1
zwets
quelle