Comando tcpdump de Linux: cómo analizar paquetes en tu red

Con el comando de Linux tcpdump, puedes analizar los paquetes que se envían dentro de tu red. Para optimizar el análisis, puedes recurrir a una serie de opciones y filtros.

¿Para qué sirve el comando tcpdump de Linux?

tcpdump es una herramienta especialmente valiosa para analizar el tráfico de red en Linux y, en caso necesario, solucionar posibles problemas de red. Este programa de línea de comandos, que se encuentra preinstalado en la mayor parte de las distribuciones de Linux más conocidas (como Debian o Ubuntu), proporciona información sobre los paquetes de datos que han sido enviados o recibidos en tu red. A pesar de lo que su nombre pueda indicar, el comando tcpdump de Linux permite analizar, además de paquetes TCP, paquetes UDP e ICMP. No obstante, para usar este comando vas a necesitar permisos root.

¿Cómo funciona el comando tcpdump?

La función que realiza tcpdump se conoce como “sniffing”. Al utilizar el comando tcpdump en Linux, especificas la interfaz de red que el programa debe monitorizar. Además, podrás hacer uso de distintos filtros para adaptar y optimizar el proceso. El comando se ejecuta en la línea de comandos y es ahí donde se mostrarán los resultados correspondientes del análisis.

¿Cómo es la sintaxis de tcpdump?

La sintaxis de Linux tcpdump es muy simple y se corresponde con:

$ tcpdump [opciones] [filtros]
bash

Aunque no es necesario especificar ninguna opción, es recomendable hacerlo para asegurarte de que tcpdump tiene en cuenta la interfaz de red adecuada. Los filtros tampoco son obligatorios, pero si no se especifica ninguno, cpdump analizará todos los paquetes de todos los hosts, lo que puede generar una gran cantidad de información que haga difícil comprender y analizar los datos obtenidos.

¿Qué opciones y filtros se pueden usar con Linux tcpdump?

tcpdump se puede usar con gran variedad de opciones y filtros. Las opciones más importantes son las siguientes:

  • A: imprime el contenido de un paquete en ASCII.
  • c [cantidad]: tcpdump se detiene automáticamente tras analizar la cantidad especificada de paquetes.
  • D: con esta opción se muestra una lista de todas las interfaces disponibles.
  • i [Interfaz]: con esta opción se especifica la interfaz que se debe capturar.
  • s [cantidad]: establece cuántos bytes por paquete se deben capturar.

Con tcpdump se pueden usar los siguientes filtros:

  • dst: solo se analizan paquetes cuyo destino coincide con el valor establecido. Este valor puede ser host, net, port o portrange.
  • host: este filtro se ocupa de que solo se tengan en cuenta los paquetes que tienen una dirección IP específica como origen o destino, o en su lugar, un nombre de host específico.
  • net: este filtro solo considera los paquetes que tienen una dirección IP dentro de un rango de red específico como origen o destino.
  • port: con este filtro se especifica un puerto específico entre 0 y 65535, que se analizará de forma exclusiva.
  • portrange: este filtro contiene un rango de puertos entre 0 y 65535 que se analizará de forma exclusiva.
  • proto: este filtro solo considera los paquetes con un protocolo de red específico. El filtro puede tener los siguientes valores: arp, decnet, ether, fddi, ip, ip6, rarp, tcp, udp o wlan.
  • src: solo se analizan los paquetes cuyo origen coincide con un valor establecido. Este valor puede ser host, net, port o portrange.

Ejemplos para el comando tcpdump

Finalmente, te mostramos cómo puedes usar tcpdump. En el ejemplo que puedes encontrar a continuación, se usa un comando sudo de Linux.

$ sudo tcpdump -D
bash

De este modo puedes comprobar qué interfaces de red están disponibles.

$ sudo tcpdump -i wlx14a3c782966b
bash

De este modo, solo se analiza la interfaz del nombre especificado.

$ sudo tcpdump -c 5 -i wlx14a3c782966b
bash

De esta forma indicas que tcpdump solo incluya cinco paquetes.