Introducción

Hola Fronters 👋

Llegamos a la tercera entrega de nuestra serie sobre monitorización de hardware en Linux. Después de explorar la CPU y la memoria RAM, hoy toca el turno de la red. El monitoreo de red es fundamental para diagnosticar problemas de conectividad, detectar cuellos de botella, identificar puertos abiertos y analizar el tráfico en tiempo real.

Vamos a cubrir desde los comandos clásicos hasta herramientas modernas que todo administrador de sistemas debe conocer.

1. ifconfig e ip — Configuración de interfaces

Aunque ifconfig está en desuso, aún lo verás en muchos sistemas legacy. La herramienta moderna es ip del paquete iproute2:

$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

Con ip también puedes gestionar rutas y estadísticas:

$ ip route show
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100

$ ip -s link show eth0
    RX: bytes  packets  errors  dropped missed  mcast
    1254892345 1234567  0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    987654321  987654   0       0       0       0

2. netstat y ss — Conexiones activas y puertos

netstat es el clásico; ss es su reemplazo moderno y más rápido:

$ ss -tuln
State    Recv-Q   Send-Q     Local Address:Port     Peer Address:Port   Process
LISTEN   0        128              0.0.0.0:22            0.0.0.0:*
LISTEN   0        128                 [::]:80               [::]:*
LISTEN   0        128                 [::]:443              [::]:*

Explicación de flags:

  • -t: TCP
  • -u: UDP
  • -l: Solo sockets en escucha
  • -n: Sin resolución DNS (más rápido)
  • -p: Muestra el proceso asociado (requiere sudo)

Para ver conexiones activas:

$ ss -tna | head -10
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port
ESTAB     0         0            192.168.1.100:22          10.0.0.50:54321
ESTAB     0         0            192.168.1.100:443         203.0.113.5:45678
TIME-WAIT 0         0            192.168.1.100:80          198.51.100.20:37281

3. tcpdump — Captura de paquetes

Cuando necesitas ver el tráfico a nivel de paquete, tcpdump es insuperable:

$ sudo tcpdump -i eth0 -n port 80
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
04:30:00.123456 IP 203.0.113.5.45678 > 192.168.1.100.80: Flags [S], seq 123456789, win 65535, length 0
04:30:00.123789 IP 192.168.1.100.80 > 203.0.113.5.45678: Flags [S.], seq 987654321, ack 123456790, win 65535, length 0

Usos comunes:

  • tcpdump -i eth0 port 22 → tráfico SSH
  • tcpdump -i eth0 host 10.0.0.50 → tráfico hacia/desde una IP
  • tcpdump -i eth0 -w captura.pcap → guardar a archivo para análisis posterior
  • tcpdump -i eth0 -c 100 → capturar solo 100 paquetes

Tip: Combínalo con Wireshark para análisis visual de los archivos .pcap.

4. nethogs — Ancho de banda por proceso

¿Qué proceso está consumiendo todo el ancho de banda? nethogs te lo dice al instante:

$ sudo nethogs eth0
NetHogs version 0.8.7

    PID USER     PROGRAM                      DEV        SENT      RECEIVED
   2345 www-data /usr/sbin/apache2            eth0     1.234 MB/s   5.678 MB/s
   1234 mysql    /usr/sbin/mysqld             eth0     0.234 MB/s   0.567 MB/s
   3456 root     /usr/bin/ssh                 eth0     0.012 MB/s   0.034 MB/s
------------------------------------------------------

5. iftop — Tráfico por conexión

Mientras que nethogs muestra por proceso, iftop muestra por conexión:

$ sudo iftop -i eth0 -n
                   12.5Kb          25.0Kb          37.5Kb          50.0Kb
└──────────────────┴───────────────┴───────────────┴───────────────┴─────────────
203.0.113.5:45678     ─╮                    3.45Kb    5.67Kb    7.89Kb
192.168.1.100:443      ─╯
10.0.0.50:54321        ─╮                    1.23Kb    2.34Kb    3.45Kb
192.168.1.100:22       ─╯
─────────────────────────────────────────────────────────────────────────────────

6. nload — Ancho de banda total

Una herramienta simple y visual para ver el throughput de entrada y salida:

$ nload eth0
Device eth0 (1 Gbit/s):
  Incoming:                 Outgoing:
  Curr: 2.34 MB/s          Curr: 1.23 MB/s
  Avg:  3.45 MB/s          Avg:  2.10 MB/s
  Min:  0.12 MB/s          Min:  0.08 MB/s
  Max:  8.90 MB/s          Max:  6.78 MB/s
  Ttl:  1.23 GB            Ttl:  0.89 GB

7. bmon — Monitor bandwidth

bmon ofrece una vista consolidada con gráficos en tiempo real y estadísticas detalladas:

$ bmon -p eth0
eth0                           RX                                      TX
  bits/s                  2.34 MiB/s                             1.10 MiB/s
  packets/s               3456 p/s                               1678 p/s
  errors/s                   0 p/s                                  0 p/s
  total received           1.23 GiB
  total transmitted        0.89 GiB

8. iperf3 — Pruebas de throughput

Para medir el ancho de banda real entre dos máquinas, iperf3 es la herramienta definitiva:

En el servidor:

$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

En el cliente:

$ iperf3 -c 192.168.1.100 -t 10 -P 4
[  4] local 192.168.1.50 port 45678 connected to 192.168.1.100 port 5201
[  6] local 192.168.1.50 port 45679 connected to 192.168.1.100 port 5201
[  8] local 192.168.1.50 port 45680 connected to 192.168.1.100 port 5201
[ 10] local 192.168.1.50 port 45681 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bitrate         Retr
[  4]   0.00-10.00  sec  112 MBytes   94.0 Mbits/sec    0
[  6]   0.00-10.00  sec  110 MBytes   92.0 Mbits/sec    0
[  8]   0.00-10.00  sec  108 MBytes   91.0 Mbits/sec    1
[ 10]   0.00-10.00  sec  111 MBytes   93.5 Mbits/sec    0
[SUM]   0.00-10.00  sec  441 MBytes   370 Mbits/sec    1

Tip: Usa -P 4 (4 hilos paralelos) para saturar el enlace y medir el máximo real.

9. nmap — Escaneo básico

Si bien nmap es una herramienta de seguridad, su uso para diagnóstico de red es invaluable:

$ nmap -sn 192.168.1.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2026-05-16 10:00 -04
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Nmap scan report for 192.168.1.100
Host is up (0.0005s latency).
Nmap scan report for 192.168.1.150
Host is up (0.0020s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 3.45 seconds

Y para ver puertos abiertos en un servidor:

$ nmap -sT -p 1-1000 192.168.1.100
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.100
Host is up (0.0005s latency).
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
443/tcp  open     https
3306/tcp filtered mysql

10. /proc/net/dev — Estadísticas desde el kernel

Como todo en Linux, la información de red también está disponible en /proc:

$ cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo: 12345678  123456 0    0    0    0     0          0        12345678  123456 0    0    0    0     0       0
  eth0: 987654321 987654 0    0    0    0     0          0        456789012 456789 0    0    0    0     0       0

Útil para scripting — puedes hacer watch -n 1 'cat /proc/net/dev' para monitoreo continuo y parsear los valores con awk o python.

Conclusión

La monitorización de red en Linux es una habilidad esencial para cualquier sysadmin o DevOps. Hemos cubierto:

  • Configuración básica con ip y diagnóstico de interfaces
  • Conexiones y puertos con ss
  • Captura de paquetes con tcpdump
  • Ancho de banda por proceso (nethogs) y por conexión (iftop)
  • Throughput total (nload, bmon)
  • Pruebas de rendimiento con iperf3
  • Escaneo de dispositivos y puertos con nmap
  • Acceso directo a estadísticas del kernel via /proc/net/dev

En el próximo y último artículo de esta serie (Parte IV), veremos cómo monitorizar el almacenamiento en Linux. ¡No te lo pierdas!

Déjanos tus comentarios y comparte si te fue útil 🚀