¿Cómo saber en qué interfaz se apagará una conexión TCP?

10

Tengo un servidor con múltiples interfaces ethernet. ¿Cuál es la forma más fácil de saber en qué interfaz se apagará una conexión TCP saliente? Los resultados de "netstat -rn" son griegos para mí, así que si su respuesta es "mire la tabla de enrutamiento local", sea detallado y claro.

brooks94
fuente

Respuestas:

13

Para mí puedo ver qué interfaz tengo allí usando el 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

En ambos casos puedo ver el nombre de la interfaz al final, en este caso es eth0

La información dada por estos comandos es la siguiente (Fuente encontrada aquí ):

Destino : la red de destino o el host de destino.

Puerta de enlace: la dirección de la puerta de enlace o *si no está configurada.

Genmask : la máscara de red para la red de destino.

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

Banderas : las posibles banderas incluyen:

 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 : tamaño de segmento máximo predeterminado para conexiones TCP en esta ruta.

Ventana : tamaño de ventana predeterminado para conexiones TCP en esta ruta.

irtt - RTT inicial (tiempo de ida y vuelta). El núcleo usa esto para adivinar los mejores parámetros del protocolo TCP sin esperar respuestas (posiblemente lentas).

Iface : interfaz a la que se enviarán los paquetes para esta ruta.

Otros campos pueden ser:

Métrica : la distancia al objetivo (generalmente contada en saltos). No es utilizado por núcleos recientes, pero puede ser necesario para enrutar demonios.

Ref : número de referencias a esta ruta. (No se usa en el kernel de Linux).

Uso : recuento de búsquedas para la ruta. Dependiendo del uso de -F y -C, esto será errores de caché de ruta (-F) o aciertos (-C).

HH (solo en caché): el número de entradas ARP y rutas en caché que se refieren a la caché de encabezado de hardware para la ruta en caché. Será -1 si no se necesita una dirección de hardware para la interfaz de la ruta en caché (por ejemplo, lo).

Arp (solo en caché): si la dirección de hardware para la ruta en caché está actualizada o no.

Ahora a la pregunta en cuestión. La forma más fácil que puedo recordar en este momento (como siempre, hay varias formas de hacer lo mismo) es mediante el uso iptraf. Solo instálalo:

sudo apt-get install iptraf

y ejecutarlo con privilegios de raíz: sudo iptraf

En el menú, iptrafseleccione Monitor de tráfico IP y luego elija Todas las interfaces . Eso debería mostrarle todas las conexiones TCP y con qué interfaz están relacionadas. Está basado en terminales, lo que es bueno para fines de monitoreo.

Luis Alvarado
fuente
Buena respuesta Luis. También puede usar el comandoroute
Panther
1
En lugar de decir, mira ir a ver a donde no ir, la respuesta correcta debería decir dado esta información tabla de enrutamiento, se puede ver que el tráfico para una dirección dada se vaya.
psusi
8

Puede consultar las tablas de enrutamiento del núcleo con el ipcomando Su route getsubcomando le dirá exactamente cómo el núcleo enrutará un paquete a una dirección de destino:

 $ ip route get to 10.0.2.2
 10.0.2.2 dev eth0  src 10.0.2.15

mientras

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

y

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