Skip to main content
Back to blog
· 7 min read

netstat: monitoreo de conexiones de red en Linux

Guía de referencia de netstat: instalación en Debian/Raspberry Pi, opciones principales, ejemplos prácticos para ver puertos abiertos, conexiones activas, procesos escuchando, buenas prácticas y comparación con ss.

linux networking sre

netstat (network statistics) es una herramienta de línea de comandos que muestra información sobre las conexiones de red, tablas de enrutamiento, estadísticas de interfaces y conexiones enmascaradas. Es una de las utilidades clásicas para diagnosticar problemas de red y verificar qué servicios están escuchando en un servidor.

Instalación

Debian/Raspberry Pi

netstat forma parte del paquete net-tools, que no viene instalado por defecto en las versiones recientes de Debian y Raspberry Pi OS:

sudo apt update && sudo apt install net-tools

Verifica la instalación:

netstat --version

Uso básico

Ejecuta netstat sin argumentos para mostrar todas las conexiones activas:

netstat

La salida incluye columnas como protocolo, dirección local, dirección remota y estado de la conexión.

Opciones principales

Ver conexiones TCP y UDP

# Solo conexiones TCP
netstat -t

# Solo conexiones UDP
netstat -u

# TCP y UDP combinados
netstat -tu

Mostrar puertos en escucha

netstat -l

Muestra únicamente los sockets que están escuchando conexiones entrantes.

Incluir el PID y nombre del proceso

sudo netstat -p

Agrega la columna PID/Program name a la salida. Requiere permisos de superusuario para ver los procesos de otros usuarios.

Mostrar direcciones numéricas

netstat -n

Muestra direcciones IP y puertos en formato numérico en lugar de resolver nombres de host y servicios. Esto acelera la salida considerablemente.

Tabla de referencia de opciones

OpciónDescripción
-tMuestra conexiones TCP
-uMuestra conexiones UDP
-lMuestra solo sockets en escucha
-aMuestra todos los sockets (escucha y no escucha)
-nMuestra direcciones y puertos en formato numérico
-pMuestra el PID y nombre del proceso
-rMuestra la tabla de enrutamiento
-iMuestra estadísticas de interfaces de red
-sMuestra estadísticas por protocolo
-cModo continuo (actualiza la salida periódicamente)
-eMuestra información extendida
-WNo trunca direcciones IP (salida ancha)

Combinaciones más útiles

Ver todos los puertos en escucha con proceso asociado

sudo netstat -tulnp

Esta es la combinación más utilizada. Muestra todos los puertos TCP y UDP en escucha, con direcciones numéricas y el proceso responsable.

Ejemplo de salida:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      512/sshd
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      1024/postgres
tcp6       0      0 :::80                   :::*                    LISTEN      2048/nginx
udp        0      0 0.0.0.0:68              0.0.0.0:*                           384/dhclient

Ver todas las conexiones activas

sudo netstat -tanp

Muestra todas las conexiones TCP (establecidas y en escucha) con sus procesos.

Ver conexiones establecidas únicamente

netstat -tn | grep ESTABLISHED

Monitorear conexiones en tiempo real

sudo netstat -tulnpc

La opción -c refresca la salida cada segundo.

Ver la tabla de enrutamiento

netstat -rn

Muestra las rutas de red configuradas en formato numérico.

Estadísticas por protocolo

netstat -s

Muestra contadores de paquetes enviados, recibidos, errores y descartados para cada protocolo (TCP, UDP, ICMP, IP).

Estadísticas de interfaces

netstat -i

Muestra una tabla con estadísticas de cada interfaz de red (paquetes recibidos, transmitidos, errores).

Casos de uso comunes

Verificar si un puerto específico está en uso

sudo netstat -tulnp | grep :8080

Útil para confirmar si un servicio está escuchando en el puerto esperado antes de iniciar una aplicación.

Identificar qué proceso usa un puerto

sudo netstat -tulnp | grep :3000

La columna PID/Program name indica el proceso responsable. Si necesitas liberar el puerto, puedes detener ese proceso.

Contar conexiones por estado

netstat -tn | awk '{print $6}' | sort | uniq -c | sort -rn

Muestra cuántas conexiones hay en cada estado (ESTABLISHED, TIME_WAIT, CLOSE_WAIT, etc.). Útil para detectar acumulación de conexiones.

Detectar conexiones desde una IP específica

netstat -tn | grep 192.168.1.50

Verificar conexiones a un servicio remoto

netstat -tn | grep :443

Muestra todas las conexiones activas al puerto 443 (HTTPS).

Estados de conexión TCP

Al analizar la salida de netstat, es importante entender los estados TCP:

EstadoDescripción
LISTENEl socket espera conexiones entrantes
ESTABLISHEDConexión activa y transmitiendo datos
TIME_WAITConexión cerrada, esperando que expiren paquetes en tránsito
CLOSE_WAITEl extremo remoto cerró la conexión, esperando cierre local
SYN_SENTSe envió una solicitud de conexión
SYN_RECVSe recibió una solicitud de conexión
FIN_WAIT1El socket se cerró, esperando confirmación
FIN_WAIT2El socket se cerró, esperando cierre del extremo remoto

Una acumulación excesiva de TIME_WAIT o CLOSE_WAIT puede indicar problemas en la aplicación o en la configuración de red.

Buenas prácticas

  • Usa siempre -n — evita la resolución DNS inversa, lo que hace la ejecución mucho más rápida, especialmente en servidores con muchas conexiones.
  • Combina -tulnp — esta combinación cubre el caso de uso más frecuente: ver qué servicios están escuchando y en qué puertos.
  • Ejecuta con sudo — sin permisos de superusuario, la columna PID/Program name aparece vacía para procesos de otros usuarios.
  • Filtra con grep — la salida de netstat puede ser extensa. Filtra por puerto, dirección IP o estado para encontrar rápidamente lo que necesitas.
  • Monitorea regularmente — en servidores de producción, verifica periódicamente los puertos en escucha para detectar servicios no autorizados.
  • Documenta los puertos esperados — mantén un registro de qué puertos deberían estar abiertos en cada servidor para facilitar auditorías.

Limitaciones y comparación con ss

netstat es una herramienta considerada obsoleta (deprecated) en distribuciones modernas de Linux. El paquete net-tools dejó de recibir mantenimiento activo y fue reemplazado por el paquete iproute2.

La alternativa moderna es ss (socket statistics):

# Equivalente a netstat -tulnp
ss -tulnp

Diferencias principales

Característicanetstatss
Paquetenet-toolsiproute2 (preinstalado)
MantenimientoDescontinuadoActivo
VelocidadLento en muchas conexionesSignificativamente más rápido
Fuente de datos/proc/net/*API netlink del kernel
Filtros avanzadosNo soportaFiltros por estado, puerto, dirección

Equivalencias comunes

# Puertos en escucha
netstat -tulnp  ss -tulnp

# Conexiones establecidas
netstat -tn  ss -tn

# Tabla de enrutamiento
netstat -rn  ip route

# Estadísticas de interfaces
netstat -i  ip -s link

Si bien ss es superior en rendimiento y funcionalidad, netstat sigue siendo útil en sistemas heredados y su sintaxis es ampliamente conocida en la comunidad.

Troubleshooting

netstat: command not found

El paquete net-tools no está instalado:

sudo apt update && sudo apt install net-tools

La columna PID/Program name aparece vacía

Ejecuta netstat con sudo. Sin permisos de superusuario, solo se muestran los procesos del usuario actual:

sudo netstat -tulnp

La salida es muy lenta

netstat intenta resolver nombres DNS por defecto. Usa la opción -n para mostrar direcciones numéricas:

netstat -tuln

Muchas conexiones en TIME_WAIT

Un número elevado de conexiones en TIME_WAIT es normal en servidores con alto tráfico. Si es excesivo, puede ajustarse el tiempo de espera en el kernel:

# Ver el valor actual
cat /proc/sys/net/ipv4/tcp_fin_timeout

# Reducir el tiempo de espera (valor en segundos)
sudo sysctl -w net.ipv4.tcp_fin_timeout=30

Nota: modifica estos valores con precaución. Reducir demasiado el timeout puede causar problemas con conexiones legítimas.

Muchas conexiones en CLOSE_WAIT

Las conexiones en CLOSE_WAIT indican que la aplicación local no está cerrando correctamente las conexiones. Identifica el proceso responsable:

sudo netstat -tnp | grep CLOSE_WAIT

Revisa el código de la aplicación para asegurar que los sockets se cierren correctamente después de su uso.

Desinstalación

Para eliminar netstat junto con el paquete net-tools:

sudo apt remove net-tools

Para eliminar también los archivos de configuración:

sudo apt purge net-tools