netstat: qué es y cómo consultar conexiones
Autor: Redacción Domeny.ForSale Publicado
En breve: netstat es una herramienta de línea de comandos que muestra conexiones de red, puertos en los que los programas esperan tráfico y otros datos de la red. En Linux suele estar disponible en el paquete net-tools: el comando sudo netstat -tulnp muestra los puertos TCP y UDP y sus procesos asociados. Para consultar las conexiones TCP establecidas resulta útil sudo netstat -tnp; una alternativa moderna es ss.
¿Qué muestra netstat y cuándo resulta útil?
netstat permite comprobar con qué direcciones se comunica el equipo y qué programas ofrecen servicios de red. Ayuda, por ejemplo, a determinar si el servidor web funciona, por qué una aplicación no puede utilizar un puerto o qué proceso mantiene una conexión con otro dispositivo.
Un puerto es un número que permite dirigir el tráfico de red a un servicio concreto. Un programa que escucha en un puerto espera recibir comunicaciones, mientras que una conexión TCP activa une una dirección y un puerto locales con la dirección y el puerto del otro extremo.
netstat muestra el estado que se observa desde el equipo consultado. El resultado por sí solo no demuestra que el servicio sea accesible desde internet: un cortafuegos, un router o las reglas de red del proveedor de infraestructura pueden bloquear el acceso.
¿Cómo instalar netstat en Linux?
Primero comprueba si la herramienta ya funciona:
netstat --version
Si el intérprete de comandos indica que no encuentra el comando, instala el paquete net-tools con el gestor de paquetes de tu distribución. Estos son algunos comandos habituales:
| Distribución | Instalación |
|---|---|
| Debian, Ubuntu | sudo apt update && sudo apt install net-tools |
| Fedora | sudo dnf install net-tools |
| Arch Linux | sudo pacman -S net-tools |
| openSUSE | sudo zypper install net-tools |
La instalación requiere permisos de administrador. Si trabajas en un servidor administrado y no tienes acceso a sudo, pide al administrador que lo instale o comprueba si está disponible el comando ss.
En muchos sistemas Linux actuales, netstat no se instala de forma predeterminada, y para diagnosticar conexiones se recomienda ss, del paquete iproute2. netstat sigue siendo útil al trabajar con instrucciones y entornos más antiguos.
¿Cómo consultar las conexiones activas?
Para mostrar las conexiones TCP sin incluir los sockets que esperan nuevas conexiones, ejecuta:
sudo netstat -tnp
La opción -t selecciona TCP, -n muestra las direcciones y los puertos en formato numérico sin resolver nombres, y -p añade información sobre el proceso. sudo permite ver también los datos de los procesos de otros usuarios; sin los permisos adecuados, parte de la información puede no estar disponible.
En la columna State encontrarás el estado de la conexión. ESTABLISHED indica una conexión establecida; SYN_SENT, un intento de establecerla; y TIME_WAIT, un estado posterior al cierre de la conexión durante el cual el sistema aún conserva sus datos. Una entrada TIME_WAIT no indica por sí sola un fallo.
Si solo te interesan las conexiones TCP establecidas, puedes filtrar el resultado:
sudo netstat -tnp | grep ESTABLISHED
La columna Local Address contiene la dirección y el puerto locales, y Foreign Address, la dirección y el puerto del otro extremo. UDP no establece conexiones del mismo modo que TCP, por lo que sus sockets no tienen un estado equivalente a ESTABLISHED. Para consultarlos, utiliza sudo netstat -unp.
¿Cómo encontrar los programas que escuchan en los puertos?
El comando más práctico para comprobar los servicios de red es:
sudo netstat -tulnp
La opción -l limita el resultado a los sockets en escucha, y -u incluye UDP. Para TCP verás el estado LISTEN; en el caso de UDP, se trata de sockets que reciben datagramas, no de sockets que esperan conexiones en el sentido de TCP.
Una entrada simplificada de ejemplo podría ser así:
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2451/python3
Esto significa que el proceso python3, con el identificador PID 2451, escucha en el puerto 8080, pero solo en la interfaz local de bucle de retorno. PID es el identificador del proceso y permite examinarlo con más detalle, por ejemplo, mediante el comando ps -p 2451 -f.
La dirección de escucha es importante:
127.0.0.1:8080: el servicio es accesible a través de la dirección IPv4 local, no directamente desde otros equipos.0.0.0.0:8080: escucha en todas las direcciones IPv4 locales.:::8080: escucha en todas las direcciones IPv6 locales; la compatibilidad con IPv4 depende de la configuración del sistema y de la aplicación.
No interpretes la dirección 0.0.0.0:* de la columna Foreign Address como un cliente remoto. En un socket en escucha indica que no hay un extremo remoto especificado.
Ejemplo: una aplicación no puede utilizar el puerto 8080
Si la aplicación indica que el puerto 8080 está ocupado, comprueba los sockets TCP en escucha:
sudo netstat -tlnp | grep ':8080 '
Consulta el PID y el nombre del programa y, a continuación, examina el proceso con el comando ps -p PID -f, sustituyendo PID por el número encontrado. Determina si se trata de una instancia anterior de tu aplicación o de un servicio necesario. Solo entonces detén el programa correspondiente por su procedimiento habitual o elige otro puerto: no termines un proceso desconocido solo porque impida iniciar la aplicación.
Si netstat no está disponible, puedes realizar una comprobación similar con:
sudo ss -tulnp
Si el problema es que no puedes acceder desde otro equipo, confirma primero la dirección de escucha y el proceso; después, comprueba el cortafuegos y la ruta de red. Así podrás distinguir entre un fallo de la aplicación y un problema de accesibilidad de su puerto.
Consulta también: Dominio y redes sociales: ¿qué debe ser coherente?
