2 votes

Pourquoi l'utilisation de CNAME et DNAME ensemble n'est pas autorisée

Si vous disposez d'un domaine principal et d'une série de domaines similaires dont vous voulez qu'ils se comportent exactement de la même manière, il semble logique de les configurer comme suit :

Zone "Parent pauvre" :

amazon.co.uk. DNAME amazon.com.

amazon.co.uk. CNAME amazon.com.

Zone "Papa" :

amazon.com. A 1.1.1.1

www.amazon.com. A 1.1.1.1

amazon.com. MX x.y.z.

... et s'attendre à ce que le courrier électronique pour amazon.co.uk et .com soit traité par x.y.z et que le serveur web à 1.1.1.1 reçoive des demandes non seulement pour amazon.com et www.amazon.com mais aussi pour amazon.co.uk et www.amazon.co.uk.

Cependant, la RFC 6672 dit :

The owner name of a DNAME can only have one DNAME RR, and no CNAME RRs can exist at that name. These rules make sure that for a single domain name, only one redirection exists; thus, there's no confusion about which one to follow.

Ce que je ne comprends pas et ma question est, quelle est la confusion potentielle qui est évitée en ne permettant pas CNAME avec DNAME ? Si je comprends bien, le DNAME fait tout sauf le sommet et le CNAME fait le sommet, qu'est-ce que j'ai manqué ?

2voto

Jacob Evans Points 7455

Parce que c'est la règle.

il semble que la réponse soit essentiellement que les architectes d'origine n'ont jamais pensé que ce serait utile ou quelque chose d'aussi irréfléchi.

Si un enregistrement CNAME était autorisé à la racine, le CNAME inclurait les enregistrements NS, invalidant la zone elle-même dans une boucle infinie.

D'autres serveurs DNS ont "corrigé" ce problème avec des choses telles que l'ANAME qui aliène spécifiquement la résolution d'un hôte comme réponse à une demande d'enregistrement A. L'ANAME n'est pas une norme.

https://www.rfc-editor.org/rfc/rfc1912

http://www.faqs.org/rfcs/rfc1034.html

Faites ce que tout le monde fait, et 301 votre domaine racine vers le sous-domaine www, soit vous-même, soit avec un service tiers.

1voto

BillThor Points 27096

En raison de la manière dont elle est définie, une CNAME doit être le seul RR du domaine. Par conséquent, il n'est applicable qu'aux domaines apex.

DNAME peut être utilisé à la place de plusieurs CNAME enregistre lorsque tous les sous-domaines d'un domaine doivent être redirigés vers la même structure sous un domaine différent. Le site DNAME ne redirige pas le domaine auquel il s'applique. Les serveurs qui interrogent un domaine redirigé par un enregistrement de type DNAME recevra un CNAME réponse.

Si les deux domaines sont desservis par les mêmes serveurs, il serait possible d'éviter la redirection en utilisant le même fichier de zone pour les deux domaines.

1voto

Martin Kealey Points 176

Le "qu'est-ce que vous manquez" est que CNAME ne peut pas être utilisé à l'apex de la zone, et il importe peu qu'un DNAME est présent.

Pour le bien des personnes qui tombent sur cette question en s'informant sur les combinaisons. CNAME y DNAME sur un nom non-apex, je pointerais du doigt https://tools.ietf.org/id/draft-sury-dnsext-cname-dname-00.html y https://tools.ietf.org/id/draft-sury-dnsop-cname-plus-dname-01.html qui expliquent pourquoi il s'agit essentiellement d'une faille dans la spécification DNS existante.

Interdire un CNAME à l'apex d'une zone est une question entièrement différente de celle d'avoir une CNAME y DNAME s'appliquent au même nom, et il existe de bonnes et judicieuses raisons d'autoriser ce dernier (à condition qu'il ne s'agisse pas de l'apex, bien sûr).

En réalité, ce problème ne concerne que le logiciel du serveur DNS. Si le vôtre ne permet pas cette combinaison, envisagez de le mettre à niveau ou de le remplacer.

1voto

Martin Kealey Points 176

il semble que la réponse soit essentiellement que les architectes d'origine n'ont jamais pensé que ce serait utile ou quelque chose d'aussi irréfléchi.

Il est important de comprendre que le système de noms de domaine (DNS) remplaçait un arrangement qui utilisait une version clonée globalement de /etc/hosts sur tous les ordinateurs de l'internet de l'époque, de sorte que la fiabilité et la rapidité des réponses moyennes étaient essentielles à son adoption. La fiabilité et la rapidité des réponses moyennes étaient donc essentielles à son adoption. L'inclusion de résolveurs de mise en cache dans la conception originale a donc été un élément essentiel de son succès.

Depuis lors, l'accent a été mis sur la rétrocompatibilité. también extrêmement important : les résolveurs DNS en cache sont un service de base sur les appareils grand public qui fonctionnent généralement pendant 10~15 ans sans mises à jour logicielles.

Imaginons maintenant qu'un enregistrement CNAME soit autorisé en combinaison avec un autre type d'enregistrement, puis envisageons un résolveur de mise en cache.

Le premier problème est l'efficacité.

Selon l'ordre des requêtes et les TTL des enregistrements, il finira par n'avoir qu'un CNAME dans son cache pour un nom donné.

Que se passe-t-il alors lorsqu'un client (qui pourrait être un autre résolveur de cache) demande un AAAA : doit-il répondre en utilisant le CNAME, ou demander un AAAA au serveur faisant autorité ?

Le problème suivant est l'ambiguïté.

Si les noms du propriétaire et de la cible sont tous deux des sommets de zone, et que le client demande NS ou SOA, il y a deux réponses possibles complètement différentes, toutes deux valables en fonction des critères suivants pourquoi la demande a été faite.

La conception "keep it simple" voudrait que l'on traite toutes les requêtes de la même manière, car on ne sait pas si les requêtes sont identiques ou non. pourquoi le client demande : suivez toujours la redirection.

On pourrait arguer que des règles différentes devraient s'appliquer à des types d'enregistrement différents, et qu'il devrait y avoir une liste énumérée de types de RR qui pourraient coexister avec les enregistrements CNAME, mais une telle liste aurait dû faire partie de la conception originale (au début des années 1980). Et si cela aurait résolu le problème pour SOA & NS, cela n'aurait pas résolu le problème pour DNAME qui n'a été ajouté que plus tard.

L'ajout d'un champ "do not follow CNAME" dans l'enregistrement de la requête aurait probablement résolu la plupart des problèmes, sans ajouter beaucoup complexité, mais cela aurait été une conception prémonitoire à une époque où les liens symboliques étaient une nouveauté, et O_NOFOLLOW était encore dans une dizaine d'années.

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