Examinando las conexiones de red con el comando ss

La llegada de la suite de utilidades iproute2 a Linux, supuso que un buen número de herramientas diseñadas para el análisis de red quedaran obsoletas y otras tomaran su lugar.

Entre ellas ss, que no se refiere a las Schutzstaffel nazis, sino a un interesante comando (socket status), llamado a sustituir a netstat. Al igual que este, nos muestra las estadísticas de las conexiones actuales de red y puertos abiertos.

Si invocamos el comando en su forma más sencilla, nos muestra todas las direcciones y puertos (tanto en modo escucha, como no):

ss -a

Para mostrar únicamente las conexiones IPv4:

ss -4

De manera similar si hablamos de las IPv6:

ss -6

Las conexiones TCP:

ss -ta

O las del protocolo UDP:

ss -ua

Si queremos especificar y que nos muestre solo los sockets que tienen status «listen» (escucha). Para el protocolo TCP sería:

ss -ltn

Y en el caso de las conexiones UDP «listen»;

ss -lun

Para incrementar el nivel de detalle en las diferentes combinaciones de comandos tenemos el parámetro -e:

ss -ae

Vamos a hacer la cosa algo más interesante. Para empezar mostremos las aplicaciones que están conectadas a internet en este momento, incluyendo además su PID:

ss -p

Veamos el consumo de memoria de los diferentes sockets:

ss -m

Comprobemos ahora si hay alguna conexión SSH:

ss -o state established '( dport = :ssh or sport = :ssh )'

De tipo SMTP:

ss -o state established '( dport= :smtp or sport= :smtp )'

o las habituales HTTP:

ss -o state established '( dport = :http or sport = :http )'

A continuación examinemos las estadísticas generales:

ss -s

Filtremos lo que pasa en un puerto determinado:

ss -n dst :443

O varios de ellos:

ss -nt '( dst :443 or dst :80 )'

Examinemos ahora como estamos conectados a una dirección ip específica. Este comando nos muestra información sobre la cantidad de paquetes enviados/recibidos, el tipo de conexión o todos los puertos involucrados.

ss dst 216.58.214.174

Y por último vamos a ver las conexiones TCP activas en tiempo real. Para ello tiramos del siempre útil «watch» y lo combinamos tal que así:

watch ss -tp

Da bastante juego este comando ss, así que si os interesa el tema, os recomiendo que le echéis un vistazo al manual:

man ss

En el encontrareis muchas más opciones avanzadas de ejecución, incluyendo las que permiten filtrar por todo tipo de estados (closing, syn-sent, syn-recv, established, time-wait, etc) y conexiones.

17 comentario en “Examinando las conexiones de red con el comando ss”

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.