Cómo analizar tráfico de red con tcpdump

Introducción

tcpdump es un potente analizador de paquetes de línea de comandos disponible en prácticamente todos los sistemas Linux. Captura y muestra paquetes de red en tiempo real, lo que lo convierte en una herramienta esencial para depurar problemas de conectividad, verificar reglas de firewall y analizar patrones de tráfico.

Instalación

sudo apt install tcpdump    # Debian/Ubuntu
sudo yum install tcpdump    # AlmaLinux/RHEL

Captura básica

sudo tcpdump

Esto captura todo el tráfico en la interfaz predeterminada. Presione Ctrl+C para detener.

Capturar en una interfaz específica

sudo tcpdump -i eth0

Listar interfaces disponibles

sudo tcpdump -D

Filtros comunes

Filtrar por host

sudo tcpdump host 203.0.113.50
sudo tcpdump src 203.0.113.50
sudo tcpdump dst 203.0.113.50

Filtrar por puerto

sudo tcpdump port 80
sudo tcpdump port 443
sudo tcpdump port 22

Filtrar por protocolo

sudo tcpdump icmp
sudo tcpdump tcp
sudo tcpdump udp

Combinar filtros

sudo tcpdump host 203.0.113.50 and port 443
sudo tcpdump src 10.0.0.1 and dst port 80
sudo tcpdump 'port 80 or port 443'

Filtrar por red (subred)

sudo tcpdump net 192.168.1.0/24

Opciones útiles

Opción Descripción
-c 100 Capturar solo 100 paquetes y detenerse
-n No resolver nombres de host (salida más rápida)
-nn No resolver nombres de host ni nombres de puertos
-v / -vv Salida detallada / muy detallada
-X Mostrar contenido del paquete en hexadecimal y ASCII
-A Mostrar contenido del paquete solo en ASCII (útil para HTTP)
-w archivo.pcap Guardar la captura en un archivo (para análisis posterior en Wireshark)
-r archivo.pcap Leer y analizar una captura guardada previamente

Ejemplos prácticos

Depurar tráfico HTTP

sudo tcpdump -i eth0 -A -nn port 80 -c 50

Capturar consultas DNS

sudo tcpdump -i eth0 -nn port 53

Verificar si el tráfico llega a su servidor en un puerto específico

sudo tcpdump -i eth0 -nn dst port 3306 -c 10

Si no aparecen paquetes, es probable que el tráfico esté siendo bloqueado por un firewall antes de llegar al servidor.

Guardar una captura para análisis posterior

sudo tcpdump -i eth0 -w /tmp/captura.pcap -c 1000

Puede abrir captura.pcap en Wireshark para un análisis gráfico.

Monitorear tráfico entre dos hosts

sudo tcpdump -i eth0 -nn host 10.0.0.1 and host 10.0.0.2

Interpretar la salida

10:30:45.123456 IP 203.0.113.50.54321 > 93.184.216.34.443: Flags [S], seq 1234567890, win 65535, length 0
Campo Significado
10:30:45.123456 Marca de tiempo
203.0.113.50.54321 IP y puerto de origen
93.184.216.34.443 IP y puerto de destino
Flags [S] Bandera TCP SYN (inicio de conexión)

Banderas TCP comunes

Bandera Significado
[S] SYN — Solicitud de conexión
[S.] SYN-ACK — Conexión aceptada
[.] ACK — Confirmación
[P.] PSH-ACK — Envío de datos
[F.] FIN-ACK — Cierre de conexión
[R] RST — Reinicio de conexión