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.
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.
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.
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.
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.
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.
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.
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é. |