Cómo monitorear las conexiones de red en Linux con ss

Las utilidades de Linux son un salvavidas para los administradores de servidores cuando se trata de solucionar problemas y solucionar problemas de red. Antes, los administradores usaban el comando netstat para ver las estadísticas de la red y otra información relacionada con los sockets en Linux. Pero este comando ahora se ha desaprobado por una mejor herramienta.

El comando ss reemplazó a netstat ya que proporciona información más detallada que su predecesor. Este artículo demostrará cómo puede usar ss para extraer información relacionada con sockets de su sistema.

¿Qué es el comando ss?

El comando ss, abreviatura de estadísticas de socket, es una utilidad de Linux que muestra información relacionada con las conexiones de red en un formato detallado y legible por humanos. Puede usar ss para solucionar problemas y encontrar problemas con su red, ya que proporciona detalles completos sobre las conexiones.

Como se mencionó anteriormente, ss reemplazó a netstat, que era la utilidad original para listar estadísticas de sockets en Linux. El comando ss es fácil de usar, proporciona más información y ofrece resultados rápidos y precisos.

Cómo usar ss en Linux

Con ss, puede enumerar todas las conexiones de socket de su sistema. Además, también es posible filtrar las conexiones según el tipo, la dirección de destino y el número de puerto.

Sintaxis básica

La sintaxis básica del comando ss es:

 ss options

… donde opciones es la bandera que puede utilizar para invocar las funciones del comando.

El comando ss más simple muestra una lista de todas las conexiones establecidas, independientemente del tipo de conexión.

 ss

Producción:

Observe que en la imagen de arriba, la columna Estado contiene solo un valor, es decir, ESTAB, que denota una conexión establecida.

Encontrará los siguientes encabezados de columna en la salida:

  • Netid : indica el tipo de conector utilizado para la conexión. Los valores posibles son TCP, UDP, u_seq (secuencia Unix) y u_str (cadena Unix).
  • Estado : la columna Estado muestra el estado de la conexión. Encontrará valores como ESTAB, UNCONN y LISTEN, que significan establecido, desconectado y escucha, respectivamente.
  • Recv-Q : el número de paquetes recibidos presentes en la cola.
  • Send-Q : el número de paquetes enviados en la cola.
  • Dirección y puerto local: la dirección local de la máquina del usuario y el número de puerto.
  • Puerto y dirección del mismo nivel : la dirección de la máquina de destino y el número de puerto.

Obtenga una lista de todos los enchufes

Utilice la bandera -a para mostrar todos los sockets presentes en la red, escuchando o no escuchando.

 ss -a

Producción:

Lista de todas las tomas de escucha actuales

Para recuperar solo información relacionada con los sockets que están escuchando actualmente, use el indicador -l con el comando. La -l significa escuchar .

 ss -l

Ss mostrará todos los enchufes de escucha activos en su dispositivo o red. Tenga en cuenta que casi todos los conectores de la salida tienen un estado desconectado.

Tan pronto como un socket de escucha obtiene una conexión entrante, crea un socket secundario y lo usa para establecer la conexión. Luego puede usar la utilidad tcpdump de Linux para monitorear y filtrar paquetes en su red.

Mostrar conexiones TCP, UDP y Unix

En Linux, existen varios tipos de sockets, incluidos los sockets TCP, UDP y Unix. Puede enumerar todas las conexiones que pertenecen a un tipo de socket específico con ss.

Para enumerar todos los conectores TCP en su computadora:

 ss -t

Producción:

La bandera -u mostrará una lista de todos los sockets UDP:

 ss -u

Producción:

Para recuperar una lista de sockets Unix usando ss, use la bandera -x :

 ss -x

Producción:

De forma predeterminada, ss solo muestra los enchufes conectados. Para obtener una lista de todos los sockets, independientemente del estado de la conexión, use la bandera -a con el comando:

 ss -ta
ss -ua
ss -xa

Filtrar conexiones TCP mediante estado

Los sockets TCP tienen varios estados que puede utilizar para filtrar los resultados. Puede usar los siguientes estados de socket para filtrar las conexiones con ss: establecido, cerrado, escuchando, cerrando, todo, conectado, sincronizado, cubo, grande, tiempo de espera, etc.

El formato básico para filtrar conexiones TCP usando el estado de la conexión es:

 ss -t state filter

… donde filtro es el estado de las conexiones, por ejemplo, establecido.

Relacionado: Términos comunes de redes domésticas y su significado

Lista de conexiones IPv4 e IPv6

Puede usar los indicadores -4 y -6 para obtener una lista de sockets IPv4 e IPv6 en su dispositivo:

 ss -4
ss -6

Producción:

También puede utilizar el método de estado para filtrar sockets IPv4 e IPv6.

 ss -4 state established
ss -6 state established

Filtrar conexiones usando el número de puerto

Puede especificar los valores dport y sport en el comando ss para filtrar conexiones usando el número de puerto y el protocolo. Las opciones dport y sport representan el puerto de destino y el puerto de origen, respectivamente.

Para obtener información relacionada con las conexiones que tienen el puerto de origen 39700 o el puerto de destino https :

 ss -ta '( dport = :https or sport = :39700)'

Producción:

También puede utilizar el método de estado junto con el filtro de puerto para obtener resultados precisos:

 ss -ta state established '( dport = :https or sport = :https )'

Listar sockets sin procesar usando ss

Puede usar la marca -w o –raw para mostrar sockets sin procesar en su dispositivo:

 ss -w
ss --raw

Producción:

Mostrar conexiones con un dispositivo específico

Con ss, también puede mostrar una lista de conexiones con una dirección de destino específica.

 ss dst ipaddress

… donde ipaddress es la dirección del dispositivo de destino.

Por ejemplo:

Mostrar ID de proceso de las conexiones

Al solucionar problemas de una red, conocer el ID de proceso de la conexión problemática puede ayudar mucho.

Para mostrar los PID asociados con las conexiones TCP:

 ss -t -p

Ss también muestra el nombre de la aplicación que estableció la conexión.

Además, puede obtener información más detallada sobre el proceso utilizando el comando ps .

Obtenga un resumen de las estadísticas de la red

La marca -s permite al usuario ver el resumen general de su red o dispositivo. El resumen incluye el número de conexiones totales, el número y tipo de enchufes, etc.

 ss -s

Producción:

Más información: Por qué debería usar herramientas de red de Linux en WSL

Enviar la salida a un archivo

También puede guardar la salida del comando SS en un archivo para su posterior consulta usando el operador> salida.

 ss > output.txt

Producción:

Implementando ss con grep

Si desea filtrar los datos proporcionados por ss pero parece que no puede recordar el formato del comando, puede canalizar grep con ss para obtener los resultados deseados.

Por ejemplo, para obtener una lista de todas las conexiones TCP establecidas usando ss y grep:

 ss -t | grep ESTAB

Producción:

Supervisión de las conexiones de red en Linux

En Linux, hay un comando para todo. Desde crear archivos hasta monitorear redes, lo que sea. Pero con esta enorme colección de utilidades surge la pregunta de cuál es la mejor.

Aparte del lado del software de una computadora, los usuarios también deben conocer las especificaciones de hardware de su sistema. Hay varios comandos disponibles que permiten al usuario extraer fácilmente información relacionada con su sistema y hardware.