Comando netstat
Funcionaliadd principal
Proporciona información sobre conexiones de red, tablas de enrutamiento y estadísticas de interfaces. Soporta protocolos como TCP, UDP y sockets de dominio UNIX, y permite identificar procesos asociados a puertos.
Ejemplos de sintaxis comunes
Mostrar todas las conexiones activas
netstat -a
# Ejemplo de salida:
Proto Recv-Q Send-Q Dirección Local Dirección Foránea Estado
tcp 0 0 10.0.0.1:22 172.16.0.3:12345 ESTABLECIDA
El parámetro -a lista todas las conexiones, incluyendo las en escucha y las activas.
Visualizar puertos TCP en escucha
netstat -tuln
# Ejemplo de salida:
Proto Recv-Q Send-Q Dirección Local Estado PID/Nombre del programa
tcp 0 0 0.0.0.0:8080 ESCUCHANDO 5678/httpd
-t endica TCP, -u para UDP, -l filtra solo puertos en escucha, y -n desactiva la resolución de nombres.
Contar conexiones por estado
netstat -ant | awk '/^tcp/ {print $6}' | sort | uniq -c
# Ejemplo de salida:
15 ESTABLECIDA
5 TIEMPO_ESPERA
Relacionar procesos con puertos
netstat -tulnp
# Ejemplo de salida:
tcp6 0 0 :::8080 :::* ESCUCHANDO 5678/httpd
Comando ss
Funcionalidad principal
Herramienta moderna que reemplaza a netstat, accede directamente a los datos del kernel mediante la interfaz netlink. Ofrece mayor velocidad, soporte para filtros avanzados y visualización de estados TCP internos, como ventanas de congestión y RTT.
Ejemplos de sintaxis comunes
Listar todas las conexiones TCP
ss -at
# Ejemplo de salida:
Estado Recv-Q Send-Q Dirección Local:Puerto Dirección Par:Puerto
ESTABLECIDA 0 0 10.0.0.1:22 172.16.0.3:12345
-a muestra todas las conexiones, -t se enfoca en TCP.
Consultar puertos en escucha
ss -tuln
# Ejemplo de salida:
Netid Estado Recv-Q Send-Q Dirección Local:Puerto Dirección Par:Puerto
tcp ESCUCHANDO 0 128 *:8080 *:*
-u es para UDP, -l filtra escuchas, -n evita resolución DNS.
Filtrar conexiones por estado
ss -t state established
# Ejemplo de salida:
Recibido-Q Enviado-Q Local:Puerto Par:Puerto
0 0 10.0.0.1:22 172.16.0.3:12345
Permite filtrar estados específicos como established, time-wait o closed.
Obtener información detallada de sockets y procesos
ss -tulnp
# Ejemplo de salida:
Netid Estado Recv-Q Send-Q Dirección Local:Puerto Dirección Par:Puerto Proceso
tcp ESCUCHANDO 0 128 *:8080 *:* usuarios:(("httpd",pid=5678,fd=3))
El parámetro -p requiere privilegios de root para mostrar datos del proceso.
Resumen estadístico de conexiones
ss -s
# Ejemplo de salida:
Total: 50 (kernel 65)
TCP: 12 (estab 7, closed 3, orphaned 1, timewait 4)
UDP: 5
Comparación de diferencias clave
| Característica | netstat | ss |
|---|---|---|
| Fuente de datos | Lee archivos en /proc/net | Accede al kernel vía netlink |
| Rendimiento | Menor, puede retrasarse con muchas conexiones | Alto, ideal para servidores con tráfico elevado |
| Complejidad funcional | Simple pero con limitaciones | Soporta filtros avanzados y análisis de estados TCP |
| Información de salida | Datos básicos de conexión | Metadatos detallados, como uso de memoria |
| Compatibilidad del sistema | Preinstalado en sistemas antiguos | Recmoendado para sistemas modernos (ej. CentOS 7+, Ubuntu 16+) |
| Visualización de procesos | Requiere opción -p | También la soporta, con formato más claro |
Escenarios de uso recomendados
Cuándo preferir ss
- Servidores de alta concurrencia: Necesitan estadísticas rápidas de miles de conexiones.
- Filtrado preciso: Permite seleccionar conexiones por estado, puerto o IP.
ss -t src 10.0.0.1 and dport = 8080
- Análisis de rendimiento TCP: Útil para inspeccionar métricas como la ventana de congestión.
ss -ti
Cuándo netstat puede ser necesario
- Sistemas antiguos o embebidos: Donde ss no está disponible por defecto.
- Visualización de tablas de enrutamiento: netstat -r ofrece una salida más intuitiva.
- Estadísticas de interfaces: netstat -i muestra tráfico de red por interfaz.
Ejemplos prácticos
Caso: Identificar el proceso en el puerto 8080
Con netstat:
netstat -tulnp | grep ':8080'
# Salida:
tcp6 0 0 :::8080 :::* ESCUCHANDO 5678/httpd
Con ss:
ss -tulnp | grep ':8080'
# Salida:
tcp ESCUCHANDO 0 128 *:8080 *:* usuarios:(("httpd",pid=5678,fd=3))
La salida de ss es más compacta e incluye el nombre del proceso y el descriptor de archivo.
Caso: Contar conexiones en estado ESTABLECIDA
Con netstat:
netstat -ant | grep ESTABLECIDA | wc -l
Con ss:
ss -t state established | wc -l
ss filtra directamente por estado, lo que resulta en una ejecución más eficiente.