Mientras trataba de aislar un error en uno de mis servidores, me surgió la necesidad de capturar todo el tráfico de red proveniente desde y destinado hacia la dirección IP de un cliente específico. Ya que en un servidor no tengo la posibilidad de utilizar Wireshark, tuve que recurrir al viejo y querido tcpdump.



Para instalar tcpdump en Debian y derivados, ejecutar:

# apt-get install tcpdump

En Red Hat y derivados:

yum install tcpdump

tcpdump muestra por salida estándar una descripción del contenido de los paquetes que circulan a través de una interfaz de red. Pero a su vez tiene la capacidad de realizar un filtrado de acuerdo a diferentes expresiones. Adicionalmente puede guardar la captura en un archivo para analizar posteriormente.

El uso básico de tcpdump (por ejemplo para un caso como este, donde sólo necesitaba saber si existía tráfico de red entre el cliente y servidor) es muy simple. Sólo basta indicar una interfaz de red desde donde volcar:

# tcpdump -i eth0

Sin embargo, si no se realiza ningún tipo de filtrado, la salida puede ser abrumadora. Ni que hablar si estamos accediendo a través de una sesión SSH, donde se produce una realimentación infinita. Esto es a causa de la salida de tcpdump, la cual produce paquetes hacia el cliente SSH, los cuales generan más salida de tcpdump, que generan más paquetes, etcétera, etcétera. Por lo tanto es necesario aplicar algún tipo de filtrado.

Personalmente, necesitaba monitorear el tráfico específico en la interfaz eth0 desde y hacia un host determinado por su dirección IP, digamos 192.168.1.13. Para ese caso es posible utilizar la expresión host, de la siguiente forma:

# tcpdump -i eth0 host 192.168.1.13

Esta expresión capturará todo el tráfico asociado al host 192.168.1.13 (también es posible utilizar su nombre de host).

Si se quisiera capturar sólo el tráfico entrante originado o proveniente desde el host 192.168.1.13, es posible utilizar la expresión src:

# tcpdump -i eth0 src 192.168.1.13

Esta expresión capturará todo el tráfico proveniente desde el host 192.168.1.13.

De forma inversa, si se requiere capturar sólo el tráfico saliente hacia el host 192.168.1.13, es posible utilizar la expresión dst:

# tcpdump -i eth0 dst 192.168.1.13

Esta expresión capturará todo el tráfico hacia el host 192.168.1.13.

Para más información acerca de la expresiones de filtrado de tcpdump:

man tcpdump
man pcap-filter


Tal vez pueda interesarte


Compartí este artículo