En entornos de alta concurrencia o servidores de hosting con miles de peticiones simultáneas, herramientas tradicionales como netstat introducen un costo significativo de CPU al consultar /proc/net/tcp. La alternativa moderna y estándar en el kernel es ss (Socket Statistics), que extrae información directamente del espacio de kernel vía Netlink.
1. El Comando Esencial: Inspección Rápida
Para obtener una visión inmediata de todos los sockets TCP en escucha (-l), procesos asociados (-p), números de puerto sin resolución DNS (-n) y timers (-o):
ss -ntlp -o state listening
Si sospechas de un ataque de agotamiento de tabla de estados o SYN Flood:
ss -ant '( sport = :http or sport = :https )' | awk '{print $1}' | sort | uniq -c
2. Detección de Sockets Huérfanos y Reciclaje TCP
Cuando un servicio como NGINX o Apache experimenta picos de desconexión abrupta de clientes, muchos sockets quedan en estado TIME_WAIT o FIN_WAIT_1.
ss -s
La salida detallada mostrará:
- Total sockets: Conteo global en la tabla del kernel.
- TCP timewait: Número de conexiones esperando expiración del ciclo 2*MSL.
Regla de oro de Data Center: Nunca actives ciegamente
net.ipv4.tcp_tw_recycleen kernels antiguos (está deprecado y eliminado por romper conexiones detrás de NAT). La solución moderna es ajustartcp_tw_reusey verificar los descriptores de archivos consysctl fs.file-nr.
3. Captura selectiva en vivo con tcpdump
Cuando necesitas verificar si los paquetes SYN están llegando al switch o router upstream:
sudo tcpdump -ni eth0 "tcp[tcpflags] & (tcp-syn) != 0 and not src net 192.168.0.0/16" -c 50
Este comando filtra exclusivamente los paquetes que inician handshake TCP (SYN activado) provenientes de redes públicas, deteniéndose tras capturar 50 paquetes.