Compartir a través de


Solución de problemas de red

En este artículo se describen algunas herramientas que pueden diagnosticar problemas de red de varias 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 solución de registro coherente y sólida, tal como se describe en Configurar el registro en el Azure SDK para Java. Sin embargo, las bibliotecas cliente realizan llamadas de red a través de varios protocolos, lo que puede dar lugar 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 consiste en usar las herramientas externas descritas en este artículo para diagnosticar problemas de red.

Violinista

Fiddler es un proxy de depuración HTTP que permite que las solicitudes y respuestas que pasan por él se registren as-is. Las solicitudes y respuestas sin procesar que capture pueden ayudarle a solucionar los escenarios en los que el servicio obtiene 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 la guía en Configurar proxies 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 la aplicación usa HTTPS, debe realizar pasos adicionales para confiar en el certificado de Fiddler para permitir que capture 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 la herramienta clave de JRE (normalmente en jre/bin).

  3. Busque el cacert de JRE (normalmente está 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 protocolo de red que puede capturar el tráfico de red sin necesidad de cambios en el código de la aplicación. Wireshark es altamente configurable y puede capturar tráfico de red, desde el más amplio hasta el más específico y de bajo nivel. Esta funcionalidad es útil para escenarios de solución de problemas, como un host remoto que cierra una conexión o tiene conexiones cerradas durante una operación. La GUI de Wireshark muestra capturas mediante una combinación de colores que identifica casos de captura únicos, como una retransmisión TCP, RST, etc. También puede filtrar las capturas en tiempo de 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 el análisis. Sin filtros de captura, Wireshark captura todo el tráfico que pasa por una interfaz de red. Este comportamiento puede producir grandes cantidades de datos en los que la mayor parte puede ser ruido para la investigación. El uso de un filtro de captura ayuda a limitar el ámbito del tráfico de red que se captura para orientar una investigación. Para obtener más información, consulte Captura de Datos de Red en Vivo en la documentación de Wireshark.

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

En Wireshark, vaya a Captura > 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 puede agregar la dirección IP o el nombre de host del host con el operador "OR" para proporcionar filtrado de captura 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 ver el tráfico que conduce a ella. Además, es posible que no sea posible mantener todas las capturas en la memoria. Afortunadamente, Wireshark puede registrar capturas en disco para que estén disponibles para el procesamiento posterior. Este enfoque evita el riesgo de quedarse sin memoria mientras reproduce un problema. Para obtener 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 Captura > Opciones y busque la pestaña Salida; luego, escriba el nombre de archivo que se usará. Esta configuración hace que Wireshark conserve las capturas en un único archivo.

Para habilitar la captura en varios archivos, seleccione Crear un nuevo archivo automáticamente y, a continuación, seleccione después de 100000 paquetes y después de 50 megabytes. Esta configuración hace que Wireshark cree un nuevo archivo cuando se cumple uno de los predicados. Cada nuevo archivo usa el mismo nombre base que el nombre de archivo especificado y anexa un identificador único.

Si desea limitar el número de archivos que Wireshark puede crear, seleccione Usar un búfer de anillo con archivos X. 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.

Capturas de filtro

A veces no puede limitar estrechamente el tráfico que Wireshark captura, por ejemplo, si la aplicación se comunica con varios hosts mediante varios 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 la sintaxis similar al filtro para analizar capturas. Para obtener más información, consulte Trabajar con paquetes capturados en la documentación de Wireshark.

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

En Wireshark, vaya a Archivo > Abrir 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 nivel alto, puede empezar a explorar el SDK. Para más información sobre las API disponibles, consulte las bibliotecas de Azure SDK para Java.