DNS records : comment fonctionnent les enregistrements DNS ?

Le Domain Name System (DNS) permet à un internaute de taper le nom d’un domaine dans son navigateur et d’arriver automatiquement sur le site souhaité. En réalité, la communication entre les différents éléments d’un réseau se fait au moyen d’adresses IP. Les chiffres qui composent une adresse IP étant assez complexes, il nous suffit de taper le nom du site Internet. Celui-ci est alors automatiquement traduit en une suite de chiffres. Mais comment se fait cette traduction ?

Qu’est-ce que les DNS records ?

Lorsque vous tapez l’adresse d’un site Web dans votre navigateur, le système doit commencer par déterminer l’adresse IP associée à ce domaine. Cette opération se fait parfois au niveau de la mémoire de votre ordinateur. Parfois, elle est assurée au niveau d’une banque de données de votre fournisseur d’accès internet ou d’autres serveurs DNS. En cas de doute, l’ordinateur peut aussi recourir à un serveur racine du DNS, un serveur qui fait office d’instance autoritaire, et qui gère tout le Domain Name System. Pour qu’une résolution de nom puisse se faire, il faut entreprendre une recherche dans la base de données des DNS, ou rechercher le nom du serveur parmi les enregistrements DNS, que l’on appelle aussi « DNS records » ou « enregistrements de ressources ». C’est là que sont enregistrées toutes les adresses IP (connues du serveur) avec les noms de domaines associés.

Le DNS est une base de données hiérarchique et décentralisée. À chaque niveau, il y a un serveur responsable de ce qu’on appelle l’espace de noms. Pour la recherche de l’adresse IP correspondant à www.example.com, le serveur racine ne pourra vous renseigner qu’à condition qu’il ait connaissance du serveur responsable du Top-Level-Domain (TLD) .com. Il parcourt ainsi les différents niveaux pour procéder à la résolution de noms. Concrètement, l’adresse IP du véritable serveur Web ou du serveur de messagerie est finalement rattachée à l’ordinateur-hôte lui-même. C’est pourquoi il est important pour un propriétaire de site de bien comprendre le concept des enregistrements de ressources.

Comment fonctionnent les DNS records ?

Les enregistrements DNS se trouvent tout d’abord dans les fichiers de zone. Dans un contexte DNS, une zone représente un domaine organisé. Il est possible qu’un domaine ne soit composé que d’une seule zone. Les domaines plus importants renferment cependant plusieurs zones. Chaque serveur DNS est responsable d'une zone. Si un Client souhaite interroger un domaine spécifique, le serveur DNS recherchera les enregistrements correspondants dans les fichiers de zones, et procèdera successivement à des recherches dans les serveurs de niveaux inférieurs jusqu’à ce qu’il atteigne la cible.

La syntaxe des enregistrements DNS

Les enregistrements de ressources respectent une structure simple et sont codés en ASCII. Chaque DNS record est associé à une ligne propre. Les enregistrements répondent généralement au format suivant :

<name> <ttl> <class> <type> <rdlength> <radata>

Chacune de ces informations est séparée d’un espace, sachant que certaines données sont facultatives. Certains types d’enregistrements renferment encore plus de champs. À quoi correspondent les principaux champs d’enregistrement DNS ?

  • <name> : le nom du domaine correspond à ce que l’internaute va taper dans son navigateur.
  • <ttl> : TTL ou « Time to live » (durée de vie) désigne la durée (en secondes) pendant laquelle l’enregistrement DNS peut être conservé dans le cache. Après expiration de ce délai, il n’est pas certain que l’enregistrement de la ressource soit encore valide. Cette information est facultative.
  • <class> : théoriquement, les DNS records sont répartis en plusieurs classes. Dans la réalité, la plupart des enregistrements DNS relèvent de la classe Internet (désignée comme IN). Cette information est donc facultative.
  • <type>: un fichier de zone renferme plusieurs types d’enregistrements de ressources (plus de précisions sont données un peu plus bas).
  • <rdlength> : ce champ facultatif précise la taille en octets du champ de données suivant.
  • <rdata> : les données de ressources sont les informations à partir desquelles on va résoudre le nom du domaine, par exemple son adresse IP.

Pour le serveur internet example.com, ce sera donc :

www.example.com. 12879 IN A 93.184.216.34

Ici, un Client pourra conserver l’enregistrement DNS dans son cache pendant 12 879 secondes (environ 3 heures et demie). Passé ce délai, il devra à nouveau interroger le serveur DNS. Il s’agit d’un DNS record de type Internet (IN) et de type A (A). Le domaine est donc traduit à partir d’une adresse IP.

Il est possible d’ajouter encore une précision.

$TTL 12879
$ORIGIN example.com.
www A 93.184.216.34

Cette indication précise que l’ordinateur portant le nom www fait bien partie du domaine example.com. Cela permet d’ajouter d’autres ordinateurs (mail ou ftp) dans le même domaine d'origine.

Note

Le nom d’un domaine se termine par un point final (en réalité, il commence par un point, car on le lit normalement de la droite vers la gauche). Dans les DNS records, on utilise des Fully Qualified Domain Names (noms de domaines pleinement qualifiés) (FQDN) dans lesquels se trouve aussi le label racine, bien qu’il soit vide. On le trouve généralement derrière le point.

Les principaux types d'enregistrements DNS

Un type d’enregistrement permet de préciser le type d’information qui est contenu dans l’enregistrement. En plus de la résolution des noms de domaines à partir des adresses IP, les enregistrements DNS ont d’autres fonctions.

L’enregistrement A

La plupart des résolutions de noms sur Internet se font au moyen des enregistrements de type A. Son champ de donnée renferme une adresse IPv4. Ces enregistrements permettent notamment à un internaute de saisir un nom de domaine dans le navigateur : l’ordinateur envoie alors une requête HTTP à l’adresse IP correspondante. Une adresse IPv4 ayant toujours une taille de 4 octets, la valeur rdlength sera toujours 4.

L’enregistrement AAAA

Un enregistrement AAAA, aussi connu sous le nom de « quad-a », fonctionne comme un enregistrement A, sauf qu’il a recours à une adresse IPv6 au lieu d’une adresse IPv4 pour résoudre le nom du domaine. Une adresse IPv6 ayant une longueur de 128 bits ou 16 octets, on précise ici la longueur du champ de données. La désignation AAAA est une manière d’indiquer que cet enregistrement DNS est quatre fois plus long qu’un enregistrement A.

L’enregistrement SOA

SOA signifie Start of Authority (début d’autorité). Les enregistrements de ce type renferment des informations sur la zone, qui sont organisées au moyen du fichier de zone ou du serveur DNS. Ils sont importants entre autres pour le transfert de zone : ce transfert consiste à répliquer une zone d’un serveur vers un autre pour parer d’éventuelles pannes. Le transfert de zone permet d’assurer une réplication fidèle du fichier d’origine. Dans un tel enregistrement DNS, vous trouverez derrière l’adresse électronique de l’administrateur un numéro de série. Celui-ci est incrémenté à chaque nouvelle mise à jour.

L’enregistrement CNAME

Dans un enregistrement CNAME (Canonical-Name-Record) on trouve un alias, c’est à dire un autre nom applicable à un domaine. L’entrée renvoie à un enregistrement existant, de type A ou AAAA. Pour ce type, le champ rdata indique le nom du domaine qui a été précédemment relié au fichier à l’aide d’une adresse IP. Cela permet de renvoyer plusieurs adresses différentes vers le même serveur.

L’enregistrement MX

Un enregistrement MX renvoie à un Mail Exchanger ou à un serveur de messagerie SMTP. On y enregistre un ou plusieurs serveur(s) de messagerie appartenant au domaine correspondant. Si on utilise plusieurs serveurs de messagerie, par exemple pour pallier d’éventuelles pannes, on doit préciser l’ordre de priorité. Le DNS sait alors dans quel ordre il doit interroger les serveurs de mails.

L’enregistrement PTR

Le PTR-Record (pointeur) est un DNS record qui permet un Reverse-Lookup (recherche inversée). Le serveur DNS peut ainsi donner des informations sur les noms des hôtes qui sont associés à une adresse IP spécifique. Chaque adresse IP utilisée dans un enregistrement de type A ou AAAA, est associée à un enregistrement PTR. L’adresse IP est alors structurée dans l’ordre inverse, avant d’être complétée par le nom d’une zone.

L’enregistrement NS

Dans un enregistrement NS, l’entrée du serveur de nom d’un fichier de zone, on vous indique la compétence d’une zone particulière. Cette entrée est donc obligatoire pour chaque fichier de zone. Cet enregistrement de ressources permet d’indiquer au serveur DNS s’il est compétent pour la requête, c’est-à-dire en charge de la zone, ou bien s’il doit transférer la requête.

L'enregistrement TXT

Le record TXT renferme du texte qui n’est pas destiné à des utilisateurs, ni même à être lu par les machines. Cet enregistrement DNS permet à un administrateur de sauvegarder du texte non-structuré (à la différence des données structurées renfermées dans les autres enregistrements DNS). Il peut par exemple renfermer des détails qui relèvent de l’entreprise responsable du domaine.

L’enregistrement SRV

Avec un enregistrement SRV, vous pouvez informer un serveur d’autres services (SRV) proposés. Vous y inscrivez le service disponible, ainsi que le numéro de port. Vous pouvez aussi y entrer le protocole que vous souhaitez employer. Cette entrée DNS permet par exemple de donner à un client des informations portant sur des services LDAP ou XMPP.

L’enregistrement LOC

Un enregistrement LOC permet de donner des informations sur la position géographique du serveur. À la fin de cet enregistrement se trouvent des données quant à la latitude, la longitude et l’altitude au-dessus du niveau de la mer, ainsi que la précision de la position indiquée.

Conseil

Découvrez-en plus sur « Qu’est-ce que la propagation DNS ? » dans notre article détaillé.

Fichier de zone

Un fichier de zone (simple fichier texte) renferme la liste de tous les enregistrements DNS. Pour que les données puissent être traitées correctement, vous devez respecter certaines conditions. Dans le cas contraire, le DNS ne peut pas fonctionner, et le Client voit s’afficher le message d’erreur SERVFAIL. C’est la raison pour laquelle on respecte une structure bien précise. On commence par indiquer le nom de la zone, suivi le plus souvent par la TTL. Renseigner la durée de vie juste après présente l’avantage de vous éviter d’avoir à préciser cette donnée dans chaque enregistrement de ressources. La TTL est alors applicable à toute la zone.

$ORIGIN example.com.
$TTL 12879

Le premier enregistrement DNS est un enregistrement SOA. Celui-ci est obligatoire pour que le fichier de zone puisse fonctionner. Inversement, un fichier de zone reste valide même s’il ne renferme que l’enregistrement SOA. Viennent ensuite les enregistrements qui concernent les noms des serveurs, suivis des enregistrements A et AAAA.

Si l’on veut ajouter des remarques dans un fichier, par exemple pour simplifier la tâche d’autres administrateurs, on utilise des points-virgules. On peut ainsi ajouter des informations à la fin d’une ligne d’un DNS record sans que le serveur n’ait à traiter ces informations. Pour structurer les enregistrements, vous pouvez incorporer des lignes vierges. Celles-ci seront également ignorées au moment de l’interprétation. À chaque enregistrement, sa propre ligne. Un retour à la ligne marque la fin d’un enregistrement. Si vous souhaitez malgré tout saisir un même enregistrement sur plusieurs lignes, vous devez utiliser des parenthèses.

Un aperçu de tous les types d’enregistrements DNS

En plus des types que nous venons de vous présenter, il existe un grand nombre d’autres types de ressources que vous pourrez rencontrer dans les fichiers de zones, bien qu’ils soient moins fréquents. Le tableau ci-dessous vous présente l’ensemble des types suivis d’une explication succincte.

Note

L’Internet Assigned Numbers Authority (IANA) dont la mission est de superviser l’allocation des adresses IP, a assigné une valeur (un numéro d’identification) à chaque type de DNS record.

Valeur Type Description
1 A Address indique l’adresse IPv4 d’une machine.
2 NS Nameserver définit l’autorité d’une zone.
3 MD Mail Destination a été remplacé par MX-Record (obsolète).
4 MF Mail Forwarder a été remplacé par MX-Record (obsolète).
5 CNAME Canonical Name permet d’enregistrer un alias.
6 SOA Start of Authority donne des précisions sur la zone.
7 MB Mailbox Domain Name a une valeur expérimentale.
8 MG Mail Group Member a une valeur expérimentale.
9 MR Mail Rename Domain Name a une valeur expérimentale.
10 NULL Null Resource a une valeur expérimentale.
11 WKS Well Known Service a été utilisé pour faire suivre des mails (obsolète entre temps).
12 PTR Pointer sert aux recherches inversées.
13 HINFO Host Information donne des informations sur le matériel et le logiciel de l’hôte.
14 MINFO Mailbox Information a une valeur expérimentale.
15 MX Mail Exchange permet d’assigner un serveur de mails à un domaine.
16 TXT Text permet de saisir du texte complémentaire.
17 RP Responsible Person donne des indications sur les personnes responsables.
18 AFSDB AFS Database est destiné aux Clients AFS.
19 X25 X.25 PSDN Address donne des précisions sur le chiffrement par X.25 (obsolète).
20 ISDN Cette valeur assigne un numéro ISDN au nom DNS (obsolète).
21 RT Route Through Record permet un lien de type « Route-through » sans adresse WAN (obsolète).
22 NSAP Cette entrée permet d’assigner des noms de domaines à des Network Service Access Points (obsolète).
23 NSAP-PTR NSAP Pointer a été remplacé par PTR (obsolète).
24 SIG Signature a été remplacé par RRSIG (obsolète).
25 KEY Key a été remplacé par IPSECKEY (obsolète).
26 PX Pointer to X.400 permet de définir des règles de MIXER-Mapping (obsolète).
27 GPOS Geographical Position a été remplacé par LOC (obsolète).
28 AAAA AAAA délivre l’adresse IPv6 d’une machine.
29 LOC Location renferme des informations sur le lieu d’implantation.
30 NXT Next a été remplacé par NSEC (obsolète).
31 EID Endpoint Identifier a été conçu pour les architectures de routage Nimrod (obsolète).
32 NIMLOC Nimrod Locator a été conçu pour les architectures de routage Nimrod (obsolète).
33 SRV Service Locator donne des précisions sur d’autres éventuels services.
34 ATMA ATM Address donne des indications liées au mode de transfert asynchrone (obsolète).
35 NAPTR Naming Authority Pointer est une extension de l’enregistrement de type A, autorisant des modes de recherche (expressions régulières).
36 KX Key Exchange permet la gestion des clés en rapport avec le chiffrement.
37 CERT Cert enregistre des certificats.
38 A6 A6 a été remplacé par AAAA.
39 DNAME Delegation Name donne des alias pour des domaines complets.
40 SINK Kitchen Sink permet d’enregistrer différentes données (obsolète).
41 OPT Option est un pseudo-enregistrement utilisé en rapport avec l’EDNS qui est une extension du protocole Domain Name System.
42 APL Address Prefix List dresse la liste des adresses au format CIDR.
43 DS Delegation Signer permet d’identifier des zones signées DNSSEC.
44 SSHFP SSH Public Key Fingerprint permet de publier l’empreinte du serveur SSH.
45 IPSECKEY IPsec Key renferme une clé pour IPsec.
46 RRSIG RR Signature renferme une signature numérique pour le DNSSEC.
47 NSEC Next Secure relie des zones signées dans le DNSSEC.
48 DNSKEY DNS Key renferme une clé publique pour le DNSSEC.
49 DHCID DHCP Identifier associe les noms de domaine avec les clients DHCP.
50 NSEC3 Next Secure 3 est une alternative à NSEC.
51 NSEC3PARAM Cette entrée renferme des Paramètres pour NSEC3.
52 TLSA Cette entrée crée une TLSA Certificate Association avec un nom de domaine dans le cadre du DANE.
53 SMIMEA Cette entrée crée une S/MIME Certificate Association avec un nom de domaine.
54 n/a Non assigné.
55 HIP Host Identity Protocol sépare les rôles d'identificateur et de localisateur dans les adresses IP.
56 NINFO NINFO donne des informations quant au statut de la zone (structure identique à TXT ; obsolète).
57 RKEY RKEY enregistre des clés (structure identique à KEY et DNSKEY ; obsolète).
58 TALINK Trust Anchor Link permet de relier deux noms de domaines (obsolète).
59 CDS Child DS est une « copie-enfant » d’un enregistrement DS.
60 CDNSKEY Child DNSKEY est une « copie-enfant » d’un enregistrement DNSKEY.
61 OPENPGPKEY OpenPGP Key permet de distribuer les clés publiques.
62 CSYNC Child-to-Parent Synchronization permet de synchroniser des zones « parents et enfants » (obsolète).
63 ZONEMD Message Digest for DNS Zone a une valeur expérimentale (obsolète).
64-98 n/a Non assigné.
99 SPF Sender Policy Framework a été remplacé par l’enregistrement TXT (obsolète).
100 UINFO Réservé.
101 UID Réservé.
102 GID Réservé.
103 UNSPEC Réservé.
104 NID NodeID a une valeur expérimentale.
105 L32 32-bit Locator a une valeur expérimentale.
106 L64 64-bit Locator a une valeur expérimentale.
107 LP Locator Pointer a une valeur expérimentale.
108 EUI48 48-bit Extended Unique Identifier permet de chiffrer des adresses.
109 EUI64 64-bit Extended Unique Identifier permet de chiffrer des adresses.
110-248 n/a Non assigné.
249 TKEY Transaction Key permet l’échange de clés secrètes.
250 TSIG Transaction Signature sert à l’authentification.
251 IXFR Incremental Zone Transfer permet de mettre à jour des parties d’un fichier de zone sur un deuxième serveur (obsolète).
252 AXFR AFXR permet de transférer un fichier de zone complet vers un deuxième serveur (obsolète).
253 MAILB Mailbox gère les requêtes autour d’une messagerie (obsolète).
254 MAILA Mail Forwarder a été remplacé par MX-Record (obsolète).
255 * * gère toutes les entrées (obsolètes).
256 URI Uniform Resource Identifier permet d’assigner des noms d’hôte à des URI.
257 CAA Certificate Authority Authorization permet de préciser les CA possibles pour un domaine.
258 AVC Application Visibility and Control renferme des méta-données d’application pour le DNS-AS (obsolète).
259 DOA DOA n’est plus activé (obsolète).
260 AMTRELAY Automatic Multicast Tunneling Relay permet de trouver les relais AMT (obsolète).
261-32767 n/a Non attribué.
32768 TA DNSSEC Trust Authorities permet d’utiliser le DNSSEC sans racine signée.
32769 DLV DNSSEC Lookaside Validation distribue des Trust Anchors (certificats de confiance) en dehors de la chaîne DNS.
32770-65279 n/a Non assigné.
65280-65534 n/a Réservé à un usage privé.
65535 n/a Réservé.