Linux viene equipado con una plétora de utilidades de red para elegir. tcpdump es una de esas poderosas herramientas de red que puede capturar y analizar el tráfico de red en caso de que necesite solucionar errores de red en Linux.
Pongámonos manos a la obra con el comando tcpdump y exploremos cómo usarlo para capturar el tráfico de la red.
Instalación de tcpdump en Linux
tcpdump generalmente viene preinstalado con todas las distribuciones principales de Linux y alternativas basadas en la seguridad. Por lo tanto, debería poder usarlo de inmediato escribiendo volcado tcp con un sudo prefijo.
En caso de que no pueda ejecutar el comando tcpdump y esté atascado en el "tcpdump: comando no encontrado" error, aprendamos cómo instalar tcpdump en su máquina Linux.
Para instalar tcpdump, inicie la terminal y ejecute el comando correspondiente a la distribución de Linux que está utilizando actualmente:
En los derivados de Debian/Ubuntu, ejecute:
sudo apt-obtener instalar tcpdump
En Sistemas basados en arco, correr:
sudo pacman -S tcpdump
Para instalar la utilidad tcpdump en Fedora, CentOS y RHEL, emita el siguiente comando:
sudo dnf Instalar en pc volcado tcp
Tenga en cuenta que si se le pide que instale librería, escribir Sí o Y ya que es una dependencia central, sin la cual tcpdump se negará a iniciarse. Esto debería instalar la utilidad tcpdump y resolver el error "comando no encontrado".
Ahora que tcpdump se ha instalado en su sistema, exploremos las diferentes opciones y funcionalidades que ofrece.
Captura de tráfico de red con tcpdump
tcpdump ofrece muchos indicadores para modificar su ejecución, pero también se puede ejecutar como un comando independiente. Sin embargo, ejecutar tcpdump sin banderas o argumentos estaría desaprovechando todo su potencial. Siempre es mejor usar algunas banderas para modificar la ejecución y la salida según sea necesario.
Escriba este comando para monitorear las transmisiones de red con tcpdump:
sudo tcpdump
Ahora tcpdump comenzará a capturar paquetes de red automáticamente hasta que una señal de interrupción se envía con Control + Z para romper el proceso manualmente. Para limitar el número total de paquetes capturados, utilice el -C marque y escriba el límite deseado de paquetes junto a él:
sudo tcpdump -c 5
Si no puede dar sentido a la salida en este momento, necesita familiarizarse con el formato de salida tcpdump primero.
Compruebe las interfaces de red disponibles con tcpdump
De forma predeterminada, tcpdump captura el tráfico de cualquiera de las interfaces de red disponibles. Si tiene varias interfaces de red activas en uso, es posible que desee definir la interfaz de red desde la cual tcpdump debería capturar paquetes. Para iniciar tcpdump en una interfaz específica, primero deberá conocer el nombre de la interfaz.
Aquí se explica cómo enumerar todas las interfaces de red disponibles con tcpdump:
sudo tcpdump -D
O bien, puede agregar el --lista-interfaces bandera al comando:
sudo tcpdump --lista-interfaces
El resultado devuelto contiene una lista de todas las interfaces de red activas que tcpdump puede escuchar. Para configurar tcpdump para capturar transmisiones desde una interfaz de red en particular, escriba este comando:
sudo tcpdump -i interface_id
O bien, puede agregar el --interfaz bandera al comando:
sudo tcpdump --interfazid_interfaz
Ahora que hemos capturado algunos paquetes, estudiémoslos de cerca y aprendamos cómo puede modificar la salida para que sea más legible.
Explorando filtros tcpdump
tcpdump es capaz de capturar una cantidad abrumadora de tráfico en una sola ejecución. Tal sobrecarga de información puede desviarlo al investigar o solucionar problemas con un protocolo de red o host específico.
Aquí es donde entran en juego los filtros tcpdump. Puede agregar el comando tcpdump con ciertos indicadores para filtrar el tráfico de la red y capturar paquetes específicos. Luego puede almacenar esos paquetes y luego analizarlos para llegar a la raíz de cualquier problema relacionado con la red. Aprendamos a usar filtros en tcpdump.
Filtrar paquetes según el protocolo de red en uso
Para filtrar los paquetes transmitidos a través de un protocolo específico, escriba el nombre del protocolo con el comando tcpdump y solo capturará los paquetes que viajen a través del protocolo de red definido.
Por ejemplo, para capturar paquetes basados en ICMP, simplemente adjuntaría ICMP al final del comando tcpdump. El proceso es el mismo si desea capturar solo paquetes UDP o TCP.
sudo tcpdump-c 5 icmp
Este comando solo devolverá la salida si hay un intercambio de datos a través del protocolo ICMP.
Filtrar paquetes según el host
Puede configurar tcpdump para capturar paquetes relacionados con un solo host con el anfitrión parámetro. Esto es especialmente útil cuando todos los sistemas de su red funcionan excepto uno. Este filtro le permite realizar una investigación específica y acelera el flujo de trabajo general de solución de problemas, ya que no se distrae con datos innecesarios.
Para capturar paquetes relacionados con un host específico, defina la dirección de red del host con el anfitrión parámetro:
sudovolcado tcp-C 5 anfitrión 192.168.2.1
Similar al filtro de protocolo de red, este comando solo devolverá la salida si alguna transmisión en curso está relacionada con el host definido.
Filtrar paquetes según el puerto activo
tcpdump está equipado con un parámetro que le permite filtrar el tráfico de red y capturar solo los paquetes que se transmiten hacia o desde un puerto específico.
Para capturar paquetes provenientes de un puerto específico, agregue el Puerto marca al comando tcpdump y define el número de puerto al lado. Por ejemplo, para capturar cualquier tráfico HTTP entrante o saliente, defina el puerto 80:
sudo tcpdump -c 5 puerto 80
tcpdump escuchará en el puerto 80, esperando transmisiones HTTP. Una vez que detecta paquetes HTTP en la red, los capturará.
Combine filtros para una clasificación avanzada
Las secciones anteriores discutieron cómo puede filtrar el tráfico según el puerto, el protocolo o el host, pero ¿qué pasa si quería capturar el tráfico de un solo puerto de un host específico usando una red particular ¿protocolo? Bueno, estás de suerte porque esto es posible, atribuyéndolo a la capacidad de usar operadores lógicos con el comando tcpdump.
Para capturar paquetes de un host individual usando el puerto 443, use este comando:
sudovolcado tcp-C 5 anfitrión 192.168.2.1yPuerto 443
Inspeccione el contenido de los paquetes capturados
De forma predeterminada, tcpdump muestra los encabezados de un paquete en la salida. Si bien es más que suficiente en la mayoría de los casos, a veces, es posible que desee o necesite profundizar en los datos capturados. Puede pasar ciertos parámetros con el comando tcpdump para inspeccionar el contenido del paquete capturado.
Aquí se explica cómo ver el contenido de los paquetes:
sudo tcpdump -c 5 -x
Este comando devuelve la versión hexadecimal del contenido de un paquete capturado. Si desea ver el formato ASCII de los datos, puede pasar el -A parámetro con:
sudo tcpdump -A
Guardar la salida de tcpdump en un archivo
Como casi cualquier otra herramienta de línea de comandos de Linux, puede almacenar la salida producida por tcpdump en un archivo al que se hará referencia más adelante.
Esto se puede hacer agregando el -w bandera al comando. Tras la ejecución, tcpdump almacenará los datos capturados en un .pcap archivo que luego se puede analizar con tcpdump u otras herramientas de monitoreo de red como Wireshark.
Escriba este comando para almacenar la salida de su comando tcpdump en un archivo:
sudovolcado tcp-wcaptura.pcap
para leer un .pcap archivo, puede usar tcpdump con el -r parámetro:
sudovolcado tcp-rcaptura.pcap
Linux viene con una plétora de herramientas de red que pueden resolver todos los problemas de la red, siempre que se trate del software. Saber cómo usar algunas de las mejores herramientas de red en Linux definitivamente será útil, ya sea que sea un administrador de sistemas que se gana la vida administrando redes o simplemente un usuario de Linux todos los días.
Dado que la lista real de comandos de red disponibles puede ser demasiado difícil de comprender, aquí hay una lista de algunas de las herramientas de red de Linux más importantes que debe conocer.