Magia linuxera: Medir y diagnosticar el tráfico de red.

Recientemente uno de mis proveedores de servicio de internet en un centro de computos me alerto sobre un excesivo uso de red en mis servidores linux.

Esta situación me llevó a tener que investigar sobre herramientas que me permitieran medir el tráfico generado por cada servicio en ejecución.

Dejo a continuación algunos tips que me permitieron diagnosticar y solucionar mi problema esperando que sean de utilidad a personas en situaciones similares.

Tip 1: Ver puertos a la escucha

En muchos casos desconocemos cuales son las aplicaciones que tenemos instaladas en nuestro servidor que están generando consumo. Si ese es el caso, podriamos visualizar una lista de aplicaciones que están a la escucha utilizando el comando:

sudo netstat -lptu

Notese que netstat, para algunos servicios conocidos, nos mostrará un nombre de servicio en lugar del numero de puerto, por ejemplo ‘http’ en lugar de ’80’.

Tip 2: Ver el tráfico de red general del equipo y los hosts remotos con mayor consumo

Si queremos saber cuanto tráfico está circulando en general por las interfaces de red de nuestro equipo y una lista de hosts remotos conectados a nuestro equipo ordenados por consumo podemos utilizar la herramienta iftop

iftop -n -i eth0

El parámetro -n es para que me muestre solo ips y no resuelva los reversos a hostnames.El parámetro -i eth0 restringe la medición a la interfáz de red eth0.

Tip 3: Ver que a que servicio está conectado un host determinado

Si en el listado anterior vemos un host que está consumiendo demasiado, probablemente queramos saber a que servicio está conectado dicho host.

Una de las herramientas que podriamos utilizar para este fin es tcpdump, una herramienta que nos permite ver que paquetes estan circulando por la red. Con el filtro adecuado podemos restringir el dump para ver solo lo que nos interesa. En nuestro caso nos interesa ver los paquetes dirigidos al host que está generando tráfico.

tcpdump -f 'dst host 192.168.1.50'

Tip 4: Ver el tráfico de red total para un determinado servicio

Tanto si sospechamos que un servicio está generando demasiado tráfico, como si efectivamente lo corroboramos en base a los tips anteriores; Podremos visualizar el tráfico total para ese puerto o servicio utilizando el comando:

iftop -n -i eth0 -f 'dst port 27015 || src port 27015'

En lugar del numero de puerto, podemos colocar los mismos nombres de servicio que nos devuelve netstat.
Por ejemplo:

iftop -n -i eth0 -f 'dst port http || src port http'