iftop es una herramienta disponible en los repositorios EPEL de CentOS y RHEL que permite mostrar la utilización de ancho de banda por interfaz y host, escuchando en la interfaz indicada por parámetro y recopilando todos los datos del tráfico de red (puerto, IP/host, ancho de banda utilizado…). En su día también os enseñé otra herramienta de estadísticas y monitorización de red similar llamada iptraf que también cumple con funciones muy similares a la de iftop, quizás es un poco más avanzada.
Mediante parámetros se puede establecer filtros y personalizar la salida del comando. Podemos por ejemplo analizar el tráfico de una interfaz con origen o destino una IP o segmento de red concreto, ejecutar la herramienta en modo promiscuo para analizar el tráfico de red que no pasa directamente por la interfaz especificada, etc.
Instalación de iftop
Para instalar iftop, simplemente ejecutad la instalación vía yum:
# yum install iftop
Utilización de iftop
El modo más básico de utilizar el comando es ejecutándolo sin parámetros (escuchará en la primera interfaz de red que encuentre) o pasando como parámetro «-i» la interfaz de red sobre la que analizar el tráfico:
iftop -i enp0s3
La salida es similar a lo siguiente. Aunque no lo veis bien, aparece una barra de progreso indicando el tráfico de cada conexión y en la parte superior aparecen las cifras en Kb:
12,5Kb 25,0Kb 37,5Kb 50,0Kb 62,5Kb └──────────────────────┴───────────────────────┴───────────────────────┴───────────────────────┴─────────────────────── centos7VM => 192.168.1.62 2,16Kb 20,2Kb 17,5Kb <= 416b 3,08Kb 2,64Kb centos7VM => 10.111.2.52 0b 169b 141b <= 0b 313b 261b centos7VM => 192.168.1.101 0b 64b 53b <= 0b 96b 80b ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── TX: cum: 26,6KB peak: 83,5Kb rates: 2,16Kb 20,5Kb 17,7Kb RX: 4,46KB 12,2Kb 416b 3,48Kb 2,97Kb TOTAL: 31,1KB 95,8Kb 2,56Kb 24,0Kb 20,7Kb
Para evitar que convierta las IPs en hostname utilizamos el parámetro «-N». También podemos indicar que se muestre el puerto sobre el que se está generando el tráfico, tanto especificando el servicio o con el identificador numérico:
# iftop -i enp0s3 -n -P
12,5Kb 25,0Kb 37,5Kb 50,0Kb 62,5Kb └──────────────────────┴───────────────────────┴───────────────────────┴───────────────────────┴─────────────────────── 192.168.1.114:ssh => 192.168.1.62:51297 1,33Kb 1,28Kb 1,53Kb <= 208b 208b 224b 192.168.1.255:db-lsp-disc => 192.168.1.61:db-lsp-disc 0b 0b 0b <= 1,22Kb 250b 96b 255.255.255.255:db-lsp-disc => 192.168.1.61:db-lsp-disc 0b 0b 0b <= 1,22Kb 250b 96b 192.168.1.114:netbios-ssn => 192.168.1.101:49135 0b 32b 12b <= 0b 48b 18b 192.168.1.114:microsoft-ds => 192.168.1.101:45419 0b 32b 12b <= 0b 48b 18b 192.168.1.255:ipp => 192.168.1.100:ipp 0b 0b 0b <= 0b 0b 361b ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── TX: cum: 5,13KB peak: 3,09Kb rates: 1,33Kb 1,34Kb 1,58Kb RX: 2,83KB 3,19Kb 2,65Kb 805b 891b TOTAL: 7,96KB 4,52Kb 3,98Kb 2,13Kb 2,45Kb
Para establecer filtros utilizamos el parámetro «-F». En el siguiente ejemplo filtramos sólo el tráfico del segmento de red 192.168.1.0/24:
# iftop -i enp0s3 -F 192.168.1.0/255.255.255.0
Por defecto, la interfaz en la que se muestran los datos a tiempo real está basada en ncurses, si preferimos la salida en texto lo podemos especificar utilizando el parámetro «-t»:
# iftop -i enp0s3 -n -P -t interface: enp0s3 IP address is: 192.168.1.114 MAC address is: 08:00:27:ffffff99:fffffff6:7a Listening on enp0s3 # Host name (port/service if enabled) last 2s last 10s last 40s cumulative -------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------- Total send rate: 0b 0b 0b Total receive rate: 0b 0b 0b Total send and receive rate: 0b 0b 0b -------------------------------------------------------------------------------------------- Peak rate (sent/received/total): 0b 0b 0b Cumulative (sent/received/total): 0B 0B 0B ============================================================================================ # Host name (port/service if enabled) last 2s last 10s last 40s cumulative -------------------------------------------------------------------------------------------- 1 192.168.1.114:ssh => 4,28Kb 2,14Kb 2,14Kb 1,07KB 192.168.1.62:51297 <= 416b 208b 208b 104B -------------------------------------------------------------------------------------------- Total send rate: 4,28Kb 2,14Kb 2,14Kb Total receive rate: 416b 208b 208b Total send and receive rate: 4,69Kb 2,34Kb 2,34Kb -------------------------------------------------------------------------------------------- Peak rate (sent/received/total): 4,28Kb 416b 4,69Kb Cumulative (sent/received/total): 1,07KB 104B 1,17KB ============================================================================================
También hay opciones y atajos de teclado durante la ejecución en ncurses, por ejemplo podemos pausar la ejecución tecleando «P» mayúscula, así podemos analizar el tráfico en un momento dado:
Display paused 12,5Kb 25,0Kb 37,5Kb 50,0Kb 62,5Kb └──────────────────────┴───────────────────────┴───────────────────────┴───────────────────────┴─────────────────────── 10.111.1.114:ssh => 10.111.1.62:51297 3,09Kb 3,09Kb 3,09Kb
En caso de que aparezcan muchos hosts por pantalla, el scroll se realiza con las teclas «j» y «k».