Enregistrement de nom canonique

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Enregistrement CNAME)

Un enregistrement de nom canonique (en abrégé « enregistrement CNAME ») est un type d'enregistrement ressource dans le Système des noms de Domaine (DNS) qui permet de spécifier qu'un nom de domaine est un alias pour un autre domaine.

Cela peut s'avérer pratique lors de l'exécution de plusieurs services (comme un serveur FTP et un serveur web ; chacun en cours d'exécution sur des ports différents) à partir d'une seule adresse IP. On peut, par exemple, pointer ftp.example.com et www.example.com à l'entrée DNS example.com, qui a un enregistrement A pointant vers une adresse IP. Ensuite, si l'adresse IP change, il n'y a qu'un changement à faire dans le réseau.

Les enregistrements CNAME doivent toujours pointer vers un autre nom de domaine, jamais directement à une adresse IP.

Détails[modifier | modifier le code]

Les enregistrements CNAME sont spécifiés dans [rfc:1034 la RFC 1034[1]] et précisés dans l'article 10 de [rfc:2181 la RFC 2181[2]].

Ils sont traités spécialement dans le DNS, et ont plusieurs restrictions sur leur utilisation. Lorsqu'un résolveur DNS en rencontre alors qu'il est à la recherche d'un enregistrement classique, il redémarre la requête en utilisant le nom canonique au lieu de son nom d'origine. Si le résolveur est lancé dans le but de regarder les enregistrements CNAME, le nom canonique (à droite) est renvoyé, plutôt que de redémarrer la requête. Le nom canonique qu'un enregistrement CNAME pointe peut être n'importe où dans le DNS, qu'il soit sur le serveur local ou sur un serveur distant dans une autre zone DNS.

Par exemple, avec la zone DNS suivante, lors d'une recherche pour bar.example.com, le solveur voit un enregistrement CNAME. Il redémarrera la vérification avec foo.example.com et retournera 192.0.2.23.

NOM              TYPE      VALEUR
--------------------------------------------------
bar.example.com. CNAME  foo.example.com.
foo.example.com. A          192.0.2.23

 

Restrictions[modifier | modifier le code]

  • Les enregistrements CNAME doivent toujours être orientés vers un autre nom de domaine, jamais vers une adresse IP.
  • Un alias défini dans un enregistrement CNAME ne doit pas avoir d'autres types (MX, A, etc.). (RFC 1034[1] section 3.6.2, RFC 1912[3] section 2.4) Une exception a lieu quand le DNSSEC est utilisé, dans ce cas, il peut y avoir des records liés à DNSSEC com RRSIG, NSEC, etc. (RFC 2181[2] section 10.1)
  • Les enregistrements CNAME pointant vers d'autres enregistrements CNAME doivent être évités en raison de leur manque d'efficacité, mais ne sont pas une erreur[4]. Il faut faire attention à ne pas créer de boucles infinies comme :
foo.example.com. CNAME bar.example.com.
bar.example.com. CNAME foo.example.com.
  • MX et les enregistrements NS ne doivent jamais pointer vers un alias CNAME (RFC 2181[2] section 10.3). Ainsi, par exemple, une zone ne doit pas contenir des éléments tels que :
example.com. MX 0 foo.example.com.
foo.example.com. CNAME host.example.com.
host.example.com. A 192.0.2.1
  • Les domaines qui sont utilisés pour l'e-mail ne peuvent pas avoir un enregistrement CNAME[5]. Dans la pratique, cela peut fonctionner, mais peut avoir un comportement différent avec les différents serveurs de messagerie, et peut avoir des effets non souhaités[6].

DNAME record[modifier | modifier le code]

Un DNAME record ou « Délégation d'enregistrement de Nom » est défini par [rfc:6672 la RFC 6672[7]] (l'original RFC 2672[8] est aujourd'hui obsolète). Un DNAME record crée un alias pour l'ensemble des sous-arbre du nom de domaine. En revanche, l'enregistrement CNAME crée un alias pour un nom unique et pas de ses sous-domaines. Le DNS synthétise un enregistrement CNAME pour appliquer le DNAME de la demande de nom— Cname pour chaque nœud sur un sous-arbre à le même effet qu'un DNAME pour l'ensemble du sous-arbre.

Par exemple, s'il y a une zone DNS comme suit:

foo.example.com. DNAME bar.example.com.
bar.example.com. A 192.0.2.23
xyzzy.bar.example.com. A 192.0.2.24
*.bar.example.com. A 192.0.2.25

Une recherche d'un record A foo.example.com ne retournera rien parce qu'un DNAME n'est pas un CNAME et il n'y a pas de record A directement lié à foo.

Cependant, une recherche pour xyzzy.foo.example.com sera mappée et retournera le A record pour xyzzy.bar.example.com, qui est 192.0.2.24; si le NOM d'enregistrement avait été un enregistrement CNAME, cette demande aurait retourné le nom est introuvable.

Enfin, une demande de foobar.foo.example.com serait mappée et retournerait 192.0.2.25.

Voir aussi[modifier | modifier le code]

Références[modifier | modifier le code]

  1. a et b (en) Request for comments no 1034
  2. a b et c (en) Request for comments no 2181
  3. (en) Request for comments no 1912
  4. P. Mockapetris, « RFC1034 - Domain Names, Concepts and Facilities », ISI, (consulté le )
  5. R. Braden, « RFC1123 - MAIL - SMTP & RFC-822 », (consulté le )
  6. D.J. Bernstein, « CNAME records in mail » (consulté le )
  7. (en) Request for comments no 6672
  8. (en) Request for comments no 2672
  9. (en) Request for comments no 2219

Lien externe[modifier | modifier le code]