Compartir a través de


Solución de problemas de red

En este artículo se describen algunas herramientas con las que se pueden diagnosticar problemas de red de diversas complejidades. Estos problemas incluyen escenarios que van desde la solución de problemas con un valor de respuesta inesperado de un servicio hasta la causa principal de una excepción de cierre de conexión.

Para la solución de problemas del lado cliente, las bibliotecas cliente de Azure para Java ofrecen una historia de registro coherente y robusta, como se describe en Configuración del registro en Azure SDK para Java. Sin embargo, las bibliotecas cliente realizan llamadas de red a través de varios protocolos, lo que puede conducir a escenarios de solución de problemas que se extienden fuera del ámbito de solución de problemas proporcionado. Cuando se producen estos problemas, la solución pasa por usar las herramientas externas descritas en este artículo para diagnosticar los problemas de red.

Fiddler

Fiddler es un proxy de depuración HTTP que permite que las solicitudes y respuestas que pasan por él se registren tal cual. Las solicitudes y respuestas sin procesar que se capturan pueden ayudarle a solucionar problemas de escenarios en los que el servicio recibe una solicitud inesperada o el cliente recibe una respuesta inesperada. Para usar Fiddler, debe configurar la biblioteca cliente con un proxy HTTP. Si usa HTTPS, necesita una configuración adicional para inspeccionar los cuerpos de solicitud y respuesta descifrados.

Adición de un proxy HTTP

Para agregar un proxy HTTP, siga las instrucciones que se indican en Configuración de servidores proxy en Azure SDK para Java. Asegúrese de usar la dirección de Fiddler predeterminada de localhost en el puerto 8888.

Habilitación del descifrado HTTPS

De forma predeterminada, Fiddler solo puede capturar tráfico HTTP. Si su aplicación usa HTTPS, debe realizar otros pasos para confiar en el certificado de Fiddler y permitirle capturar el tráfico HTTPS. Para más información, consulte Menú HTTPS en la documentación de Fiddler.

Los pasos siguientes muestran cómo usar Java Runtime Environment (JRE) para confiar en el certificado. Si el certificado no es de confianza, es posible que se produzca un error en una solicitud HTTPS a través de Fiddler con advertencias de seguridad.

  1. Exporte el certificado de Fiddler.

  2. Busque el keytool de JRE (normalmente en jre/bin).

  3. Busque el cacert de JRE (normalmente en jre/lib/security).

  4. Abra una ventana de Bash y use el siguiente comando para importar el certificado:

    sudo keytool -import -file <location-of-Fiddler-certificate> -keystore <location-of-cacert> -alias Fiddler
    
  5. Escriba una contraseña.

  6. Confíe en el certificado.

Wireshark

Wireshark es un analizador de protocolos de red que puede capturar el tráfico de red sin necesidad de realizar cambios en el código de la aplicación. Wireshark es muy configurable y puede capturar tráfico de red de bajo nivel del más general al más específico. Esta funcionalidad es útil en escenarios de solución de problemas, como un host remoto que cierra una conexión o que tiene conexiones cerradas durante una operación. La GUI de Wireshark muestra las capturas mediante una combinación de colores que identifica los casos de captura únicos, como una retransmisión TCP, RST, etc. También se pueden filtrar las capturas en el momento de la captura o durante el análisis.

Configuración de un filtro de captura

Los filtros de captura reducen el número de llamadas de red que se capturan para su análisis. Sin filtros de captura, Wireshark captura todo el tráfico que pasa por una interfaz de red. Este comportamiento puede generar grandes cantidades de datos, donde la mayoría de ellos puede ser irrelevante para la investigación. El uso de un filtro de captura ayuda a establecer de forma preventiva el ámbito del tráfico de red que se va a capturar para dirigir una investigación. Para más información, consulte Captura de datos de red en directo en la documentación de Wireshark.

En el siguiente ejemplo se agrega un filtro de captura para capturar el tráfico de red enviado a un host específico o recibido de él.

En Wireshark, vaya a Capturar > filtros de captura... y agregue un nuevo filtro con el valor host <host-IP-or-hostname>. Este filtro captura el tráfico solo hacia y desde ese host. Si la aplicación se comunica con varios hosts, puede agregar varios filtros de captura; o bien, puede agregar la dirección IP o el nombre del host con el operador "OR" para proporcionar un filtrado de captura más flexible.

Captura en disco

Es posible que tenga que ejecutar una aplicación durante mucho tiempo para reproducir una excepción de red inesperada y para ver el tráfico que conduce a ella. Además, puede que no sea posible mantener todas las capturas en memoria. Afortunadamente, Wireshark puede registrar capturas en disco para que estén disponibles para el procesamiento posterior. Este enfoque evita el riesgo de que se agote la memoria mientras se reproduce un problema. Para más información, consulte Entrada, salida e impresión de archivos en la documentación de Wireshark.

En el ejemplo siguiente se configura Wireshark para conservar las capturas en el disco con varios archivos, donde los archivos se dividen en capturas de 100 000 o 50 MB de tamaño.

En Wireshark, vaya a Opciones de captura > y busque la pestaña Salida y escriba un nombre de archivo que se va a usar. Esta configuración hace que Wireshark conserve las capturas en un único archivo.

Para permitir la captura en varios archivos, seleccione Create a new file automatically (Crear un archivo automáticamente) y, luego, after 100000 packets (después de 100 000 paquetes) y after 50 megabytes (después de 50 megabytes). Esta configuración tiene Wireshark para crear un nuevo archivo cuando se coincide con uno de los predicados. Cada nuevo archivo usa el mismo nombre base que el nombre de archivo especificado y anexa un identificador único.

Si quiere limitar el número de archivos que puede crear Wireshark, seleccione Use a ring buffer with X files (Usar un búfer de cadena con X archivos). Esta opción limita Wireshark al registro con solo el número especificado de archivos. Cuando se alcanza ese número de archivos, Wireshark comienza a sobrescribir los archivos, empezando por el más antiguo.

Filtro de capturas

A veces no se puede establecer el ámbito estricto del tráfico que captura Wireshark; por ejemplo, si la aplicación se comunica con varios hosts con distintos protocolos. En este escenario, generalmente con el uso de la captura persistente descrita anteriormente, es más fácil ejecutar el análisis después de la captura de red. Wireshark admite sintaxis de tipo filtro para analizar las capturas. Para más información, consulte Uso de los paquetes capturados en la documentación de Wireshark.

En el ejemplo siguiente se carga un archivo de captura persistente y filtros en ip.src_host==<IP>.

En Wireshark, vaya a Abrir archivo> y cargue una captura persistente desde la ubicación del archivo usada anteriormente. Después de cargar el archivo debajo de la barra de menús, aparece una entrada de filtro. En la entrada de filtro, escriba ip.src_host==<IP>. Este filtro limita la vista de captura para que solo muestre las capturas donde el origen era del host con la dirección IP <IP>.

Pasos siguientes

En este artículo se trata el uso de varias herramientas para diagnosticar problemas de red al trabajar con el SDK de Azure para Java. Ahora que está familiarizado con los escenarios de uso de alto nivel, puede empezar a explorar el propio SDK. Para más información sobre las API disponibles, consulte las bibliotecas de Azure SDK para Java.