Guía de Administración de Redes con Linux | ||
---|---|---|
Anterior | Capítulo 5. Configuración del Protocolo TCP/IP | Siguiente |
netstat es una herramienta útil para comprobar la configuración y actividad de su red. Se llama netstat, aunque se trata en realidad de una colección de herramientas combinadas. Describiremos cada una de las funciones en las secciones siguientes.
Si ejecuta netstat usando el indicador –r, puede ver la información de la tabla de encaminamiento del núcleo igual que hemos venido haciendo hasta ahora con route. Para vstout, tendríamos:
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 127.0.0.1 * 255.255.255.255 UH 0 0 0 lo 172.16.1.0 * 255.255.255.0 U 0 0 0 eth0 172.16.2.0 172.16.1.1 255.255.255.0 UG 0 0 0 eth0 |
La opción -n hace que netstat imprima las direcciones IP en notación de cuaterna en vez de usar los nombres simbólicos de las máquinas o las redes. Esto es especialmente útil si pretende evitar consultas para esos nombres a través de la red (por ejemplo consultas a un servidor DNS o NIS).
La segunda columna de la salida producida por netstat informa sobre las pasarelas a las que apunta la información de encaminamiento. Si una ruta no usa pasarela, el programa imprime un asterisco. La tercera columna imprime el nivel de “generalización” de una ruta. Dada una dirección IP para la que encontrar una ruta apropiada, el núcleo recorre la tabla registro a registro haciendo un "AND" lógico de la dirección y la máscara de nivel de generalización antes de compararla con el destino que muestra dicho registro.
La cuarta columna muestra varios indicadores que describen la ruta:
La ruta utiliza una pasarela.
La interfaz está activa.
Esta interfaz permite el acceso a una sola máquina. Este es el caso de la interfaz de bucle local 127.0.0.1.
Esta ruta es creada dinámicamente. Aparece si la entrada de la tabla ha sido generada por un demonio de encaminamiento como gated o por un mensaje de redirección ICMP (ver la sección Sección 2.5” en el capítulo 2).
Presente cuando este registro ha sido modificado por un mensaje de redirección ICMP.
La ruta es una ruta de rechazo, y los datagramas serán descartados.
Las siguientes tres columnas muestran el MSS, tamaño de ventana y irtt que serán aplicados a las conexiones TCP establecidas a través de esta ruta. El MSS es el Tamaño Máximo de Segmento, y es el tamaño del datagrama más grande que construirá el núcleo para transmitir a través de esta ruta. La Ventana es la cantidad máxima de datos que el sistema aceptará de una sola vez desde una máquina remota. El acrónimo irtt significa “tiempo inicial de ida y vuelta”, por sus iniciales en inglés. El protocolo TCP se asegura de que los datos han sido transmitidos de forma fiable entre máquinas retransmitiendo un datagrama si éste ha sido perdido. El protocolo TCP mantiene un contador de cuánto tarda un datagrama en ser enviado a su destino, y el "recibo" que se recibe, de forma que sabe cuánto esperar antes de suponer que un datagrama necesita retrasmitirse. Este proceso se llama tiempo de ida y vuelta. El tiempo de ida y vuelta inicial es el valor que el protocolo TCP usará cuando se establezca una conexión por primera vez. Para la mayoría de los tipos de redes, el valor por omisión es válido, pero para algunas redes lentas, especialmente ciertos tipos de redes de radiopaquetes de aficionados, el tiempo es demasiado pequeño y causa retransmisiones innecesarias. El valor de irtt puede ajustarse usando el comando route. Los campos a 0 significan que se está usando el valor por omisión.
Para terminar, el último campo muestra el interfaz de red que usará esta ruta.
Cuando se invoca con el indicador –i netstat presenta las estadísticas para las interfaces de red configuradas en ese momento. Si también se pasa la opción –a, mostrará todas las interfaces presentes en el núcleo, y no sólo aquellas que hayan sido configuradas. En vstout, la salida para netstat sería algo así:
# netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags lo 0 0 3185 0 0 0 3185 0 0 0 BLRU eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU |
Los campos MTU y Met muestran los valores actuales de MTU y de métrica para esa interfaz. Las columnas RX y TX muestran cuántos paquetes han sido recibidos o transmitidos sin errores (RX-OK/TX-OK) o dañados (RX-ERR/TX-ERR); cuántos fueron descartados (RX-DRP/TX-DRP); y cuántos se perdieron por un desbordamiento. (RX-OVR/TX-OVR).
La última columna muestra los indicadores activos para cada interfaz. Son abreviaturas del nombre completo del indicador, que se muestran con la configuración de la interfaz que ofrece ifconfig:
Dirección de difusión activa.
La interfaz es un dispositivo de bucle local.
Se reciben todos los paquetes (modo promiscuo).
ARP no funciona para esta interfaz.
Conexión punto a punto.
La interfaz funciona.
La interfaz está activa.
netstat ofrece una serie de opciones para mostrar los puertos activos o pasivos. Las opciones –t, –u, –w, y –x muestran conexiones activas a puertos TCP, UDP, RAW, o Unix. Si incluye además el indicador –a, se mostrarán también los puertos que estén esperando una conexión (es decir, que estén escuchando). Esto le dará una lista de todos los servidores que estén corriendo actualmente en su sistema.
Llamar a netstat -ta en vlager produce esta salida:
$ netstat -ta Active Internet Connections Proto Recv-Q Send-Q Local Address Foreign Address (State) tcp 0 0 *:domain *:* LISTEN tcp 0 0 *:time *:* LISTEN tcp 0 0 *:smtp *:* LISTEN tcp 0 0 vlager:smtp vstout:1040 ESTABLISHED tcp 0 0 *:telnet *:* LISTEN tcp 0 0 localhost:1046 vbardolino:telnet ESTABLISHED tcp 0 0 *:chargen *:* LISTEN tcp 0 0 *:daytime *:* LISTEN tcp 0 0 *:discard *:* LISTEN tcp 0 0 *:echo *:* LISTEN tcp 0 0 *:shell *:* LISTEN tcp 0 0 *:login *:* LISTEN |
Esta salida muestra que la mayoría de los servidores están simplemente esperando una conexión externa. Sin embargo, la cuarta línea muestra una conexión SMTP desde vstout, y la sexta línea le indica que usted está haciendo una conexión telnet a vbardolino.[1]
El indicador –a por sí sólo indicará todos los sockets de todo tipo.
[1] | Para saber si una conexión es saliente por los números de puerto. El número de puerto mostrado por una máquina que llama siempre será un entero simple. En el caso de llamar a una máquina, usaremos un puerto correspondiente a un servicio conocido, por lo que netstat usará el nombre simbólico, como smtp, que encuentre en /etc/services. |