Comment résoudre les problèmes de perte de paquets sur ma connexion VPN AWS ?

Date de la dernière mise à jour : 19/05/2021

J'ai des problèmes permanents ou occasionnels de perte de paquets et de latence élevée avec ma connexion AWS Virtual Private Network (AWS VPN). Quels tests puis-je effectuer pour m'assurer que le problème ne se produit pas à l'intérieur de mon Amazon Virtual Private Cloud (Amazon VPC) ?

Brève description

Les problèmes de perte de paquets varient selon les sauts de trafic Internet d'AWS VPN entre le réseau sur site et Amazon VPC. Il est recommandé d'isoler et de confirmer l'origine de la perte de paquets.

Solution

Vérifiez les hôtes source et destination pour les problèmes d'utilisation des ressources tels que CPUUtilization, NetworkIn/NetworkOut, NetworkPacketsIn/NetworkPacketsOut pour vérifier que vous n'atteignez pas les limites du réseau.

Utilisez MTR pour vérifier la perte de paquets ICMP ou TCP et la latence

MTR fournit une sortie actualisée en continu qui vous permet d'analyser les performances du réseau au fil du temps. Il combine les fonctionnalités de traceroute et de ping en un seul outil de diagnostic réseau.

Installez l'outil réseau MTR sur votre instance EC2 dans le VPC pour vérifier la latence et la perte de paquets ICMP ou TCP.

Amazon Linux :

sudo yum install mtr

Ubuntu :

sudo apt-get install mtr

Windows :

Téléchargez et installez WinMTR.

Remarque : Pour le système d'exploitation Windows, WinMTR ne prend pas en charge le MTR basé sur TCP.

Exécutez les tests suivants entre les adresses IP privées et publiques de vos instances EC2 et de votre hôte sur site de manière bidirectionnelle. Le chemin entre les nœuds d'un réseau TCP/IP peut changer lorsque la direction est inversée. Il est recommandé d'obtenir des résultats MTR dans les deux sens.

Remarque :

  • Assurez-vous que le groupe de sécurité et les règles NACL autorisent le trafic ICMP depuis l'instance source.
  • Assurez-vous que le port de test est ouvert sur l'instance de destination et que le groupe de sécurité et les règles NACL autorisent le trafic à partir de la source avec le protocole et sur le port.

Le résultat basé sur TCP détermine s'il y a une perte de paquets ou une latence liée à une application sur la connexion. La version 0.85 de MTR et les versions ultérieures disposent de l'option TCP.

Rapport sur l'hôte sur site de l'instance EC2 IP privée :

mtr -n -c 200

Rapport sur l'hôte sur site de l'instance EC2 IP privée :

mtr -n -T -c 200 -P 443 -m 60

Rapport sur l'hôte sur site de l'instance EC2 IP publique :

mtr -n -c 200

Rapport sur l'hôte sur site de l'instance EC2 IP publique :

mtr -n -T -c 200 -P 443 -m 60

Utilisez traceroute pour déterminer les problèmes de latence ou de routage

L'utilitaire traceroute de Linux identifie le chemin emprunté depuis un nœud client jusqu'au nœud de destination. L'utilitaire enregistre le temps en millisecondes nécessaire à chaque routeur pour répondre à la requête. L'utilitaire traceroute calcule également le temps que prend chaque saut avant d'atteindre sa destination.

Pour installer traceroute, exécutez les commandes suivantes :

Amazon Linux :

sudo yum install traceroute

Ubuntu :

sudo apt-get install traceroute

Adresse IP privée de l'instance EC2 et test de l'hôte sur site :

Amazon Linux :

sudo traceroute
sudo traceroute -T -p 80

Windows :

tracert
tracetcp

Remarque : Les arguments -T -p 80 -n effectuent une trace basée sur TCP sur le port 80. Assurez-vous que le port 80 ou le port que vous testez est ouvert dans les deux sens.

L'option traceroute de Linux permettant de spécifier un traçage basé sur TCP au lieu de ICMP est utile car la plupart des appareils Internet privent de priorité les demandes de traçage basées sur ICMP. Il est fréquent que des demandes expirent ; surveillez les pertes de paquets à destination ou au niveau du dernier saut de l'itinéraire. La perte de paquets sur plusieurs sauts peut indiquer un problème.

Remarque : Il est recommandé d'exécuter la commande traceroute dans les deux sens, du client au serveur, puis du serveur au client.

Utilisez hping3 pour déterminer les problèmes de latence et de perte de paquets TCP de bout en bout

Hping3 est un assembleur et analyseur de paquets TCP/IP utilisable en ligne de commandes qui mesure la latence et la perte de paquets de bout-en-bout sur une connexion TCP. En plus des requêtes d'écho ICMP, hping3 prend en charge les protocoles TCP, UDP et RAW-IP. Hping3 inclut également un mode traceroute qui peut envoyer des fichiers entre un canal couvert. Hping3 est conçu pour analyser les hôtes, contribuer à la réalisation de tests d’intrusion, tester les systèmes de détection d’intrusion et envoyer des fichiers entre hôtes.

MTR et traceroute capturent la latence par saut. Toutefois, hping3 récolte des résultats indiquant la latence min/moy/max bout-en-bout sur TCP en plus de la perte de paquets. Pour installer hping3, exécutez les commandes suivantes:

Amazon Linux :

sudo yum --enablerepo=epel install hping3

Ubuntu :

sudo apt-get install hping3

Exécutez les commandes suivantes :

hping3 -S -c 50 -V <Public IP of EC2 instance or on-premises host>
hping3 -S -c 50 -V <Private IP of EC2 instance or on-premises host>

Remarque : Par défaut, hping3 envoie des en-têtes TCP au port 0 de l'hôte cible avec un paramètre winsize de 64 sans aucune balise tcp activée.

Exemples de capture de paquets à l'aide de tcpdump ou Wireshark

La capture simultanée de paquets entre votre instance EC2 de test dans le VPC et votre hôte sur site lors de la duplication du problème aide à déterminer la présence de problèmes liés à la couche application ou réseau sur la connexion VPN. Vous pouvez installer tcpdump sur votre instance Linux ou Wireshark sur une instance Windows pour effectuer des captures de paquets.

Installer tcpdump sur Amazon Linux :

sudo yum install tcpdump

Installer tcpdump sur Ubuntu :

sudo apt-get install tcpdump

Installer Wireshark sur le système d'exploitation Windows :

Installez Wireshark et effectuez une capture de paquet.

Notification explicite de congestion (ECN)

Pour la connexion aux instances Windows, l'activation de l'ECN peut entraîner des pertes de paquets ou des problèmes de performances. Désactivez l'ECN pour améliorer les performances.

Exécutez la commande suivante pour déterminer si la fonctionnalité ECN est activée :

netsh interface tcp show global

Si la fonctionnalité ECN est activée, exécutez la commande suivante pour la désactiver :

netsh interface tcp set global ecncapability=disabled