Enregistrement de nom canonique

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

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) 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; chaqu'un 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 record A qui pointe vers une adresse IP. Ensuite, si jamais l'adresse IP change, il n'y à 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 records DNS CNAME sont spécifiés dans [rfc:1034 la RFC 1034[1]] et précisé dans l'Article 10 de [rfc:2181 la RFC 2181[2]].

Les enregistrements CNAME sont traitées spécialement dans le DNS, et ont plusieurs restrictions sur leur utilisation. Lorsqu'un résolveur DNS rencontre un enregistrement CNAME, alors qu'il est à la recherche d'un enregistrement classique, il va redémarrer 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, s'il y a une zone DNS comme suit:

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

 quand une recherche pour bar.example.com est effectué, le solveur va voir un enregistrement CNAME et redémarrer la vérification avec foo.example.com et retournera 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 à 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 de 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 doit jamais pointer vers un alias CNAME (RFC 2181[2] section 10.3). Ainsi, par exemple, une zone 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 à pas de record A directement lié à foo.

Cependant, une recherche pour xyzzy.foo.example.com sera  mappée et retoura 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 retour 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 16 avril 2011)
  5. R. Braden, « RFC1123 - MAIL - SMTP & RFC-822 », (consulté le 3 juin 2011)
  6. D.J. Bernstein, « CNAME records in mail » (consulté le 3 juin 2011)
  7. (en) Request for Comments no 6672.
  8. (en) Request for Comments no 2672.

Liens externes[modifier | modifier le code]