Comment remédier aux problèmes de résolution DNS liés à une zone hébergée privée Route 53 ?

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

Comment remédier aux problèmes de résolution DNS liés à une zone hébergée privée Amazon Route 53 ?

Brève description

Pour remédier aux problèmes de résolution DNS avec une zone hébergée privée Route 53 :

  1. Vérifiez que la prise en charge DNS est activée dans le VPC (Virtual Private Cloud).
  2. Vérifiez que l'ID de VPC qui convient est associé à la zone hébergée privée.
  3. (Pour les serveurs DNS ou Active Directory personnalisés) Vérifiez que les règles de réacheminement sont configurées pour les domaines de zone hébergée privée dans les serveurs DNS personnalisés pointant vers le serveur DNS fourni par Amazon (CIDR+2).
  4. Vérifiez les paramètres personnalisés dans le fichier resolv.conf.
  5. Vérifiez que les espaces de noms ne se chevauchent pas dans les zones hébergées privées.
  6. Vérifiez qu'aucune délégation de zone n'est configurée dans la zone hébergée privée.
  7. Vérifiez que la stratégie de routage de l'enregistrement de ressource est prise en charge dans les zones hébergées privées.
  8. Vérifiez que la règle du résolveur et son point de terminaison entrant sont résolus sur différents VPC.
  9. Vérifiez que le type de requête approprié est configuré.
  10. (Pour les requêtes du résolveur sur site vers le résolveur Route 53) Vérifiez que le résolveur sur site envoie une demande récursive.
  11. Vérifiez que les priorités de règle qui conviennent sont configurées pour le DNS fourni par Amazon.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Vérifiez que la prise en charge DNS est activée dans le VPC

Pour permettre la résolution des enregistrements de zone hébergée privée, la prise en charge DNS doit être activée dans votre VPC. Assurez-vous que DNSSupport et DNShowNames sont définis sur True dans votre VPC.

Vérifiez que l'ID de VPC qui convient est associé à la zone hébergée privée

Lorsque vous associez une zone hébergée privée à un VPC, le résolveur Route 53 définit automatiquement une règle et l'associe au VPC. Les ressources de ce VPC peuvent résoudre les enregistrements DNS de la zone hébergée privée en interrogeant le résolveur.

Vérifiez que l'ID de VPC qui convient est associé à votre zone hébergée privée. Assurez-vous également que vous interrogez les enregistrements de ressources du domaine depuis le même VPC.

Pour obtenir la liste des VPC associés à une zone hébergée, utilisez la commande suivante dans AWS CLI :

aws route53  list-hosted-zones-by-vpc --vpc-id <VPC-ID> --vpc-region <region-ID>

Pour obtenir la liste des zones hébergées privées associées à des VPC spécifiques, utilisez la commande suivante dans AWS CLI :

aws route53 get-hosted-zone --id <id>

Vérifiez que les règles de réacheminement sont configurées pour les domaines de zone hébergée privée dans les serveurs DNS personnalisés pointant vers le serveur DNS fourni par Amazon (CIDR+2)

Si vous avez configuré des serveurs DNS personnalisés ou des serveurs Active Directory (AD) dans les options DHCP relatives à DNS de votre VPC :

  • Dans la règle de réacheminement, vérifiez que vous avez configuré les serveurs de manière à transmettre les requêtes DNS du domaine privé à l'adresse IP des serveurs DNS fournis par Amazon de votre VPC. Par exemple, si la plage CIDR de votre VPC est 172.31.0.0/16, l'adresse IP du serveur DNS du VPC est 172.31.0.2 (la plage réseau VPC plus deux).
  • Vérifiez que le domaine configuré dans les serveurs personnalisés est différent de celui de votre zone hébergée privée. Si les domaines sont identiques, celui du serveur est prioritaire. Le serveur ne contactera pas le serveur DNS fourni par Amazon pour les domaines de zone hébergée privée.

Vérifiez les paramètres personnalisés dans le fichier resolv.conf

En cas de résolution ou de réponses DNS intermittentes, vérifiez les paramètres de configuration de votre instance resolv.conf source.

Par exemple, supposons que vous ayez configuré l'option Rotate (Rotation) du fichier resolv.conf de manière à équilibrer la charge des requêtes DNS entre le serveur DNS fourni par Amazon et le serveur résolveur Google public (8.8.8.8). Les paramètres du fichier resolv.conf sont les suivants :

options rotate
; generated by /usr/sbin/dhclient-script
nameserver 8.8.8.8
nameserver 172.31.0.2

Dans la première requête adressée au résolveur Google public (8.8.8.8), vous recevez la réponse NxDomain attendue. car le résolveur recherche la réponse dans la zone hébergée publique au lieu de la chercher dans la zone hébergée privée.

Private hosted Zone Record - resolvconf.local
[ec2-user@ip-172-31-253-89 etc]$ curl -vks http://resolvconf.local
* Rebuilt URL to: http://resolvconf.local/
* Could not resolve host: resolvconf.local

15:24:58.553320 IP ip-172-31-253-89.ap-southeast-2.compute.internal.40043 > dns.google.domain: 65053+ A? resolvconf.local. (34)
15:24:58.554814 IP dns.google.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.40043: 65053 NXDomain 0/1/0 (109)

La deuxième requête, quant à elle, est résolue avec succès. Celle-ci aboutit parce qu'elle accède au résolveur DNS VPC associé à votre zone hébergée privée.

[ec2-user@ip-172-31-253-89 etc]$ curl -vks http://resolvconf.local
* Rebuilt URL to: http://resolvconf.local/
*   Trying 1.1.1.1...
* TCP_NODELAY set
* Connected to resolvconf.local (1.1.1.1) port 80 (#0)

15:25:00.224761 IP ip-172-31-253-89.ap-southeast-2.compute.internal.51578 > 172.31.0.2.domain: 7806+ A? resolvconf.local. (34)
15:25:00.226527 IP 172.31.0.2.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.51578: 7806 1/0/0 A 1.1.1.1 (50)

Vérifiez que les espaces de noms ne se chevauchent pas dans les zones hébergées privées

S'il existe plusieurs zones dans lesquelles des espaces de noms se chevauchent (comme example.com et test.example.com), le résolveur achemine le trafic vers la zone hébergée en fonction de la correspondance la plus spécifique. S'il existe une zone correspondante, mais qu'aucun enregistrement ne correspond au nom de domaine et au type de la demande, le résolveur ne transmet pas la demande à une autre zone ou à un résolveur DNS public. Au lieu de cela, le résolveur renvoie NXDOMAIN (domaine inexistant) au client.

Vérifiez que l'enregistrement qui convient est configuré dans la zone hébergée privée la plus spécifique pour une résolution DNS réussie.

Par exemple, supposons que vous disposez de deux zones hébergées privées contenant les enregistrements configurés suivants :

Nom de la zone hébergée privée Nom de l'enregistrement Valeur
local overlap.privatevpc.local 60.1.1.1
privatevpc.local overlap.privatevpc.local 50.1.1.1

La demande obtient la réponse suivante de la zone hébergée privée correspondante la plus spécifique :

[ec2-user@IAD-BAS-INSTANCE ~]$ dig overlap.privatevpc.local +short
50.1.1.1

Vérifiez qu'aucune délégation de zone n'est configurée dans la zone hébergée privée

Les zones hébergées privées ne prennent pas en charge la délégation de zone. Si la délégation est configurée, le client obtient le code de réponse « Servfail » du résolveur VPC.

Utilisez AWS CLI pour vérifier que la délégation de zone n'est pas configurée dans la zone hébergée privée. Par exemple :

Zone hébergée privée : abc.com Enregistrement NS de délégation pour : kc.abc.com Enregistrement de ressource : test.kc.abc.com

[ec2-user@ip-172-31-0-8 ~]$ dig test.kc.abc.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 63414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test.kc.abc.com        IN      A
;; Query time: 15 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Fri Apr 16 15:57:37 2021
;; MSG SIZE  rcvd: 48

Vérifiez que la stratégie de routage de l'enregistrement de ressource est prise en charge dans les zones hébergées privées

Vérifiez que vous avez configuré une stratégie de routage prise en charge par une zone hébergée privée dans votre enregistrement de ressource. Les stratégies de routage prises en charge sont les suivantes :

  • Routage simple
  • Routage de réponse multivaleur
  • Routage de basculement
  • Routage pondéré

Vérifiez que la règle du résolveur et son point de terminaison entrant sont résolus sur différents VPC

Lorsque le point de terminaison sortant d'une règle du résolveur pointe vers un point de terminaison entrant qui partage un VPC avec la règle, le résultat obtenu est une boucle. Dans cette boucle, la requête est continuellement transmise entre les points de terminaison entrants et sortants.

La règle de réacheminement peut toujours être associée à d'autres VPC partagés avec d'autres comptes à l'aide d'AWS Resource Access Manager (AWS RAM). La résolution des zones hébergées privées associées au hub, ou à un VPC central, s'effectue des requêtes vers les points de terminaison entrants. Aucune règle du résolveur de réacheminement ne modifiera cette résolution. Par exemple :

VPC hub : VPC A - CIDR 172.31.0.0/16 VPC spoke : VPC B - CIDR 172.32.0.0/16 Adresse IP entrante : 172.31.253.100 et 172.31.2.100 Adresses IP cibles dans la règle de réacheminement : 172.31.253.100 et 172.31.2.100 Règle associée aux VPC : VPC A et VPC B Client: 172-32-254-37

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 9007
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;overlap.privatevpc.local. IN A
;; Query time: 2941 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

Dans la sortie précédente, la demande DNS saute en permanence entre les points de terminaison sortants et entrants. La demande vérifie la règle associée au VPC A et renvoie la requête au point de terminaison sortant. Après plusieurs tentatives, la requête expire et répond avec un code de réponse « Servfail ».

Pour résoudre ce problème et rompre la boucle, supprimez l'association entre le VPC hub (VPC A) et la règle. Vous obtenez ensuite une réponse positive de la zone hébergée privée :

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58606
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;overlap.privatevpc.local. IN A
;; ANSWER SECTION:
overlap.privatevpc.local. 0 IN A 50.1.1.1
;; Query time: 5 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

Vérifiez que le résolveur sur site envoie une demande récursive

Si vous utilisez des requêtes du résolveur sur site vers le résolveur Route 53, avec le point de terminaison entrant du résolveur, vous pouvez transférer les requêtes DNS des résolveurs de votre réseau vers un résolveur VPC. Cette action vous permet de résoudre les noms de domaine des ressources AWS, tels que les enregistrements d'une zone hébergée privée.

Dans certains cas, vous constaterez peut-être un échec de la résolution de la zone hébergée privée depuis le résolveur sur site. Ce problème est dû au fait que le résolveur sur site envoie une requête itérative au lieu d'envoyer une requête récursive. Le point de terminaison entrant prend en charge les requêtes récursives pour les résolutions DNS réussies.

Vous pouvez vérifier le type de résolution à l'aide d'une capture de paquets sur le résolveur DNS (sur site). Vérifiez ensuite les indicateurs DNS (récursivité souhaitée = 0). Pour tester la résolution, vous pouvez également envoyer une requête itérative en utilisant +norecurse avec la commande dig, ou définir « norecurse » avec nslookup comme suit :

Adresse IP du point de terminaison entrant : 172.31.253.150 Adresse IP du résolveur sur site : 10.0.4.210

Échec de la requête itérative vers l'adresse IP entrante :

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local +norecurse
; <<>> DiG 9.11.0rc1 <<>> @172.31.253.150 overlap.privatevpc.local +norecurse
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

Requête récursive réussie :

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19051
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;overlap.privatevpc.local.      IN      A
;; ANSWER SECTION:
overlap.privatevpc.local. 0     IN      A       50.1.1.1
;; Query time: 200 msec
;; SERVER: 172.31.253.150#53(172.31.253.150)

Vérifiez que les priorités de règle qui conviennent sont configurées pour le DNS fourni par Amazon

Lorsque l'instance cliente envoie une requête au résolveur (serveur DNS fourni par AWS), le résolveur vérifie les règles associées à l'instance pour déterminer où acheminer la demande.

En général, la règle la plus spécifique est prioritaire. En présence d'une règle de résolveur « test.example.com » et d'une zone hébergée privée « longest.test.example.com », la recherche du domaine « longest.test.example.com » correspond à la zone hébergée privée.

Si les règles sont au même niveau de domaine, la priorité est la suivante :

  1. Règle du résolveur
  2. Règle de la zone hébergée privée
  3. Règle interne

Par exemple, en présence d'une règle de résolveur « test.example.com » et d'une zone hébergée privée « test.example.com », la règle du résolveur est prioritaire. La requête est transmise aux serveurs ou adresses IP cibles configurés dans la règle.