DNS - Plusieurs enregistrements A ou 1 enregistrement A et beaucoup de CNAME?

29

Disons que j'ai un serveur Web, appelé «www». www.example.com résout l'adresse IP de cette machine. Ensuite, je veux créer des hôtes virtuels et des enregistrements DNS pour eux, comme webmail.example.com.

Pour «webmail», dois-je mettre un enregistrement A avec l'adresse IP de www, ou dois-je faire un CNAME sur www?

Qu'est-ce qui est «plus propre?», Plus robuste? mieux?

Rory
la source

Réponses:

26

Il y a deux points de vue différents sur cette question, et c'est celle qui sera finalement débattue pour toujours. Je ne vais pas donner mon avis (parce que je suis moi-même déchiré), mais les arguments généraux dans chaque sens sont généralement:

  • Vous devez définir les enregistrements A pour vos machines physiques, puis les services CNAME sur ces machines. Cela indique assez clairement ce qui est quoi, et dans le cas où vous devez renuméroter, il n'y a pas beaucoup d'enregistrements à modifier - juste les enregistrements de la machine. D'un autre côté, cela augmente quelque peu la charge de recherche DNS et les adresses IP "auxiliaires" (pensez aux vhosts SSL) ne s'intègrent pas parfaitement dans ce modèle.

  • La signification littérale de "nom canonique" (CNAME) est de définir des alias stricts du même nom (pensez mailet smtp), et si vous avez plusieurs services exécutés sur la même machine, ils devraient tous avoir des enregistrements A, car cela réduit la charge sur DNS et certains services (enregistrements NS et, dans une moindre mesure, enregistrements MX) ne sont vraiment pas impressionnés par le traitement des CNAME, donc si vous devez gérer ces services différemment de toute façon, nous pouvons tout aussi bien le faire pour tout.

womble
la source
12
Vous pouvez réellement ruiner / surcharger sérieusement votre serveur DNS en pointant un MX vers un CNAME. Je ne peux pas être dérangé d'expliquer pourquoi en ce moment, mais les serveurs de messagerie plus anciens (il y en a beaucoup là-bas) verront un MX pointant vers un CNAME et ne sauront pas comment le traiter et continueront à chercher et à mettre un énorme stress sur votre DNS et à la fin l'e-mail n'arrive jamais nulle part. NE POINTZ PAS MX À UN CNAME. DÉJÀ.
Mark Henderson
3
Je suis d'accord avec Farseeker, ne pointez pas MX vers un CNAME même si cela peut fonctionner. Consultez wikipedia (recherchez MX Record) ou RFC 2181 (section 10.3) si vous voulez les détails complets.
Benoit
+1 au ventre. Cette réponse exprime également mon point de vue. +1 à Farseeker. Les enregistrements MX sont l'exception. En ce qui concerne les références de Beoot, Wikipedia ne doit jamais être utilisé comme référence technique, car il y a beaucoup trop d'erreurs et d'inexactitudes. Alors que presque tout le monde aime citer les RFC, nous devons nous rappeler qu'ils ne sont pas des normes, mais simplement un précurseur d'une proposition de norme.
John Gardeniers
Désolé pour l'orthographe erronée du nom de Benoit. Il est temps que je me couche.
John Gardeniers
J'ai toujours utilisé des noms de domaine. Mon collègue a opté pour plusieurs enregistrements. Une autre raison pour laquelle cname est meilleur: il permet de décider facilement quel enregistrement obtient l'enregistrement ptr. J'ai gagné une bière d'un troisième collègue sur celui-ci.
dmourati
12

L'utilisation d'un CNAME double efficacement les recherches sur le serveur DNS. Lorsqu'une demande est mappée à un CNAME, elle doit ensuite rechercher l'enregistrement A pour le CNAME.

Cela dit, il y a une raison pour laquelle CNAME existe. Cela rend votre DNS beaucoup plus facile à gérer, et à moins que vous ne fassiez des dizaines de milliers de résolutions par jour, cela n'aura pas d'importance ...

Mark Henderson
la source
12

Plusieurs références suggèrent ici que les CNAME augmentent la charge DNS. Cela m'a rendu curieux. J'ai déclenché wirehark, inspecté une demande de CNAME et au moins dans notre environnement, le résultat a été renvoyé dans un enregistrement. Ce qui rappelle ici l'aphorisme de Knuth: "l'optimisation prématurée est la racine de tout mal".

J'aime les CNAME, mais surtout pour leur effet psychologique. Ils encouragent les gens (comme moi par exemple) à dissocier les noms de serveur des noms de service.

Notre environnement a plusieurs certificats SSL attachés aux noms de serveur opaques (ce que nous avons cessé de faire). Les CNAME fonctionnent beaucoup mieux ici. Dans tous les endroits où j'ai travaillé, la migration de services où le nom du serveur est étroitement lié au service est un casse-tête. Les CNAME donnent une ligne de séparation conceptuelle claire.

Joe Fortier
la source
Cela nécessite plus de votes positifs. Les enregistrements CNAME n'augmentent généralement pas le nombre d'aller-retour requis, car les résultats sont regroupés dans une seule réponse.
Nic
4

À mon avis, si les hôtes virtuels sont www.someotherdomain.com, je les traiterais comme un domaine distinct avec leur propre ensemble d'enregistrements DNS (ce qui facilitera plus tard s'ils doivent être divisés). Si toutefois c'est juste un blog .example.com, j'utiliserais un CNAME.

Juste ma préférence personnelle.

Sam
la source
2

J'utiliserais CNAME en raison de la perspective du DNS, le webmail est un alias de www.

Martin P. Hellwig
la source
2

Les CNAME augmentent la charge sur le système DNS, pas sur votre ordinateur personnel ou votre connexion Internet. Je pense que certaines personnes ici n'ont pas fait cette distinction lorsqu'elles ont répondu.

Utilisez des enregistrements A pour les enregistrements principaux à fort trafic (@ et www), par exemple. Utilisez des CNAME pour les enregistrements secondaires qui seront toujours mappés sur la même IP d'un enregistrement principal. Par exemple, si vous avez un domaine "member.site.com" qui sera toujours résolu sur la même IP que "www.site.com", vous pouvez utiliser un CNAME ici pour plus de commodité, mais si vous pouvez utiliser un enregistrement A , cela résoudrait plus rapidement.

TheDigitalOrchard
la source
Merci, j'ai trouvé la réponse claire, mais votre commentaire est encore plus simple à comprendre :)
karni