Passer au contenu

Comment résoudre les problèmes de résolution DNS dans ma zone hébergée privée Route 53 ?

Lecture de 9 minute(s)
0

Je souhaite résoudre les problèmes de résolution DNS dans ma zone hébergée privée Amazon Route 53.

Brève description

Pour résoudre les problèmes DNS de zone hébergée privée, vérifiez les paramètres Amazon Virtual Private Cloud (Amazon VPC), les associations de zones et la configuration du serveur DNS.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Confirmer la prise en charge du DNS dans le VPC

Pour autoriser la résolution des enregistrements de zone hébergée privée, procédez comme suit :

  1. Activez la prise en charge du DNS dans votre Amazon VPC.
  2. Vérifiez que DNSSupport et DNSHostNames sont définis sur Vrai dans votre VPC. Pour plus d’informations, consultez la section Afficher et mettre à jour les attributs DNS de votre VPC.

Confirmer l’association d'ID de VPC appropriée

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

Lorsque vous associez une zone hébergée privée à votre VPC :

  • Route 53 Resolver crée une règle définie automatiquement et l'associe à votre VPC.
  • Les ressources de votre VPC peuvent interroger le résolveur pour résoudre les enregistrements DNS dans la zone hébergée privée.

Pour répertorier les VPC qui sont associés à une zone hébergée, exécutez la commande suivante dans l'AWS CLI :

aws route53 get-hosted-zone --id VPC_ID

Remarque : Remplacez VPC_ID par les valeurs appropriées de votre choix.

Pour répertorier les zones hébergées privées qui sont associées à des VPC spécifiques, exécutez la commande suivante dans l'AWS CLI :

aws route53 list-hosted-zones-by-vpc --vpc-id VPC_ID --vpc-region REGION_ID

Remarque : Remplacez HOSTED_ZONE_ID, VPC_ID et REGION_ID par les valeurs pertinentes.

Vérifier les configurations personnalisées du serveur DNS

Si vous avez configuré des serveurs DNS personnalisés ou des serveurs Active Directory dans les options DHCP pour le DNS de votre VPC, vérifiez les configurations suivantes :

  1. Règle de transfert : Les serveurs transmettent les requêtes DNS du domaine privé à l'adresse IP du serveur DNS de votre VPC.
  2. Configuration du domaine : Le domaine des serveurs personnalisés est différent de celui de votre zone privée hébergée.

Par exemple, si la plage d'adresses CIDR principale de votre VPC est 172.31.0.0/16, l'adresse IP du serveur DNS du VPC est 172.31.0.2. Il s'agit de la plage réseau Amazon VPC plus deux.

Vérifier les paramètres de configuration du résolveur

Si vous rencontrez des problèmes de résolution ou de réponse DNS intermittents, passez en revue les paramètres de configuration du résolveur de votre instance source :

  • Pour les instances Linux, utilisez les fichiers cat /etc/resolv.conf et cat/etc/hosts.
  • Pour macOS, consultez la section Modifier les paramètres DNS sur Mac dans le guide de l'utilisateur de macOS.
  • Pour Windows, procédez comme suit :
    Choisissez Paramètres, puis sélectionnez Réseau et Internet.
    Sous Paramètres réseau avancés, sélectionnez Modifier les paramètres de l'adaptateur.
    Cliquez avec le bouton droit sur la connexion réseau, puis sélectionnez Propriétés.
    Choisissez les propriétés IPv4, puis saisissez l'adresse IP DNS préférée dans les adresses des serveurs DNS.

Par exemple, si vous avez configuré resolv.conf, vous pouvez utiliser l'option de rotation pour équilibrer la charge des requêtes entre Amazon DNS et Google DNS (8.8.8.8). Le fichier resolv.conf devrait ressembler à ce qui suit :

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

Lors de votre première requête auprès du DNS Google public (8.8.8.8), vous recevez la réponse Nxdomain attendue. Le résolveur essaie de trouver la réponse dans la zone hébergée publique plutôt que 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)

Toutefois, la deuxième requête est résolue avec succès. La deuxième requête atteint le résolveur DNS de VPC qui est associée à 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érifier que les espaces de noms des zones hébergées privées ne se chevauchent pas

Lorsque plusieurs zones comportent des espaces de noms qui se chevauchent :

  • Le résolveur achemine le trafic en fonction de la correspondance la plus spécifique
  • S'il existe une zone correspondante mais aucun enregistrement correspondant, le résolveur renvoie NXDOMAIN

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

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

Zone hébergée privéeNom de l'enregistrementValeur
localoverlap.privatevpc.local60.1.1.1
privatevpc.localoverlap.privatevpc.local50.1.1.1

Puis, vous recevez le résultat de requête suivant provenant 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érifier la délégation de zone/sous-domaine dans les zones hébergées privées

Les zones hébergées privées ne prennent pas en charge la délégation de zone/sous-domaine. Vérifiez qu'aucun enregistrement de serveur de noms (NS) n'est configuré pour le sous-domaine dans la zone hébergée privée du domaine parent. Si la délégation est configurée, le client obtient le code de réponse « SERVFAIL » du résolveur de VPC.

Voici un exemple de configuration de délégation qui provoque l’affichage du code de réponse SERVFAIL :

  • Zone hébergée privée : abc.com
  • Enregistrement NS de la délégation : 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

Confirmer la prise en charge de la politique de routage

Vérifiez que vous avez configuré une politique de routage dans votre enregistrement de ressources qui est prise en charge par une zone hébergée privée : Pour plus d'informations, consultez la section Politiques de routage prises en charge pour les enregistrements dans une zone hébergée privée.

Vérifier la règle du résolveur et l'utilisation du point de terminaison de résolveur sortant

Vérifiez que vous utilisez le résolveur avec un point de terminaison sortant. La règle du résolveur est prioritaire.

  1. Vous disposez d'une règle de résolveur pour acheminer le trafic vers votre réseau pour le domaine de votre zone hébergée privée.
  2. Vous disposez d’une règle de résolveur associée au même VPC qui est également associé à la zone hébergée privée.

Pour plus d’informations, consultez la section Résolution des requêtes DNS entre les VPC et votre réseau.

Empêcher les boucles de requête

Pour éviter de créer une boucle, procédez comme suit :

  1. Créez des adresses IP cibles dans une règle de transfert du résolveur pointant vers des points de terminaison entrants de votre VPC.
  2. N’associez pas les points de terminaison à la zone hébergée privée.
  3. N'associez pas la même règle de résolveur à votre VPC.

Exemple de boucle de requête :

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)

Pour résoudre ce problème et rompre la boucle, supprimez l'association de VPC du hub avec la règle. Exemple de réponse réussie :

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érifier que le résolveur sur site envoie des requêtes récursives

Pour les requêtes provenant de sites et adressées à Route 53 Resolver :

  • Utilisez le point de terminaison entrant du résolveur pour transférer les requêtes DNS.
  • Assurez-vous que le résolveur sur site envoie des requêtes récursives (et non itératives).

Pour vérifier le type de résolution, procédez comme suit :

  1. Utilisez la capture de paquets sur le résolveur DNS sur site.
  2. Vérifiez les indicateurs DNS (récursivité souhaitée = 0).
  3. Testez avec la commande dig +norecurse, ou définissez norecurse avec nslookup.

Exemple d'échec d'une requête itérative :

[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

Exemple de 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érifier les priorités de règles correctes pour le DNS fourni par Amazon

Lorsque l'instance cliente envoie une requête au résolveur, ce dernier vérifie les règles de l'instance quant à l'endroit où acheminer la requête.

C'est la règle la plus spécifique qui prime. Par exemple, s'il existe une règle de résolveur test.example.com et une zone hébergée privée test.example.com, la règle de résolveur est prioritaire. La requête est transmise aux serveurs ou aux adresses IP cibles configurés dans la règle.

Si les règles se situent au même niveau de domaine, elles ont la priorité suivante :

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

Informations connexes

Utilisation de zones hébergées privées

Quelles options Amazon VPC dois-je activer pour utiliser ma zone hébergée privée ?

Éviter les configurations en boucle avec les points de terminaison du résolveur