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:
- 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?
- Les serveurs DNS préfèrent-ils le serveur DNS principal d'un domaine (à partir de l'
SOA
enregistrement)? - 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.
domain-name-system
bind
isp
Belmin Fernandez
la source
la source
Réponses:
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:
Le client se connecte au serveur de noms Z et lui demande les informations. Z choisit B et envoie une requête.
Le client expire car le serveur de noms Z n'a pas répondu.
Le client essaie le serveur de noms Y. Y choisit B et envoie une requête.
Le serveur de noms Z expire et essaie A. Il obtient la bonne réponse, mais le client n'attend plus.
Le client expire car le serveur de noms Y n'a pas répondu.
Le client abandonne, ses deux serveurs de noms ne répondant pas.
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%.
la source
Z
) du client ne mettra pas en cache le serveur de noms utilisé en dernier qui a fonctionné?