Une chaîne CNAME à CNAME est-elle autorisée?

68

Est-il permis dans le DNS d'avoir un enregistrement CNAME qui pointe vers un autre enregistrement CNAME?

La raison pour laquelle nous en avons besoin est que nous avons un nom d’hôte sur lequel nous voulons être interrogés sur l’adresse IP de notre serveur Web. Nous avons également un autre serveur Web en attente qui pourrait être activé au cas où le premier mourrait. Dans un tel cas, nous aurions rapidement besoin de pointer le nom d’hôte sur l’adresse IP de l’ordinateur du serveur Web de secours.

Malheureusement, le nom d'hôte réside dans un domaine DNS où toute modification prendrait beaucoup de temps en raison d'une opération manuelle dépendant d'autres administrateurs système. Mais nous avons un autre domaine DNS où nous pouvons effectuer les modifications nous-mêmes rapidement. Avoir CNAME vers CNAME semble être une solution possible. Mais est-ce permis? Est-ce que les navigateurs web le comprendront?

Erik Sjölund
la source

Réponses:

81

De la RFC 1034 - Noms de domaine - concepts et installations :

Les noms de domaine dans les RR qui pointent sur un autre nom doivent toujours pointer sur le nom principal et non sur l'alias. Cela évite des indirects supplémentaires lors de l'accès à l'information. Par exemple, l'adresse pour nommer RR pour l'hôte ci-dessus doit être:

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU

plutôt que de pointer sur USC-ISIC.ARPA. Bien entendu, selon le principe de robustesse, les logiciels de domaine ne doivent pas échouer lorsqu'ils sont présentés avec des chaînes ou des boucles CNAME; Les chaînes CNAME doivent être suivies et les boucles CNAME signalées comme une erreur.

Alors oui, il est permis et un logiciel correctement écrit le traitera correctement. Les chaînes CNAME ne sont toutefois pas considérées comme de bonnes pratiques et imposent des frais généraux aux infrastructures.

Paweł Brodacki
la source
3
+1 pour la référence RFC
Alnitak le
16
Bien que je le fasse tout le temps, la citation ci-dessus est hors contexte. Juste au dessus de ce paragraphe, on lit ..Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
Molomby
3
Mentionné par le responsable réseau de Microsoft Azure , le chaînage CNAME est important pour équilibrer le chargement AnyCast.
Paul Lan
26

Bien sûr, c'est possible.

Cependant, il est généralement déconseillé , pour la raison évidente d'utiliser davantage de ressources DNS. Par exemple:

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo

Si vous foointerrogez 'bar', CNAME sera interrogé, ce someserver.somehost.com.qui entraînera une interrogation supplémentaire.

Pour chaque élément de la chaîne que vous allez ajouter, une autre requête sera requise.

Une autre raison pour laquelle cela est découragé est que, en créant de telles chaînes, les chances de créer des boucles CNAME sont augmentées. ceux-ci devraient être détectés automatiquement par les serveurs DNS actuels, mais imposeraient toujours une charge importante sur les serveurs.

Aron Rotteveel
la source
5

Oui, c'est autorisé et cela fonctionnera, mais ce n'est pas considéré comme une bonne pratique. Les recherches multiples utilisent davantage de ressources et risquent de créer accidentellement une boucle.

Mike Scott
la source