Comment savoir sur quelle interface une connexion TCP va s'éteindre?

10

J'ai un serveur avec plusieurs interfaces Ethernet. Quelle est la façon la plus simple de savoir sur quelle interface une connexion TCP sortante sortira? Le résultat de "netstat -rn" est grec pour moi, donc si votre réponse est "regardez la table de routage locale", soyez précis et clair.

ruisseaux94
la source

Réponses:

13

Pour moi, je peux voir quelle interface j'ai ici en utilisant le netstat -rnouroute -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

Ou 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

Dans les deux cas, je peux voir le nom de l'interface à la fin, dans ce cas, c'est eth0

Les informations fournies par ces commandes sont les suivantes (source trouvée ici ):

Destination - Le réseau de destination ou l'hôte de destination.

Passerelle - L'adresse de la passerelle ou *si aucune n'est définie.

Genmask - Le masque de réseau pour le réseau de destination.

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

Drapeaux - Les drapeaux possibles incluent:

 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 - Taille de segment maximale par défaut pour les connexions TCP sur cette route.

Fenêtre - Taille de fenêtre par défaut pour les connexions TCP sur cette route.

irtt - RTT initial (Round Trip Time). Le noyau l'utilise pour deviner les meilleurs paramètres du protocole TCP sans attendre les réponses (éventuellement lentes).

Iface - Interface vers laquelle les paquets pour cette route seront envoyés.

Les autres champs peuvent être:

Métrique - La distance à la cible (généralement comptée en sauts). Il n'est pas utilisé par les noyaux récents, mais peut être nécessaire pour le routage des démons.

Ref - Nombre de références à cette route. (Non utilisé dans le noyau Linux.)

Utilisation - Nombre de recherches pour l'itinéraire. Selon l'utilisation de -F et -C, ce sera soit des erreurs de cache de route (-F), soit des hits (-C).

HH (uniquement en cache) - Le nombre d'entrées ARP et de routes mises en cache qui font référence au cache d'en-tête matériel pour la route mise en cache. Ce sera -1 si une adresse matérielle n'est pas nécessaire pour l'interface de la route mise en cache (par exemple lo).

Arp (mis en cache uniquement) - Indique si l'adresse matérielle de l'itinéraire mis en cache est à jour ou non.

Passons maintenant à la question. La façon la plus simple dont je me souvienne en ce moment (comme toujours, il y a plusieurs façons de faire la même chose) est d'utiliser iptraf. Installez-le simplement:

sudo apt-get install iptraf

et l'exécuter avec des privilèges root: sudo iptraf

Dans le menu, iptrafsélectionnez IP Traffic Monitor , puis choisissez Toutes les interfaces . Cela devrait vous montrer toutes les connexions TCP et à quelle interface elles sont liées. Il est basé sur un terminal, ce qui est bon à des fins de surveillance.

Luis Alvarado
la source
Belle réponse Luis. Vous pouvez également utiliser la commanderoute
Panther
1
Plutôt que de dire regarder aller et voir où il ne va, la bonne réponse dises : compte tenu de ces informations de table de routage, vous pouvez voir où le trafic pour une adresse donnée sera aller.
psusi
8

Vous pouvez interroger les tables de routage du noyau à l'aide de la ipcommande. Sa route getsous-commande vous dira exactement comment le noyau acheminera un paquet vers une adresse de destination:

 $ ip route get to 10.0.2.2
 10.0.2.2 dev eth0  src 10.0.2.15

tandis que

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

et

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