¿Cómo se usa el comando ss en Linux?
Hablamos sobre el uso del comando ss en Linux. Si no lo conoces te explico que tiene la intención de ser una navaja suiza, para ayudarnos a saber el estado de la red, buscando ser una reemplazo para herramientas clásicas como netstat.
Si consultamos su página de man, podemos leer que no es más que otra utilidad para investigar sockets y que se utiliza para volcar estadísticas de dichos sockets. Permite mostrar información similar a netstat (como hemos dicho antes)
Lo cierto es que yo soy más de herramientas clásicas como netstat, nslookup o ifconfig, pero es cierto que son herramientas que pronto quedarán obsoletas. En cambio otras como ip, dig o ss, serían su reemplazo.
La utilidad de línea de comandos ss puede mostrar estadísticas para sockets de dominio PACKET, TCP, UDP, DCCP, RAW y Unix. Podemos obtener información muy detallada sobre cómo nuestro servidor GNU/Linux se comunica con otras máquinas, redes y servicios; detalles sobre conexiones de red, estadísticas de protocolos de red y conexiones de socket. Con esta información en la mano, podemos solucionar varios problemas de red con mucha más facilidad.
La intención de esta entrada viene a raíz de un hilo de Twitter donde la compañera Érica Aguado nos hablaba de su experiencia con el trabajo de servidores con problemas y como utilizaba diferentes herramientas de línea de comandos:
Comandos geniales, que todo buen sysadmin conoce. Solo añadiría pstree.
— Érica Aguado (@erica_aguado) August 28, 2020
¿Has probado ss para monitorizar la red?
A raíz de esto me picó la curiosidad y creí que era interesante hablar de esta herramienta llamada ss.
Uso de ss en Linux
Vamos a mostrar los usos más habituales de este comando.
1. Listar todas las conexiones
Primero de todo tenemos el uso sin parámetros, simplemente escribiendo el nombre del comando:
ss
Con un resultado similar al siguiente:
De esta manera podemos ver todos las conexiones actuales en el host.
2. Listar todos los puertos
Podemos recuperar una lista de puertos de escucha y no escucha usando la opción -a como se muestra a continuación.
ss -a
Con un resultado en mi caso:
3. Listar únicamente los sockets que están escuchando
Con el parámetro -l nos muestra únicamente los sockets que están escuchando:
ss -l
Con el resultado:
4. Mostrar las conexiones TCP o UDP
Con el parámetro -t podemos listar todas las conexiones TCP y con -u todas las conexiones UDP.
ss -t
Con el resultado:
5. Listar todas las conexiones TCP o UDP
También podemos combinar el parámetro -l, que como hemos visto nos muestra los sockets, con los parámetros -t y -u, para que nos muestren las conexiones TCP o UDP
Por ejemplo:
ss -lt
Con el resultado:
6. Mostrar los PID de los procesos
Podemos mostrar los PID de los procesos utilizando el parámetro -p
como sigue:ss -p
Con el resultado:
7. Mostrar un resumen de las estadísticas
Podemos ver un resumen de la lista de conexiones. Puede ser útil cuando la cantidad de datos es tan grande que analizar los datos puede ser como un dolor de muelas.
ss -s
Con un resultado similar a este:
8. Mostrar las conexiones IPv4 o IPv6
Podemos ver únicamnete las conexiones IPv4 con el parámetro -4 o las conexiones IPv6 con el parámetro -6, como sigue:
ss -4
Con un resultado:
9. Mostras conexiones TCP sin resolución de nombres
Una de los usos más habituales que hago en netstat es con el parámetro -tn, que me mostrará las conexiones TCP sin intentar la resolución de nombres. Con ss los parámetros son los mismos, bueno, como la mayoría, la verdad. De esta manera podemos ver tanto la dirección local como la remota, en la conexión:
ss -tn
Una muestra de su uso:
10. Filtrar conexiones por el número de puerto
El comando ss también nos permite filtrar el número de puerto del socket o la dirección. En este ejemplo vemos como mostrar todas las conexiones de socket con un puerto de origen o destino de ssh, como sigue:
ss -at '( dport = :22 or sport = :22 )'
Con el resultado:
Y esto es todo, espero que esta entrada os sirva de utilidad de algún momento. Nos vamos leyendo.