Avoir plusieurs CNAME


11

Nous avons notre domaine DNS avec 5 CNAME de niveau pour des raisons historiques. Certaines choses ont été externalisées pour une haute disponibilité, etc., mais ce n'est pas le but ici. Ma question est d'avoir 5 CNAME une exagération pour le résolveur DNS? Je n'ai pas pu trouver de site Web célèbre avec plus de 2-3 noms CNAME imbriqués pointant vers différents domaines DNS.

Nos sauts CNAME se présentent comme suit: (J'utilise xyz comme exemple)

www.xyz.com -> xyz.akadns.net -> xyz.worldwide.akadns.net -> xyz.cedexis.net -> xyz.msedge.net -> host1.msedge.net (dernier enregistrement A \ AAAA)

Je vois de nombreux clients se plaindre de problèmes de résolution DNS sur notre site Web lorsque d'autres sites fonctionnent bien pour eux, bien que lorsque j'utilise http://check-host.net/check-dns?host=www.xyz.com pour tester notre DNS résolution.

Cela semble toujours bien fonctionner dans le monde entier. Ma conclusion est que la plupart du temps, le résolveur DNS des fournisseurs de FAI locaux se trompe lorsque l'un des sauts ci-dessus ne parvient pas à résoudre. nslookup échoue sur ces ordinateurs clients uniquement pour notre site Web et trop sporadiquement.

Ce type de CNAME à plusieurs niveaux est-il une mauvaise conception en général?


1
J'ai travaillé pour Akamai il y a quelques années et l'un de nos clients a signalé qu'un certain routeur avait un problème avec 5 niveaux d'imbrication. Je pense que le firmware du routeur a finalement été corrigé.
Barmar

Réponses:


15

Ce type de CNAME à plusieurs niveaux est-il une mauvaise conception en général?

Les chaînes CNAME à CNAME ne sont pas interdites, mais comme vous le savez déjà, ce n'est pas une solution très robuste.

Chaque CNAME supplémentaire augmente la profondeur de récursivité du résolveur, et cette profondeur n'est pas toujours illimitée. Vous courez également le risque de créer des boucles ou de déclencher l'algorithme de détection de boucle.

Pour avoir une idée du nombre et des requêtes qu'un serveur de noms d'utilisateurs doit effectuer, exécutez une trace DNS:

dig +trace www.example.com 

ou sous Windows

nslookup -debug www.example.com

11

HBrujin a raison, mais en vérité, la profondeur de récursivité est bien pire que tout ce que dig +tracevous allez montrer. La profondeur de récursivité est quelque chose qui est souvent raillé et trop banalisé, mais ces gens oublient que vous ne résolvez pas seulement ~ 5 CNAMEenregistrements. Cela est dû au fait que la résolution de la cible d'un CNAMEenregistrement crée un besoin de rechercher tous les serveurs de noms dans le chemin, ce qui est souvent beaucoup plus que ce qui apparaît à première vue.

La CNAMEcible vit-elle dans un autre domaine? Vous devrez récursivement dans ses serveurs de noms, ce qui nécessite non seulement NSdes recherches d'enregistrement mais également des A(AAA)recherches où la colle n'est pas présente. Les serveurs de noms de ces serveurs de noms vivent-ils dans un domaine de premier niveau différent? Si ces TLD ne partagent pas les serveurs de noms, il est probable que les enregistrements de colle ne seront pas inclus et vous devez également consulter les autres serveurs de noms des TLD. Etc.

Chaque CNAMEenregistrement ajouté à la chaîne peut augmenter de façon exponentielle le nombre de recherches requises en fonction du nombre de serveurs de noms qui doivent être récursifs. Ces chaînes de recherches d'enregistrement CNAME+ NS+ A(AAA)peuvent à leur tour devenir follement alambiquées, atteignant bien plus de 150 niveaux de profondeur sur un cache vide. C'est là que les limites de profondeur de récursivité peuvent devenir extrêmement désagréables, entraînant des échecs temporaires de recherche de votre domaine sur un cache vide, et pour des raisons qui ne sont souvent pas immédiatement apparentes.

En bref, vous pouvez le faire, mais procédez avec prudence et prenez au sérieux les commentaires de cette nature. Vous n'avez aucun contrôle sur la fréquence de redémarrage ou de purge des serveurs DNS récursifs sur Internet.


Mon logiciel client se trouve sur un tas de machines effectuant des appels http à distance. Serait-il alors juste de réessayer tous les CNAME du client en réduisant la profondeur de récursivité \ charge sur le résolveur? Est-ce que cela semble une bonne approche ou est-ce que je manque quelque chose? Je sais que les CNAME ne changeront pas d'une zone géographique à l'autre.
Vishal Naidu

Pas une bonne approche. En règle générale, le serveur qui n'a pas pu rechercher les données va temporairement mettre en cache l'échec. La requête pourrait réussir à nouveau à l'avenir (disons, dans 5 minutes), mais il est peu probable qu'elle réussisse lors d'une nouvelle tentative immédiate. Si vous fournissez le nom de votre enregistrement DNS, je peux vous faire savoir si c'est vraiment un problème de profondeur de récursivité ou quelque chose de moins évident. Je détesterais que nous descendions le mauvais terrier de lapin.
Andrew B

0

Les niveaux multiples CNAMEsont souvent pratiques en pratique. Chaque niveau de redirection fournit un niveau de contrôle dans une zone administrative potentiellement distincte ou une organisation entièrement différente. Bien que ce ne soit presque pas techniquement nécessaire, il peut contourner les problèmes d' organisation .

Comme d'autres l'ont noté, cela peut causer des difficultés, mais elles peuvent être résolues:

  • surveiller tous les serveurs DNS. Peut-être que l'un fonctionne mal. Surveillez les serveurs externes ainsi que les vôtres. Vous devrez peut-être signaler un problème à Akamai ou à d'autres fournisseurs.

  • TTLLes paramètres doivent être suffisamment élevés pour permettre la mise en cache, mais suffisamment bas pour que vous puissiez déplacer le trafic assez rapidement pour votre application.


2
Je ne suis pas sûr de comprendre la recommandation de surveillance. Non seulement les limites de profondeur de récursivité varient d'un produit à l'autre, comment proposez-vous de les surveiller? Vous ne pouvez pas facilement identifier la cause profonde de l'infra récursive de quelqu'un d'autre.
Andrew B
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.