Introducción
En la administración de sistemas Linux, conocer el estado de las conexiones de red es esencial para diagnosticar problemas, optimizar rendimiento y asegurar la seguridad. Durante años, la herramienta netstat ha sido el estándar, pero su desarrollo se ha detenido y presenta limitaciones en sistemas modernos.
¿Qué es ss?
El comando ss (socket statistics) forma parte del paquete iproute2 y ofrece una forma más rápida y detallada de inspeccionar sockets, TCP, UDP y otros protocolos. Aprovecha la interfaz Netlink del kernel, lo que le permite obtener información casi en tiempo real.
Instalación
En la mayoría de distribuciones modernas, iproute2 ya viene preinstalado. Si falta, basta con instalarlo desde el gestor de paquetes: en Debian/Ubuntu sudo apt-get install iproute2, en RHEL/CentOS sudo yum install iproute2 o en Fedora sudo dnf install iproute2.
Sintaxis básica
La forma más simple es ejecutar ss sin argumentos, lo que muestra una lista resumida de todos los sockets abiertos. Para obtener más detalle, se pueden añadir opciones como -t para TCP, -u para UDP y -a para incluir tanto sockets activos como en escucha.
Mostrar todas las conexiones
Para ver todas las conexiones TCP y UDP, se usa ss -a. Esta salida incluye el estado (ESTAB, LISTEN, etc.), la dirección local y remota, y el identificador del proceso cuando se combina con -p. Es útil para una visión general rápida del tráfico.
Filtrar por protocolo
Si solo te interesa TCP, ejecuta ss -t; para UDP, ss -u. Puedes combinar filtros, por ejemplo ss -tu muestra ambos protocolos. Además, -4 y -6 limitan la salida a IPv4 o IPv6 respectivamente.
Mostrar sockets en escucha
Los servicios que esperan conexiones aparecen en estado LISTEN. Con ss -l se listan solo esos sockets. Añadiendo -t o -u se obtienen los listeners TCP o UDP, lo que ayuda a verificar qué puertos están abiertos en el sistema.
Información de procesos
Para asociar cada socket con su proceso responsable, se usa la opción -p. Esto muestra el PID y el nombre del programa, lo que resulta indispensable cuando se necesita identificar qué aplicación está utilizando un puerto en particular.
Monitoreo en tiempo real
Al igual que netstat -c, ss permite una actualización continua con la opción -c. Cada segundo (o el intervalo especificado) se vuelve a leer la información, facilitando la detección de variaciones rápidas en el estado de las conexiones.
Comparación con netstat
Mientras que netstat lee información desde diversos archivos en /proc, lo que puede ser más lento en sistemas con muchas conexiones, ss consulta directamente al kernel vía Netlink, ofreciendo respuestas casi instantáneas. Además, su salida es más uniforme y sus opciones de filtrado son más potentes.
Opciones avanzadas
Entre las capacidades extra de ss se encuentran: -s para mostrar estadísticas resumidas, -i para información interna de TCP (como el algoritmo de congestión), y -p con filtros de proceso como ss -p 'pid = 1234'. También se pueden combinar con expresiones regulares para direcciones IP o puertos.
Solución de problemas comunes
Si al ejecutar ss obtienes un mensaje de permiso denegado, asegúrate de usar sudo para acceder a información de procesos de otros usuarios. En contenedores o entornos con restricciones de capacidad, puede ser necesario otorgar el privilegio CAP_NET_ADMIN para ver ciertos detalles.
Conclusión
El comando ss representa una evolución necesaria frente al antiguo netstat. Su velocidad, precisión y riqueza de opciones lo convierten en la herramienta predilecta para administradores de sistemas que buscan un monitoreo eficiente y moderno de la red en Linux.


