Comment puis-je déterminer si mes requêtes DNS envoyées vers le serveur DNS fourni par Amazon échouent en raison de limitations DNS du VPC ?

Date de la dernière mise à jour : 31/03/2022

Mes requêtes DNS vers le serveur DNS fourni par Amazon échouent ou expirent. Les requêtes DNS de mon instance échouent-elles en raison de limitations DNS du VPC ?

Brève description

Les serveurs DNS fournis par Amazon appliquent une limite de 1 024 paquets par seconde par interface réseau Elastic. Les serveurs DNS fournis par Amazon rejettent tout trafic supérieur à cette limite.

Les journaux de flux VPC ne capturent pas le trafic que votre application envoie aux serveurs DNS fournis par Amazon. Vous pouvez utiliser les captures de paquets ou la mise en miroir du trafic pour identifier la cause des échecs des requêtes DNS.

Remarque : la journalisation des requêtes Amazon Route 53 capture uniquement le trafic qui atteint le résolveur VPC.2 (AmazonProvidedDNS). Cependant, les requêtes DNS sont limitées au niveau de l'interface réseau Elastic. Ainsi, les requêtes limitées n'apparaissent pas dans la journalisation des requêtes.

Solution

Commencez par utiliser l'une des méthodes suivantes pour identifier la source des échecs des requêtes DNS. Ensuite, si vous déterminez que la cause est la limitation DNS, utilisez l'une des solutions recommandées suivantes.

Déterminer la source des échecs des requêtes DNS

Option 1 : utiliser tcpdump (Linux uniquement)

1.    Utilisez la commande suivante pour effectuer des captures de paquets en rotation sur votre instance EC2. La commande suivante capture les 350 octets initiaux du paquet et enregistre 20 fichiers de 100 Mo chacun lors du remplacement des anciennes captures de paquet.

sudo tcpdump -i eth0 -s 350 -C 100 -W 20 -w /var/tmp/$(curl http://169.254.169.254/latest/meta-data/instance-id).$(date +%Y-%m-%d:%H:%M:%S).pcap

2.    Exécutez la commande Linux suivante pour trouver le nombre de requêtes DNS envoyées.

tcpdump  -r <file_name.pcap> -nn dst port 53 | awk -F " " '{ print $1 }' | cut -d"." -f1 | uniq -c

3.    Si le nombre de requêtes DNS est supérieur ou égal à 1 024 par seconde, toutes les requêtes supplémentaires sont limitées.

Option 2 : utiliser la mise en miroir du trafic

S'il n'est pas possible de prendre le tcpdump dans votre cas d'utilisation, vous pouvez tirer parti de la mise en miroir du trafic pour vérifier si les requêtes DNS sont limitées.

Remarque : la fonction de mise en miroir est disponible pour les instances basées sur Nitro et les types d'instance non-Nitro. Des frais de mise en miroir du trafic s'appliquent.

Commencez par capturer les données de trafic :

1.    Remplissez les prérequis de mise en miroir du trafic.

2.    Créez une cible pour le miroir du trafic. Vérifiez que l'interface réseau Elastic cible ou le Network Load Balancer autorise le trafic entrant sur le port UDP 4789.

3.    Créez un filtre pour le miroir du trafic. Pour Filter settings (Paramètres de filtre), vérifiez que amazon-dnsest activé pour Network services - optional (Services réseau – facultatif).

4.    Créez une session pour le miroir du trafic. Une fois que vous avez configuré la mise en miroir du trafic, le trafic mis en miroir est regroupé et stocké sur la cible pour le miroir du trafic.

Remarque : La mise en miroir du trafic est un flux de données en direct. Pour capturer les paquets en miroir arrivant sur la cible et les enregistrer dans un fichier pcap, capturez le trafic avec le port UDP 4789.

Ensuite, analysez les données capturées à l'aide de Wireshark :

1.    Ouvrez le trafic capturé dans Wireshark.

2.    Choisissez l'onglet « Statistics » (Statistiques).

3.    Sélectionnez « I/O Graph » (Graphique d'E/S) et effacez toutes les options.

4.    (Pour Linux uniquement) Sous Display Filter, (Filtre d'affichage), ajoutez un filtre à l'aide de l'identifiant réseau VXLAN et de l'indicateur de requête DNS. Par exemple, si l'identifiant réseau VXLAN est 53 et que l'indicateur de requête DNS est 0x0100, le filtre d'affichage du graphique est (vxlan.vni == 53) && (dns.flags == 0x0100).

5.    Examinez le graphique pour vous assurer qu'il se situe autour de 1 024 (limite de paquets par seconde du serveur DNS fourni par Amazon). Si le graphique est plat autour de cette valeur, la limitation DNS se produit sur la source mise en miroir.

Option 3 : métrique de performance réseau du pilote Elastic Network Adapter (ENA)

Si votre instance EC2 exécute l'une des versions de pilote ENA suivantes, vous pouvez consulter les métriques en temps réel pour la limitation DNS à l'aide de la métrique linklocal_allowance_exceeded :

  • Linux : 2.2.10 ou version ultérieure
  • Windows : 2.2.2.0 ou version ultérieure

La métrique linklocal_allowance_exceeded indique le nombre de paquets mis en forme et abandonnés en raison du dépassement du débit PPS autorisé pour les services locaux. Des exemples de services locaux sont le service DNS Amazon VPC, le service de métadonnées d'instance (IMDS) et Amazon Time Sync Service. Vous pouvez vérifier cette métrique à plusieurs intervalles pour voir si le nombre augmente. Étant donné que cette métrique est cumulative depuis le dernier redémarrage du pilote (généralement en raison d'un arrêt et d'un démarrage ou d'un redémarrage de l'instance), cette métrique n'est significative que si elle augmente.

Pour récupérer la valeur de la métrique linklocal_allowance_exceeded, exécutez la commande suivante :

ethtool -S eth0

Corriger les problèmes de limitation DNS

Si vous constatez que la cause de vos défaillances DNS est la limitation DNS, vous pouvez :