1. El Lenguaje BPF (El «Filtro VIP»)

bpf 1

El Berkeley Packet Filter es un lenguaje que vive en el núcleo del sistema. Su trabajo es descartar el tráfico irrelevante antes de que sature la CPU.

La estructura de un filtro

Un filtro se compone de identificadores acompañados de estos calificadores:

Type: ¿Qué es el ID? (host, net, port).

Dir: ¿Hacia dónde va? (src, dst).

Proto: ¿Qué protocolo usa? (tcp, udp, ip, icmp).

Ejemplos de BPF:

host 1.1.1.1 (Solo tráfico de esa IP).

src net 192.168.1.0/24 (Solo tráfico originado en esa red).

port 443 (Solo tráfico HTTPS).

Lógica: (host A or host B) and not port 22.


2. Las Flags (La «Cámara y Lente»)

Mientras que BPF elige los paquetes, las flags modifican cómo tcpdump captura y muestra esos datos.

FlagNombre¿Para qué sirve?
-iInterfaceElige la tarjeta de red (ej. -i eth0 o -i any).
-nNo-resolveFundamental. No traduce IPs a nombres. Es mucho más rápido.
-s 0SnaplenCaptura el paquete completo (sin recortes). Obligatorio para análisis profundo.
-AASCIIMuestra el contenido del paquete en texto legible. Útil para HTTP/APIs.
-XHex/ASCIIMuestra el contenido en Hexadecimal y Texto. Ideal para protocolos binarios.
-vVerboseMuestra detalles técnicos extra (TTL, Flags TCP, ID de IP).
-wWriteGuarda la captura en un archivo .pcap para abrirlo en Wireshark.
-rReadLee un archivo .pcap capturado previamente.

3. Combinándolo todo (Casos de uso Reales)

Aquí es donde ocurre la magia. Así es como se ve un comando profesional en la terminal:

A. Diagnóstico de tráfico Web en tiempo real

tcpdump -ni eth0 -s 0 -A port 80

Explicación: «Escucha en eth0 (-i), no resuelvas nombres (-n), captura el paquete entero (-s 0), muéstramelo en texto plano (-A) y solo si es del puerto 80 (port 80)».


B. Captura silenciosa para analizar en Wireshark

tcpdump -ni any -s 0 -w captura_red.pcap host 10.0.0.50

Explicación: «Escucha en todas las interfaces, no resuelvas nombres, captura todo el paquete y guárdalo en un archivo (-w) filtrando solo lo que toque a la IP 10.0.0.50″.


C. «Cirugía» de red: Ver solo inicios de conexión (SYN)

tcpdump -nn 'tcp[tcpflags] & (tcp-syn) != 0'

  •  

Explicación: Usa BPF avanzado para mirar dentro del byte de las banderas TCP y mostrar solo los intentos de conexión nueva.


Si el tráfico es muy pesado, usa siempre -n y -nn. Si no lo haces, el motor  intentará preguntar al servidor DNS por cada IP que vea, generando más tráfico de red y haciendo que la pantalla se congele o vaya con lag.