Solución de problemas de red con capturas de paquetes

Está solucionando un problema extraño de red o servicio, las cosas no van bien, los puertos están abiertos, el servicio está escuchando, pero algo sigue fallando. Más allá de verificar los conceptos básicos, la conectividad, los puertos y los servicios en ejecución, a veces solo necesita ver qué sucede en la red. Quédese y hablaremos sobre algunas formas en que puede espiar lo que sucede en la red o moverse hacia arriba y hacia abajo en su pila de aplicaciones.

¿Por qué capturar paquetes?

Las redes y los servicios pueden ser complejos. Un servicio se pone en contacto con otro para obtener información, luego ese servicio se pone en contacto con otra cosa, y así sucesivamente. Todo debe encajar. Las búsquedas de nombres y otros servicios dependientes deberían funcionar correctamente. También hay latencia. ¿No sería genial saber dónde se atasca una aplicación? Puede obtener parte de esta información de otras maneras, pero ver lo que sucede puede ser extremadamente útil. Además, si está en una red segura o segmentada, puede encontrar puertos bloqueados. El escaneo de puertos puede ser muy útil aquí.

Solo saber el pase no siempre es suficiente. Lo que le gustaría ver es exactamente por qué tráfico está pasando y qué está diciendo. Afortunadamente, existe una manera de espiar este tráfico y ver qué hay dentro de cada paquete. Esto se denomina detección de paquetes o captura de paquetes.

Capturar paquetes DHCP

Comencemos por determinar un servicio de prueba, luego veamos qué nos puede decir una captura de paquetes de ese servicio. vamos a usar DHCP como una buena prueba, ya que es fácil de seguir y está disponible para mí mientras escribo esto.

Te ahorraré el contexto sobre cómo DHCP funciona y lo resume un poco. Cuando un nuevo host configurado para usar DHCP se conecta, primero solicita una dirección IP a través de una transmisión (una solicitud enviada que verán todos los dispositivos activos con una dirección IP en esa subred). Si hay uno DHCP servidor disponible, este servidor responde. Su respuesta depende de si cree que puede asignar una dirección IP y si tiene direcciones IP disponibles en su grupo.

Puede probarlo usted mismo con una configuración básica de máquina virtual (VM). Tengo un invitado virtual ejecutándose en mi ordenador portátil, usando libvirt. Este invitado está configurado para obtener una dirección IP directamente de la red NAT configurada por libvirt, que también proporciona una DHCP servidor. Ejecuté una captura de paquetes usando tcpdump en mi máquina anfitriona mientras encendía mi máquina invitada. Hablaremos más sobre cómo usar el tcpdump orden en un momento.

Muestro los resultados con Wireshark, otra herramienta de la que hablaremos más adelante.

Lo primero que vemos en la captura de paquetes es un sistema sin dirección IP que solicita una dirección IP y luego nuestra DHCP el servidor responde. La respuesta, si profundiza un poco más, contiene toda la información que el sistema solicitante necesita para configurar su dirección IP local.

el Option: (xx) Los campos son varias piezas adicionales de información que DHCP servidor está configurado para proporcionar.

Así que puedes imaginar lo útil que es esta herramienta al solucionar un problema DHCP publicar. No solo puede ver su DHCP el servidor respondió pero respondió con! Si nunca has visto la inicial DHCPREQUEST, puede indicarle que su cliente no está conectado a la red correcta o tiene un problema de red. Si has visto el DHCPACK, pero alguna información parece incorrecta, puede intentar identificar un problema de configuración.

Usando tcpdump

Entonces, ¿cómo se realiza esta magia? No es terriblemente difícil. Todo lo que necesita para comenzar es una herramienta simple llamada tcpdump. Puedes obtenerlo de yum en un sistema RHEL. Una vez instalado, puede ver su amplia man página para obtener más información, pero los conceptos básicos son simples. Necesita privilegios de root para recopilar este tipo de información. Necesita saber en qué interfaz esperar tráfico (puede escuchar en todas las interfaces, pero se vuelve muy hablador), y querrá decidir cómo obtener los datos. En este caso, estoy escribiendo en un archivo. Usé el siguiente comando para mi ejemplo:

[[email protected] ~]$ sudo tcpdump -i virbr1 -w ./virt-interface1.pcap

Después de completar la tarea que está tratando de resolver, presione Ctrl-C para completar la captura. Debería obtener una salida que le diga cuántos paquetes tcpdump capturado:

[[email protected] ~]$ sudo tcpdump -i virbr1 -w ./virt-interface1.pcap
tcpdump: listening on virbr1, link-type EN10MB (Ethernet), capture size 262144 bytes
^C46 packets captured
54 packets received by filter
0 packets dropped by kernel

[[email protected] ~]$

Y deberías tener un archivo de salida:

[email protected] ~]$ ls -l virt-interface1.pcap
-rw-r--r--. 1 tcpdump tcpdump 5293 Mar  5 12:55 virt-interface1.pcap

Este archivo es binario, sin embargo, no puede simplemente cat y ver lo que hay dentro. Puedes leerlo con tcpdump, pero una herramienta más útil es algo como Wireshark (de nuevo, disponible a través de yum). instalarías Wireshark, luego cargue en el pcap archivar. Personalmente, ejecuto todos mis servidores sin una GUI, así que sigo Wireshark en mi estación de trabajo. Una vez que haya completado la captura de su paquete, cópielo en su estación de trabajo e impórtelo pcap entrar un momento Wireshark. Navegar a Archivo -> Abrir, luego seleccione su pcap archivar. Wireshark también puede hacer capturas de paquetes en vivo, pero tcpdump es mucho más conveniente cuando se trabaja con un servidor, ya que es posible que no tenga una GUI. La captura de paquetes incluye mucha más información que la que mostré anteriormente. La ventana completa se ve así:

Al hacer clic en un elemento de la lista de paquetes en el panel superior, obtiene una vista decodificada de los datos en el panel central. El panel inferior te muestra el hexágono sin procesar del mazo.

Las capturas de paquetes también son muy útiles para ayudar a los ingenieros cuando intentan ayudarlo a solucionar el comportamiento extraño de la red. Una captura de paquetes puede decirle cuánto tiempo tardó un recurso remoto en responder, con qué respondió y si esos datos se ven saludables o no.

Temas de seguridad

Tenga en cuenta, sin embargo, que las capturas de paquetes pueden contener cualquier cosa que el sistema en el que las está ejecutando pueda ver en la red, no solo lo que está disponible en su propia pila TCP. Si utilizo protocolos no cifrados, como telnet, HTTP, FTP, DNS o muchos otros, tcpdump puede espiar estos datos felizmente y guardarlos en su archivo. Wireshark también puede descodificar el tráfico cifrado con SSL y volver a ensamblarlo si puede proporcionarle un certificado. ¡Incluso puede reconstruir llamadas VoIP! Si un malhechor irrumpe en uno de sus sistemas y encuentra tcpdump, le agradecerán que deje a su disposición una herramienta tan valiosa. Por lo tanto, sería una buena idea eliminar tcpdump inmediatamente después de resolver el problema que está tratando de resolver.

Se pueden implementar ciertas protecciones a nivel de red para ayudar a evitar que un sistema capture todo el tráfico en una red determinada. Entonces, si le preocupa que los usuarios entrometidos husmeen los datos bancarios de sus compañeros de trabajo, no se preocupe, los conmutadores de red modernos desactivan el modo promiscuo para detener a estos malos actores.

Envoltura

Espero que haya encontrado esta una buena introducción a la solución de problemas de red con capturas de paquetes. Espero que pueda ver cuán valiosas y peligrosas pueden ser las capturas de paquetes.

Artículos de interés

Subir