5 votes

La recherche de dig ne renvoie pas les serveurs de noms

Après avoir ajouté quelques serveurs de noms à mon domaine pour la sous-délégation, je constate que si j'exécute une trace et/ou interroge directement les serveurs de noms, je reçois les bons serveurs de noms en retour, cependant si j'interroge les enregistrements de serveurs de noms juste via un dig, je n'obtiens pas de réponse.

Ne devrait pas s'arrêter la recherche récursive au niveau où elle récupère les enregistrements NS (nsX.macmonster.co.uk) de dns2.stabletransit.com et les renvoyer au client ?

Les enregistrements de nouveaux serveurs de noms ajoutés sont :

subdomain.codecrab.org. 300     IN      NS      ns1.macmonster.co.uk.
subdomain.codecrab.org. 300     IN      NS      ns2.macmonster.co.uk.

TRACE

    ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> +trace subdomain.codecrab.org ns
;; options globales:  printcmd
.                       94441   IN      NS      f.root-servers.net.
.                       94441   IN      NS      g.root-servers.net.
.                       94441   IN      NS      h.root-servers.net.
.                       94441   IN      NS      i.root-servers.net.
.                       94441   IN      NS      j.root-servers.net.
.                       94441   IN      NS      k.root-servers.net.
.                       94441   IN      NS      l.root-servers.net.
.                       94441   IN      NS      m.root-servers.net.
.                       94441   IN      NS      a.root-servers.net.
.                       94441   IN      NS      b.root-servers.net.
.                       94441   IN      NS      c.root-servers.net.
.                       94441   IN      NS      d.root-servers.net.
.                       94441   IN      NS      e.root-servers.net.
;; Reçu 228 bytes de 83.138.151.80#53(83.138.151.80) en 0 ms

org.                    172800  IN      NS      a0.org.afilias-nst.info.
org.                    172800  IN      NS      b2.org.afilias-nst.org.
org.                    172800  IN      NS      c0.org.afilias-nst.info.
org.                    172800  IN      NS      a2.org.afilias-nst.info.
org.                    172800  IN      NS      d0.org.afilias-nst.org.
org.                    172800  IN      NS      b0.org.afilias-nst.org.
;; Reçu 442 bytes de 192.5.5.241#53(f.root-servers.net) en 96 ms

codecrab.org.           86400   IN      NS      dns2.stabletransit.com.
codecrab.org.           86400   IN      NS      dns1.stabletransit.com.
;; Reçu 95 bytes de 199.19.56.1#53(a0.org.afilias-nst.info) en 108 ms

subdomain.codecrab.org. 300     IN      NS      ns1.macmonster.co.uk.
subdomain.codecrab.org. 300     IN      NS      ns2.macmonster.co.uk.
;; Reçu 92 bytes de 65.61.188.4#53(dns2.stabletransit.com) en 0 ms

;; délai d'attente de connexion dépassé ; aucun serveur n'a pu être atteint

QUERY STANDARD

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> subdomain.codecrab.org NS
;; options globales:  printcmd
;; Réponse reçue:
;; ->>EN-TÊTE<<- opcode: QUERY, statut: SERVFAIL, id: 50516
;; drapeaux: qr rd ra; QUERY: 1, RÉPONSE: 0, AUTORITÉ: 0, SUPPLÉMENTAIRE: 0

;; SECTION QUESTION:
;subdomain.codecrab.org.                IN      NS

;; Temps de requête: 1 msec
;; SERVEUR: 83.138.151.80#53(83.138.151.80)
;; QUAND: Jeu Sep 26 16:32:34 2013
;; TAILLE MSG rcv: 40

Supplémentaire

[root@monty webtools]# dig ns1.macmonster.co.uk +short
1.1.1.1

Des idées ?

8voto

Falcon Momot Points 24815

Un résolveur DNS récursif nécessite que les informations qu'il acquiert de manière récursive soient autoritatives pour les renvoyer en réponse à une requête; il ne fait pas d'inférences.

L'autorité est établie dans le DNS en utilisant des enregistrements SOA et NS. Le premier est utilisé pour établir l'autorité entre les serveurs autoritaires, et il est servi depuis la zone. Par exemple, l'enregistrement SOA indique quelle copie des données de la zone est plus récente lorsque des serveurs DNS autoritaires pour une zone effectuent un transfert de zone. Le second est utilisé pour établir l'autorité lors de la requête.

Lorsqu'un enregistrement NS pour un sous-domaine est dans un domaine, et que le serveur qui le possède n'est pas un serveur autoritaire pour le nom interrogé, cet enregistrement NS est un enregistrement de délégation. Ainsi, le résolveur récursif interrogera les enregistrements de délégation en commençant par la racine .. Dans votre cas, il remonte la chaîne vers cette réponse de dns2.stabletransit.com.:

subdomain.codecrab.org. 300     IN      NS      ns1.macmonster.co.uk.

Il s'agit d'un enregistrement de délégation, car ces données n'existent pas:

subdomain.codecrab.org. 300     IN      NS      dns2.stabletransit.com

Ce qui existait en réalité était ceci:

codecrab.org.           86400   IN      NS      dns2.stabletransit.com.

Ainsi, le serveur à dns2.stabletransit.com. peut donner des réponses autoritatives pour codecrab.org., car le résolveur précédent a délégué cette zone. Mais il n'est pas autoritaire pour subdomain.codecrab.org., donc il ne peut pas répondre à la requête; il peut seulement déléguer.

Les résolveurs DNS peuvent bien sûr être configurés pour être autoritaires pour n'importe quel nom que l'administrateur souhaite. Cependant, s'ils sont configurés pour être autoritaires pour des zones qu'ils essaient de déléguer, ils donneront plutôt des réponses (sans avoir les données), donc cela n'est évidemment pas fait.

Le fonctionnement de la récursion est simple, même si ce n'est pas intuitif au départ. Le résolveur récursif envoie la requête complète aux serveurs de noms pour . (qu'il a dans son fichier d'indices pour la zone racine). Le serveur de noms . envoie une réponse, mais une réponse comporte deux composantes qui nous intéressent pour ce but: la section d'autorité, et la section de réponse (il y a aussi la section additionnelle et la section question). La réponse contiendra des enregistrements comme:

org.                    172800  IN      NS      b0.org.afilias-nst.org.

Cela dit au résolveur récursif de répéter sa requête là-bas, car la zone est déléguée. Cela inclut également des "glue" dans la section additionnelle donnant les adresses IP des serveurs de noms dans la section d'autorité, car il sait que vous ne pourrez pas trouver le serveur de noms pour interroger sinon. Il s'agit d'une décision administrative dans la gestion du DNS; si les enregistrements de glue ne sont pas présents, le résolveur récursif interrogera les enregistrements AAAA ou A pour l'un des serveurs autoritaires avant de procéder.

Ainsi, vous pouvez remarquer que lorsque vous envoyez votre requête IN NS subdomain.codecrab.org. à la dernière délégation, dns2.stabletransit.com., la réponse ressemble à ceci:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35461
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;subdomain.codecrab.org.                IN      NS

;; AUTHORITY SECTION:
subdomain.codecrab.org. 300     IN      NS      ns2.macmonster.co.uk.
subdomain.codecrab.org. 300     IN      NS      ns1.macmonster.co.uk.

;; Query time: 104 msec
;; SERVER: 65.61.188.4#53(65.61.188.4)
;; WHEN: Sat Sep 28 14:50:45 MDT 2013

Remarquez comment vous n'obtenez ni section additionnelle ni section de réponse (mais aussi NOERROR pour le statut de retour). C'est parce que l'enregistrement est une délégation vers ns2.macmonster.co.uk. pour subdomain.codecrab.org., pour laquelle dns2.stabletransit.com. sait qu'il n'est pas autoritaire. Il n'y a pas de section additionnelle car les serveurs de noms sont du côté de co.uk. et administrativement il n'était pas nécessaire d'inclure de glue car ils sont résolus de l'autre côté (bien sûr, de la glue aurait pu être incluse). Donc, pour répondre à votre requête, car la réponse doit venir d'une section de réponse (ce qui signifie qu'elle est identifiée par le serveur répondant comme une réponse, venant de l'autorité), votre résolveur récursif essaiera de trouver ns1.macmonster.co.uk., et en le trouvant à 1.1.1.1, enverra sa requête là-bas.

Bien sûr (puisque cette adresse est dans un préfixe de débogage) il n'y a pas de serveur de noms là-bas (pour l'instant). Quant à ns2.macmonster.co.uk. à 2.2.2.2, si quelqu'un chez Wanadoo France décidait qu'il devrait y avoir un serveur de noms portant des enregistrements autoritaires pour subdomain.codecrab.org. et en particulier:

subdomain.codecrab.org 99999999 IN NS now.go.away.or.i.will.taunt.you.a.second.time.

la moitié du temps (aussi souvent que ce serveur de noms est choisi), la requête renverra now.go.away.or.i.will.taunt.you.a.second.time. comme serveur de noms pour votre zone, même si le bon sens suggérerait que ce devrait être ns2.macmonster.co.uk. (et même si c'était ce dernier serveur de noms qui a donné cette réponse de manière autoritaire).

4voto

TommyTheKid Points 156

@Zoredache a répondu à la question dans un commentaire. La trace de dig montre la réponse, les serveurs de noms au niveau du domaine ne se résolvent pas :

subdomain.codecrab.org. 300     IN      NS      ns1.macmonster.co.uk.
subdomain.codecrab.org. 300     IN      NS      ns2.macmonster.co.uk.
;; Received 92 bytes from 65.61.188.4#53(dns2.stabletransit.com) in 0 ms

dig: impossible d'obtenir l'adresse de 'ns1.macmonster.co.uk' : introuvable

... donc, les deux requêtes dig ont échoué, mais la sortie +trace vous a montré où cela a échoué. Lorsque vous exécutez dig +trace, vous suivez le chemin qu'un serveur DNS suivrait pour résoudre la requête, en commençant par les serveurs de noms "root". Votre deuxième requête a demandé à votre serveur DNS (83.138.151.80), qui a fait la même chose (effectivement), mais lorsqu'il n'a pas pu résoudre les ns1/ns2.macmonster.co.uk, cela a échoué et n'a pas donné de réponse. Pour obtenir une réponse, ces serveurs de noms devront se résoudre en adresses IP qui exécutent le DNS pour ce sous-domaine, et les résultats de la requête NS à ces serveurs sont la réponse qui sera renvoyée.

~tommy

1voto

Jens Bradler Points 5913

Problème : Vos enregistrements de délégation sont corrects mais les serveurs de noms utilisés (ns1.macmonster.co.uk et ns2.macmonster.co.uk) n'ont pas les bonnes adresses IP. Dans mon cas, ns1.macmonster.co.uk a l'IP 1.1.1.1 et ns2.macmonster.co.uk a l'IP 2.2.2.2. Ces adresses IP sont réelles et valides mais je ne pense pas que ces adresses IP pointent vers des serveurs DNS.

Comment réparer : Je suppose que vous avez utilisé ces serveurs de noms pour une raison quelconque. Clarifiez avec macmonster.co.uk pourquoi ces serveurs de noms ne peuvent pas être connectés depuis Internet (peut-être sont-ils destinés uniquement à un usage local ou intranet) ou utilisez des serveurs de noms différents pour votre délégation.

Pourquoi cela ne fonctionne-t-il pas : Hmm, si ma mémoire est bonne, il y avait une histoire d'Astérix et Obélix essayant d'obtenir un laissez-passer/badge A38 et ils devaient courir de pièce en pièce pour l'obtenir. Cependant, le DNS est plus convivial que cela. Si vous demandez pour host1.subdomain.codecrab.org., votre DNS essaie de résoudre cela en une adresse IP. Il demande à org. pour codecrab.org., codecrab.org. pour subdomain.codecrab.org. et subdomain.codecrab.org. pour host1.subdomain.codecrab.org. Si cette chaîne ne fonctionne pas, la résolution DNS échoue.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X