Come dire su quale interfaccia verrà attivata una connessione TCP?


10

Ho un server con più interfacce Ethernet. Qual è il modo più semplice per dire su quale interfaccia uscirà una connessione TCP in uscita? I risultati di "netstat -rn" sono per me greci, quindi se la tua risposta è "guarda la tabella di routing locale", sii dettagliato e chiaro.

Risposte:


13

Per me posso vedere quale interfaccia ho proprio lì usando il netstat -rnoroute -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

O 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 entrambi i casi vedo il nome dell'interfaccia alla fine, in questo caso è eth0

Le informazioni fornite da questi comandi sono le seguenti (Fonte trovata qui ):

Destinazione : la rete di destinazione o l'host di destinazione.

Gateway : l'indirizzo del gateway o *se non impostato.

Maschera gen. - La maschera di rete per la rete di destinazione.

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

Bandiere - Le possibili bandiere includono:

 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 - Dimensione massima del segmento predefinita per le connessioni TCP su questa route.

Finestra : dimensioni della finestra predefinite per le connessioni TCP su questa route.

irtt - RTT iniziale (Round Trip Time). Il kernel lo usa per indovinare i migliori parametri del protocollo TCP senza attendere risposte (possibilmente lente).

Iface : interfaccia a cui verranno inviati i pacchetti per questo percorso.

Altri campi possono essere:

Metrica : la distanza dal bersaglio (di solito conteggiata in luppolo). Non viene utilizzato dai kernel recenti, ma potrebbe essere necessario instradare i demoni.

Rif : numero di riferimenti a questo percorso. (Non utilizzato nel kernel Linux.)

Usa : conteggio delle ricerche per il percorso. A seconda dell'uso di -F e -C si tratterà di missioni della cache di route (-F) o hit (-C).

HH (solo cache): il numero di voci ARP e route memorizzate nella cache che fanno riferimento alla cache dell'intestazione hardware per la route memorizzata nella cache. Questo sarà -1 se non è necessario un indirizzo hardware per l'interfaccia del percorso memorizzato nella cache (ad es. Lo).

Arp (solo cache) - Se l'indirizzo hardware per il percorso della cache è aggiornato o meno.

Ora alla domanda a portata di mano. Il modo più semplice che posso ricordare in questo momento (come sempre, ci sono diversi modi per fare la stessa cosa) è usando iptraf. Basta installarlo:

sudo apt-get install iptraf

ed eseguilo con i privilegi di root: sudo iptraf

Nel menu iptrafselezionare IP Traffic Monitor, quindi selezionare Tutte le interfacce . Ciò dovrebbe mostrare tutte le connessioni TCP e a quale interfaccia sono correlate. È basato su terminale che è buono per scopi di monitoraggio.


Bella risposta Luis. Puoi anche usare il comandoroute
Pantera

1
Piuttosto che dire andare a cercare e vedere dove si fa andare, la risposta corretta dovrebbe dire dato queste informazioni tabella di routing, è possibile vedere dove il traffico per un determinato indirizzo sarà andare.
psusi

8

È possibile eseguire una query sulle tabelle di routing del kernel utilizzando il ipcomando Il suo route getsottocomando ti dirà esattamente come il kernel instraderà un pacchetto a un indirizzo di destinazione:

 $ ip route get to 10.0.2.2
 10.0.2.2 dev eth0  src 10.0.2.15

mentre

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

e

$ ip route get to 127.0.1.1
local 127.0.1.1 dev lo  src 127.0.0.1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.