El comando netstat es una herramienta esencial para la administración de redes. Muestra información sobre el subsistema de red Linux, incluyendo datos sobre conexiones de red abiertas, tablas de enrutamiento y estadísticas sobre las interfaces de red instaladas.
El comando netstat más simple es ejecutar la herramienta sin ningún parámetro:
netstat
Esto mostrará una lista de las conexiones abiertas actuales en su máquina. Sin embargo, los resultados pueden ser un poco difíciles de manejar. Por lo tanto, es mejor desglosar las conexiones por tipo. Para listar todas las conexiones TCP abiertas, use:
netstat -t
El resultado es una lista de las conexiones actuales que se están realizando a su ordenador. En el ejemplo anterior, puede ver que mi máquina de prueba está ejecutando un servidor SSH y que hay conexiones SSH establecidas.
Observe la línea que dice » Conexión activa a Internet (sin servidores) «. La última parte significa que netstat no incluía una lista de los servidores que se ejecutaban en su máquina; en otras palabras, no incluía los programas que están esperando conexiones TCP pero que actualmente no tienen ninguno establecido.
Para obtener una lista de las conexiones TCP activas y una lista de los puertos que están escuchando las conexiones TCP, añada el indicador -a:
netstat -at
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>i
La -a significa TODO y añade el conjunto de puertos de escucha. Mirando hacia abajo en la lista, se puede ver que mi ordenador Linux también está esperando conexiones SSH sobre IPv6.
La misma información también se puede generar para el uso de UDP:
netstat -au
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
Lo contrario de la bandera -a es la bandera -l que hace que netstat sea la lista de puertos de escucha pero omite las conexiones activas.
Para ver una lista de los procesos que tienen conexiones abiertas o que están esperando conexiones, utilice el indicador -p:
sudo netstat -atp
Puede utilizar -p con -t para TCP o -u para UDP. También tenga en cuenta que necesita ejecutar el comando con sudo. El indicador -p facilita la interpretación de la lista de conexiones. En el ejemplo anterior, puede ver que no sólo se está ejecutando el servidor SSH (sshd), sino que la máquina tiene un servidor CUPS ejecutándose junto con el mini servidor DNSMasq.
Si necesita comprobar que un servicio en particular se está ejecutando, puede usar netstat junto con el comando grep. Por ejemplo, en mi configuración de prueba, instalé un servidor de correo electrónico (postfix). Para comprobar que se está ejecutando, puedo usar lo siguiente:
sudo netstat -ltp | grep smtp
El indicador -ltp le dice a netstat que sólo liste los servidores TCP (es decir, los procesos que están escuchando las conexiones) y el comando grep filtra la salida para mostrar sólo las líneas con la cadena «smtp». Como resultado, podemos ver que el proceso «master» (que es el nombre del proceso principal de Postfix) está escuchando en IPv4 e IPv6 para conexiones SMTP entrantes.
netstat es capaz de generar una gran cantidad de información estadística sobre el subsistema de red. Pruebe los siguientes comandos:
- netstat -i para obtener información de uso sobre las interfaces de red
- netstat -ie para obtener información de uso extendido
- netstat -s para obtener estadísticas de resumen para cada uno de los protocolos de red (es decir, TCP, UDP, ICMP, etc.)
Para obtener la tabla de enrutamiento del núcleo actual, use:
netstat -rn
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
La lectura de las tablas de enrutamiento necesita un ojo entrenado, pero esencialmente lo que muestra el ejemplo anterior es que la ruta por defecto (0.0.0.0.0) para todos los paquetes que no sean para la máquina local será enviada a 192.168.1.254, que en mi configuración de prueba es la pasarela por defecto y mi módem/enrutador de Internet.
Puede ejecutar el comando sin la bandera -n, lo que significa que netstat intentará resolver las direcciones.
La página de manual de netstat tiene una lista completa de todas las opciones disponibles, puede leerla usando:
man netstat
Si tiene algún problema con los ejemplos anteriores, siéntase libre de hacer una pregunta en las secciones de comentarios a continuación.