Partager via


Résoudre les problèmes de réseau

Cet article décrit quelques outils permettant de diagnostiquer les problèmes de réseau de différentes complexités. Ces problèmes incluent des scénarios allant du dépannage d’une valeur de réponse inattendue d’un service à la cause profonde d’une exception de connexion fermée.

Pour la résolution des problèmes côté client, les bibliothèques clientes Azure pour Java proposent un scénario de journalisation cohérent et robuste, comme décrit dans Configurer la journalisation dans le kit de développement logiciel (SDK) Azure pour Java. Toutefois, les bibliothèques clientes effectuent des appels réseau via différents protocoles, ce qui peut entraîner des scénarios de résolution des problèmes sortant de l’étendue fournie. Lorsque ces problèmes se produisent, la solution consiste à utiliser les outils externes décrits dans cet article pour diagnostiquer les problèmes de réseau.

Fiddler

Fiddler est un proxy de débogage HTTP qui permet aux requêtes et aux réponses qui y transitent d’être enregistrées telles quelles. Les requêtes et réponses brutes que vous capturez peuvent vous aider à dépanner des scénarios dans lesquels le service obtient une requête inattendue, ou le client reçoit une réponse inattendue. Pour utiliser Fiddler, vous devez configurer la bibliothèque de client avec un proxy HTTP. Si vous utilisez HTTPS, vous avez besoin d’une configuration supplémentaire pour inspecter les corps de requête et de réponse déchiffrés.

Ajouter un proxy HTTP

Pour ajouter un proxy HTTP, suivez les instructions dans Configurer des proxies dans le kit de développement logiciel (SDK) Azure pour Java. Veillez à utiliser l’adresse Fiddler par défaut localhost sur le port 8888.

Activer le déchiffrement HTTPS

Par défaut, Fiddler peut capturer uniquement le trafic HTTP. Si votre application utilise le protocole HTTPS, vous devez effectuer des étapes supplémentaires pour approuver le certificat de Fiddler afin de lui permettre de capturer le trafic HTTPS. Pour plus d’informations, consultez Menu HTTPS dans la documentation Fiddler.

Les étapes suivantes vous montrent comment utiliser l’environnement Java Runtime (JRE) pour approuver le certificat. Si le certificat n’est pas approuvé, une requête HTTPS via Fiddler peut échouer avec des avertissements de sécurité.

  1. Exportez le certificat de Fiddler.

  2. Recherchez le keytool de JRE (généralement dans jre/bin).

  3. Recherchez le certificat cacert de JRE (généralement dans jre/lib/security).

  4. Ouvrez une fenêtre Bash et utilisez la commande suivante pour importer le certificat :

    sudo keytool -import -file <location-of-Fiddler-certificate> -keystore <location-of-cacert> -alias Fiddler
    
  5. Entrez un mot de passe.

  6. Approuvez le certificat.

Wireshark

Wireshark est un analyseur de protocole réseau qui peut capturer le trafic réseau sans avoir à modifier le code de l’application. Wireshark est hautement configurable et peut capturer un trafic réseau large à spécifique de faible niveau. Cette capacité est utile pour dépanner des scénarios tels qu’un hôte distant fermant une connexion ou ayant des connexions fermées pendant une opération. L’interface graphique utilisateur Wireshark affiche des captures à l’aide d’un modèle de couleurs qui identifie des cas de capture uniques, tels qu’une retransmission TCP, RST, etc. Vous pouvez également filtrer les captures au moment de la capture ou au cours de l’analyse.

Configurer un filtre de capture

Les filtres de capture réduisent le nombre d’appels réseau capturés pour l’analyse. Sans filtres de capture, Wireshark capture tout le trafic qui passe par une interface réseau. Ce comportement peut produire des quantités massives de données dont la majeure partie peut être du bruit pour l’investigation. L’utilisation d’un filtre de capture permet d’étendre de manière préventive le trafic réseau capturé pour aider à cibler une investigation. Pour plus d’informations, consultez Capture de données réseau dynamiques dans la documentation Wireshark.

L’exemple suivant ajoute un filtre de capture pour capturer le trafic réseau envoyé ou reçu à partir d’un hôte spécifique.

Dans Wireshark, accédez à Capture Capture > Filters... et ajoutez un nouveau filtre avec la valeur host <host-IP-or-hostname>. Ce filtre capture uniquement le trafic vers et depuis cet hôte. Si l’application communique avec plusieurs hôtes, vous pouvez ajouter plusieurs filtres de capture, ou vous pouvez ajouter l’IP/nom de l'hôte avec l’opérateur « OR » pour fournir un filtrage de capture plus souple.

Capturer sur le disque

Vous pouvez avoir besoin d'exécuter une application pendant une longue période pour reproduire une exception de mise en réseau inattendue, et pour voir le trafic qui y mène. En outre, il peut ne pas être possible de conserver toutes les captures en mémoire. Heureusement, Wireshark peut enregistrer des captures sur le disque afin qu’elles soient disponibles pour le post-traitement. Cette approche permet d’éviter le risque de manquer de mémoire pendant la reproduction d’un problème. Pour plus d’informations, consultez Entrée, sortie et impression d’un fichier dans la documentation Wireshark.

L’exemple suivant configure Wireshark pour conserver les captures sur le disque avec plusieurs fichiers, où les fichiers fractionnés sur 100 000 captures ou 50 Mo taille.

Dans Wireshark, accédez à Options de capture > et recherchez l’onglet Sortie, puis entrez un nom de fichier à utiliser. Cette configuration entraîne la persistance des captures par Wireshark dans un seul fichier.

Pour activer la capture dans plusieurs fichiers, sélectionnez Créer automatiquement un nouveau fichier, puis sélectionnez après 100 000 paquets et après 50 mégaoctets. Cette configuration a Wireshark pour créer un fichier lorsque l’un des prédicats est mis en correspondance. Chaque nouveau fichier utilise le même nom de base que le nom de fichier entré et ajoute un identificateur unique.

Si vous souhaitez limiter le nombre de fichiers que Wireshark peut créer, sélectionnez Utiliser une mémoire tampon en anneau avec X fichiers. Cette option limite Wireshark à la journalisation avec uniquement le nombre spécifié de fichiers. Lorsque ce nombre de fichiers est atteint, Wireshark commence à remplacer les fichiers, en commençant par le plus ancien.

Filtrer les captures

Parfois, vous ne pouvez pas étendre étroitement le trafic que Wireshark capture, par exemple, si votre application communique avec plusieurs hôtes à l’aide de différents protocoles. Dans ce scénario, généralement avec l’utilisation de la capture persistante décrite précédemment, il est plus facile d’exécuter l’analyse après la capture réseau. Wireshark prend en charge la syntaxe de type filtre pour l’analyse des captures. Pour plus d’informations, consultez Utilisation des paquets capturés dans la documentation Wireshark.

L’exemple suivant charge un fichier de capture et des filtres persistants sur ip.src_host==<IP>.

Dans Wireshark, accédez à Fichier > Ouvert et chargez une capture persistante à partir de l’emplacement de fichier utilisé précédemment. Une fois le fichier chargé sous la barre de menus, une entrée de filtre s’affiche. Dans l’entrée de filtre, entrez ip.src_host==<IP>. Ce filtre limite l’affichage de capture afin qu’il affiche uniquement les captures où la source provient de l’hôte avec l’adresse IP <IP>.

Étapes suivantes

Cet article a abordé l’utilisation de différents outils pour diagnostiquer les problèmes de mise en réseau lors de l’utilisation du Kit de développement logiciel (SDK) Azure pour Java. Maintenant que vous êtes familiarisé avec les scénarios d’utilisation de haut niveau, vous pouvez commencer à explorer le kit de développement logiciel (SDK) lui-même. Pour plus d’informations sur les API disponibles, consultez le kit de développement logiciel (SDK) Azure pour les bibliothèques Java.