¿Qué es tcpdump y para qué sirve?
tcpdump es una herramienta de línea de comandos que captura paquetes que atraviesan una interfaz de red. Utiliza la biblioteca libpcap (o WinPcap en Windows) para acceder al tráfico sin necesidad de una interfaz gráfica. Es ideal para diagnosticar problemas de conectividad, inspeccionar protocolos y auditar la seguridad de una red.
Instalación
En la mayoría de distribuciones modernas tcpdump ya está disponible en los repositorios oficiales.
- Debian / Ubuntu:
sudo apt update && sudo apt install -y tcpdump - Fedora / RHEL / CentOS:
sudo dnf install -y tcpdump - Arch Linux:
sudo pacman -S tcpdump
Después de la instalación, verifica la versión con tcpdump -V. En sistemas basados en Unix es necesario ejecutar el comando con privilegios de root (por ejemplo, sudo).
Sintaxis básica
La forma genérica es:
tcpdump [OPCIONES] [FILTROS]
Si no se especifica ningún filtro, tcpdump mostrará todos los paquetes que vea la interfaz elegida.
Opciones más útiles
- -i <interfaz>: selecciona la interfaz (p. ej.
-i eth0o-i anypara todas). - -c <número>: captura sólo
npaquetes y termina. - -w <archivo.pcap>: escribe la captura en formato
pcappara análisis posterior. - -r <archivo.pcap>: lee una captura previamente guardada.
- -n: evita la resolución de nombres de host y puertos, acelerando la captura.
- -v, -vv, -vvv: incrementa la verbosidad, mostrando campos adicionales como TTL o opciones TCP.
- -X: muestra el contenido del paquete en hexadecimal y ASCII.
- -A: muestra sólo la parte ASCII del paquete.
- -s <bytes>: define el número máximo de bytes a capturar por paquete (0 = sin límite).
- -D: lista todas las interfaces disponibles.
Filtros y expresiones
Los filtros siguen la sintaxis de libpcap. Los más habituales son:
- host <IP>: paquetes cuyo origen o destino coincide con la IP.
- src host <IP> / dst host <IP>: origen o destino exclusivamente.
- net <red>/
: cualquier dirección dentro de la subred. - port <número>: puerto origen o destino.
- src port <número> / dst port <número>: filtrado unidireccional.
- proto <protocolo>:
tcp,udp,icmp, etc. - Combinaciones con operadores lógicos
and,or,noty paréntesis.
Ejemplos prácticos
A continuación se presentan los comandos más habituales. Todos los ejemplos se ejecutan con sudo para garantizar los permisos necesarios.
1. Capturar tráfico de una IP origen
sudo tcpdump -i eth0 src host 192.168.3.1
2. Capturar tráfico hacia o desde una IP concreta
sudo tcpdump -i any host 192.168.3.2
3. Filtrar por dirección MAC de destino
sudo tcpdump -i eth0 ether dst 50:43:A5:AE:69:55
4. Capturar una subred completa
sudo tcpdump -i eth0 net 192.168.3.0/28
5. Capturar tráfico en un puerto específico (ej. Telnet 23)
sudo tcpdump -i any dst port 23
6. Capturar sólo paquetes ICMP (ping)
sudo tcpdump -i eth0 icmp
7. Capturar tráfico HTTP (puerto 80)
sudo tcpdump -i any tcp and port 80
8. Capturar peticiones DNS (UDP, puerto 53)
sudo tcpdump -i any udp and dst port 53
9. Excluir tráfico web y mostrar todo lo demás
sudo tcpdump -i any not port 80
10. Guardar la captura en un archivo para análisis posterior
sudo tcpdump -i eth0 -w /tmp/captura.pcap -s 0
11. Leer una captura guardada y mostrarla en detalle
sudo tcpdump -r /tmp/captura.pcap -vv -X
Problemas habituales y soluciones
- Permiso denegado: ejecutar con
sudoo conceder al usuario el grupopcap(p. ej.sudo usermod -aG pcap $USER). - Demasiada salida: usar
-cpara limitar paquetes o-wpara guardar sin imprimir. - Resolución lenta de nombres: añadir
-npara evitar búsquedas DNS. - Captura incompleta: aumentar el snaplen con
-s 0(captura completa). - Interfaz no encontrada: listar interfaces con
tcpdump -Dy usar el nombre exacto.
Alternativas y complementos
Si prefieres una interfaz gráfica, Wireshark puede leer los archivos .pcap generados por tcpdump. En entornos Windows, la versión equivalente es WinDump, que utiliza la biblioteca WinPcap.

Con estos conceptos y ejemplos podrás comenzar a monitorizar tu red de forma eficaz, identificar cuellos de botella, detectar tráfico sospechoso y guardar evidencias para análisis técnicos posteriores.

Comentarios
2 responses to “Comando tcpdump en linux, ejemplos, opciones”