Comment fonctionne le serveur de noms DNS?

14

Nous avons deux serveurs DNS répertoriés dans notre enregistrement NS. Hier soir, l'un de nos serveurs DNS est tombé en panne. Comme prévu, certains serveurs DNS ne résolvaient pas nos noms d'hôtes. J'ai supposé que cela serait temporaire et commencerait à fonctionner une fois que le TTL de nos enregistrements NS expirerait (1 heure).

Une heure + plus tard, j'obtenais toujours des délais d'attente DNS à partir des ordinateurs de bureau qui utilisaient les serveurs Earthlink, Verizon et OpenDNS. J'ai testé pour voir si l'autre serveur DNS répondait:

dig @ns2.example.com www.example.com +short

Cela a fonctionné.

Mes questions:

  1. Quelqu'un at-il une réponse quant à la raison pour laquelle d'autres serveurs DNS ne frappaient pas notre autre serveur DNS même après l'expiration du TTL?
  2. Les serveurs DNS préfèrent-ils le serveur DNS principal d'un domaine (à partir de l' SOAenregistrement)?
  3. Y a-t-il un algorithme utilisé pour choisir un serveur de noms parmi les enregistrements NS disponibles? Je suppose que cela est spécifique à l'implémentation, mais il y a peut-être des normes qui s'appliquent ici.
Belmin Fernandez
la source
Le TTL n'a rien à voir avec quoi que ce soit. Aucun enregistrement n'ayant été modifié, il n'a aucun effet pertinent.
David Schwartz
Ah, je vois ça maintenant. Doh.
Belmin Fernandez

Réponses:

17

C'est une irritation malheureuse. Plusieurs serveurs DNS sont censés augmenter la fiabilité, mais en pratique, cela a souvent l'effet inverse.

Le problème est que le client n'attend qu'une réponse si longtemps et que le serveur attend environ la même durée. Supposons que vous ayez deux serveurs DNS, A et B. Supposons que A fonctionne et que B a échoué. Ça arrive:

  1. Le client se connecte au serveur de noms Z et lui demande les informations. Z choisit B et envoie une requête.

  2. Le client expire car le serveur de noms Z n'a pas répondu.

  3. Le client essaie le serveur de noms Y. Y choisit B et envoie une requête.

  4. Le serveur de noms Z expire et essaie A. Il obtient la bonne réponse, mais le client n'attend plus.

  5. Le client expire car le serveur de noms Y n'a pas répondu.

  6. Le client abandonne, ses deux serveurs de noms ne répondant pas.

  7. Le serveur de noms Y expire et essaie A. Il obtient la bonne réponse, mais le client n'attend plus.

Et il n'y a pas de bonne solution. Plus vous attendez pour voir si un serveur de noms répond, plus vous devez attendre car le serveur de noms que vous attendez attend plus longtemps. On peut dire que le problème était que Y et Z n'ont pas abandonné B assez rapidement.

Essentiellement, si l'un de vos serveurs de noms est en panne, certains clients, par pure malchance, expireront car ils n'ont essayé que les mauvais.

D'un autre côté, si vous avez deux serveurs de noms et que l'un échoue, environ 75% des serveurs de noms obtiendront une réponse, au lieu de 0%.

David Schwartz
la source
Je vois ce que tu veux dire. Eek. Ainsi, le serveur de noms ( Z) du client ne mettra pas en cache le serveur de noms utilisé en dernier qui a fonctionné?
Belmin Fernandez
1
Certains serveurs de noms font cela et parfois cela aide. Cela dépend souvent de la façon précise dont le serveur de noms a échoué. Vous devez vous rappeler que tout cela est au-dessus d'UDP, donc le fait de ne pas obtenir de réponse (même après une retransmission ou deux) ne prouve pas qu'il y a quelque chose de mal avec le serveur de noms.
David Schwartz
J'ai lu dans ma copie de DNS et BIND (Paul Albitz et Cricket Lui, O'Rielly p278) que les serveurs Bind 8.2.3 choisissent le serveur qui répond le plus rapidement dans sa liste de redirecteurs, ce qui signifie que si le serveur de la liste échoue, il est quasiment automatiquement supprimé. Bind 9 ne l'implémente pas encore, il interroge les serveurs de transfert dans l'ordre des listes. Quelqu'un sait-il si cela a changé?
Jaydee
Juste pour clarifier, pour ceux qui connaissent moins les configurations DNS (il m'a fallu un certain temps pour comprendre cela), les serveurs de noms DNS Z et Y dans cet exemple sont très probablement des serveurs de noms récursifs basés sur le réseau du client, par exemple les serveurs DNS fournis par un FAI. à ses clients via DHCP. Et le problème se pose lorsque ces serveurs ont une valeur de délai d'attente plus longue que le résolveur DNS client (par exemple, le système d'exploitation du périphérique.)
Jordan Rieger