Iftop: mostrar ancho de banda por interfaz en CentOS y RHEL

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».