El comando netstat en Linux: estadísticas de red y conexiones

Introducción

En el mundo de la administración de sistemas Linux, conocer el estado de las conexiones de red es fundamental para diagnosticar problemas, optimizar rendimiento y garantizar la seguridad. Uno de los outils más tradicionales y todavía ampliamente utilizado es el comando netstat. Aunque ha sido parcialmente sustituido por ss en distribuciones modernas, netstat sigue siendo una referencia valiosa por su amplio conjunto de opciones y su salida legible. En este artículo exploraremos qué es netstat, cómo instalarlo, su sintaxis básica, las opciones más útiles y varios ejemplos prácticos que podrás aplicar en tu día a día.

¿Qué es netstat?

Netstat (abreviatura de network statistics) es una herramienta de línea de comandos que muestra información sobre las conexiones de red, las tablas de enrutamiento, las estadísticas de interfaces y más. Proporciona una vista detallada de los sockets abiertos, tanto TCP como UDP, y permite filtrar por estado, dirección, puerto y protocolo. Su salida puede incluir el PID y el nombre del proceso que ocupa cada conexión cuando se ejecuta con privilegios de root, lo que resulta muy útil para identificar aplicaciones que consumen ancho de banda o que presentan comportamientos sospechosos.

Instalación y disponibilidad

En la mayoría de las distribuciones Linux, netstat forma parte del paquete net-tools. En sistemas basados en Debian/Ubuntu puedes instalarlo con:

  • sudo apt update && sudo apt install net-tools

En distribuciones RHEL, CentOS o Fedora el paquete se llama igualmente net-tools y se instala con:

  • sudo yum install net-tools o sudo dnf install net-tools

Una vez instalado, el comando está disponible como netstat desde cualquier terminal.

Sintaxis básica

La forma más simple de ejecutar netstat es:

netstat [opciones]

Sin argumentos, muestra todas las conexiones activas y los sockets de escucha. Para limitar la salida a un tipo de protocolo o a un estado concreto, se usan opciones que modifican el comportamiento del comando.

Opciones más usadas

A continuación se listan las opciones que suelen ser más útiles para administradores de sistemas:

  • -a (all): muestra todas las conexiones, tanto las establecidas como las que están en estado de escucha.
  • -t (tcp): limita la salida a conexiones TCP.
  • -u (udp): limita la salida a conexiones UDP.
  • -l (listening): muestra solo los sockets que están a la espera de conexiones (listening).
  • -n (numeric): muestra direcciones y puertos en formato numérico, evitando la resolución de nombres DNS y de servicios.
  • -p (program): muestra el PID y el nombre del proceso propietario de cada socket (requiere privilegios de root).
  • -r (route): muestra la tabla de enrutamiento.
  • -i (interfaces): muestra estadísticas de las interfaces de red.
  • -s (statistics): muestra estadísticas resumidas por protocolo (TCP, UDP, IP, ICMP, etc.).

Estas opciones pueden combinarse; por ejemplo, netstat -tunlp es una forma común de ver todos los puertos TCP y UDP en escucha, mostrando el proceso asociado y evitando la resolución de nombres.

Ejemplos prácticos

1. Ver todas las conexiones TCP establecidas

netstat -tan | grep ESTABLISHED

Esta combinación lista únicamente las conexiones TCP que están en estado establecido, mostrando direcciones y puertos en formato numérico.

2. Identificar qué proceso está usando un puerto específico

sudo netstat -tunlp | grep :80

Con los privilegios de root, el filtro :80 muestra qué proceso está escuchando en el puerto 80 (HTTP), incluyendo su PID y nombre.

3. Monitorizar tráfico por interfaz

netstat -i

Obtienes un resumen de paquetes transmitidos y recibidos, errores y colisiones para cada interfaz de red.

4. Obtener estadísticas globales de protocolos

netstat -s

Esta opción muestra contadores detallados para TCP, UDP, IP, ICMP y otros protocolos, útil para detectar anomalías como retransmisiones excesivas o paquetes descartados.

5. Ver la tabla de enrutamiento

netstat -r

Equivalente al comando route -n, muestra las rutas conocidas por el kernel, incluyendo la puerta de enlace predeterminada.

Interpretación de la salida

Cada línea de la salida de netstat representa un socket y contiene varios campos:

  • Proto: protocolo (tcp, udp, raw, etc.).
  • Recv-Q y Send-Q: cantidad de datos en cola de recepción y envío.
  • Local Address: dirección IP y puerto local.
  • Foreign Address: dirección IP y puerto remoto (o * para escucha).
  • State: estado de la conexión (ESTABLISHED, LISTEN, TIME_WAIT, etc.).
  • PID/Program name: (si se usa -p) identificador y nombre del proceso.

Entender estos campos permite, por ejemplo, detectar conexiones en estado TIME_WAIT excesivo que pueden indicar un cierre prematuro de sesiones, o identificar puertos en escucha inesperados que podrían ser señal de un servicio no autorizado.

Limitaciones y la alternativa ss

Aunque netstat es poderoso, tiene algunas desventajas:

  • Utiliza el archivo /proc/net y puede ser más lento en sistemas con un gran número de sockets.
  • Su desarrollo está prácticamente detenido; muchas distribuciones lo consideran obsoleto.
  • Algunas opciones de filtrado avanzado están ausentes.

El comando ss (socket statistics) forma parte del paquete iproute2 y está diseñado para ser un reemplazo más rápido y flexible. Por ejemplo, ss -tunlp ofrece la misma información que netstat -tunlp pero con mejor rendimiento y opciones de filtrado más expresivas.

Sin embargo, conocer netstat sigue siendo útil porque muchos scripts y documentación antigua aún lo referencia, y su salida es a veces más legible para usuarios novatos.

Conclusión

El comando netstat sigue siendo una herramienta esencial para cualquier administrador de Linux que necesite inspeccionar rápidamente el estado de la red, identificar procesos que utilizan ciertos puertos o revisar estadísticas de protocolo. A pesar de la aparición de ss, netstat ofrece una combinación de simplicidad y detalle que lo hace válido para tareas de diagnóstico rutinario y para entornos donde se prefieren herramientas clásicas. Dominar sus opciones y saber interpretar su salida te permitirá resolver problemas de conectividad, optimizar el rendimiento y mantener la seguridad de tus sistemas Linux.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol