DNS

Rôle du DNS

Tout appareil connecté à un réseau IP, tel qu'Internet, est identifié par une adresse IP.

Afin de faciliter la navigation utilisateur sur Internet, on utilise des noms de domaine tel que "www.ip-dns-tools.com". Il est plus simple pour un utilisateur de retenir un nom de domaine qu'une adresse IP

D'un point de vue machine, la communication s'effectue au travers de données numériques (adresses IP).

Le rôle principal du DNS (Domain Name System) est d'associer un nom de domaine à une adresse IP. Des informations complémentaires peuvent être transmises grâce au DNS tel que le serveur de messagerie associé au domaine.

Hierarchie

Schéma du système DNS
ip-dns-tools.com. et google.fr.

Le résolution de nom de domaine repose sur un système hiérarchique.

Tout nom de domaine est dans une hiérarchie dont le sommet est appelé racine. Sous ce sommet se trouvent les TLD (Top Level Domain) : .com, .org, .fr, ... . Sous ces TLD, on retrouve les noms de domaines de sites tel que "ip-dns-tools". Plusieurs serveurs DNS répartis dans le monde sont ces serveurs racine. Cette hiérarchie permet de créer des sous-domaines.

Afin de comprendre le système hiérarchique, on écrit une adresse sous sa forme pleinement qualifiée (FQDN : Fully Qualified Domaine Name). Cette notation comprend l'adresse complète ponctuée d'un point final représentant la racine (exemple : www.ip-dns-tools.com.).

A partir de cet exemple, on peut en déduire que :

  • "." est la racine.
  • "com" est le TLD.
  • "ip-dns-tools" est un nom domaine ainsi qu'un sous-domaine de "com".
  • "www" est un sous-domaine de "ip-dns-tools".

Résolution DNS

Deux modes de résolutions existent dans le système DNS : La résolution directe et la résolution inverse. La réponse finale provient d'un serveur DNS faisant autorité sur son domaine ou d'un serveur ayant mis le résultat dans sa mémoire cache (requête déjà effectuée auparavant).

Le protocole DNS utilise par standard le port 53 couplé au protocole UDP.

Résolution directe

Schéma d'une résolution de nom  DNS
1 - Le client 1 demande
www.ip-dns-tools.com
2 - Le serveur DNS interroge la racine
3 - La racine répond au serveur DNS
en indiquant le serveur .com
4 - Le serveur DNS interroge .com
5 - .com répond en indiquant le serveur
ip-dns-tools
6 - Le serveur DNS interroge ip-dns-tools
7 - ip-dns-tools répond à la demande de
résolution de www.ip-dns-tools.com
8 - Le serveur DNS envoi le résultat au
client
9 - Le client 2 demande
www.ip-dns-tools.com
10 - Le serveur DNS renvoi la réponse
à partir de son cache

La résolution directe consiste à trouver l'adresse IP d'un serveur à partir de son nom de domaine. La résolution se fait en contactant un serveur DNS qui effectuera la recherche pour vous. Un serveur DNS fonctionne de manière récursive. Pour cela, il découpera l'adresse que vous souhaitez contacter en partant de la droite jusqu'à la gauche.

Par exemple, pour contacter le site www.ip-dns-tools.com, le serveur DNS va rechercher de la manière suivante :

  • Appel du serveur DNS racine pour trouver .com
  • Appel du serveur DNS com pour trouver ip-dns-tools.com
  • Appel du serveur DNS ip-dns-tools pour trouver www.ip-dns-tools.com
  • Envoi de la réponse contenant l'adresse IP de www.ip-dns-tools.com à l'utilisateur

Résolution inverse

La résolution inverse consiste à trouver le nom associé à une adresse IP.

Le fonctionnement de la résolution inverse se base sur le même principe que la résolution directe en partant de la partie la plus générale vers la partie le plus précise et en y ajoutant ".in-addr.arpa".

".in-addr.arpa" indique au serveur une demande de résolution inverse.

Pour une résolution de "www.ip-dns-tools.com.", on recherche ".", puis, ".com.", puis ".ip-dns-tools.com.", puis enfin "www.ip-dns-tools.com.".

Dans une adresse IP, la partie générale est au début (voir : Définition IP paragraphe Masque de sous-réseau).

Pour l'adresse IP 50.100.150.200, le serveur DNS va effectuer la recherche "200.150.100.50.in-addr.arpa"

Cache DNS

Lorsque qu'un serveur DNS effectue une résolution, il enregistre temporairement le résultat de la requête DNS en fonction du TTL (Time To Live) définit sur le serveur cible.

De ce fait, si un domaine est demandé plusieurs fois, la réponse sera renvoyée directement à l'utilisateur sans effectuer les requêtes récursives.

Zones DNS

Une zone DNS correspond à un serveur pouvant résoudre un ensemble de nom et d'adresse d'un même domaine.

Par exemple, un serveur DNS responsable de la zone "google.com" pourra résoudre les sous-domaines tels que "www.google.com" ou "support.google.com".

Le principal logiciel utilisé pour configurer un serveur DNS sous Linux est BIND (Berkeley Internet Name Daemon).

Serveurs primaires et secondaires

Généralement, il y a au moins 2 serveurs DNS pour une même zone : un serveur DNS primaire (Primary) et au moins 1 serveur DNS secondaire (Secondary)

Une configuration permet de répliquer les données d'une zone du serveur primaire vers les serveurs secondaires. Lorsqu'un serveur est saturé ou en panne, les autres serveurs peuvent tout de même répondre aux demandes de résolutions.

La configuration d'un serveur DNS tourne autour de la notion d'enregistrements DNS. Ces enregistrements permettent d'identifier quels types d'associations sont effectuées.

Principaux enregistrements

A

L'enregistrement DNS de type A fait correspondre un nom à une adresse IPv4.

AAAA

L'enregistrement DNS de type AAAA fait correspondre un nom à une adresse IPv6.

PTR

L'enregistrement DNS de type PTR fait correspondre une adresse IP à un nom.

CNAME

L'enregistrement DNS de type CNAME permet de faire un alias entre un domaine et un autre.

NS

Les enregistrements DNS de type NS indiquent les autres serveurs DNS de la zone disponibles.

MX

Les enregistrements DNS de type MX indiquent les serveurs de messagerie. Cet enregistrement possède un attribut définissant la priorité d'un serveur par rapport à un autre.

SOA

L'enregistrement DNS de type SOA donne des informations sur la zone. Il est composé du nom du serveur, de l'adresse email d'un contact ainsi que de paramètres. Ces paramètres sont :

  • Serial : Numéro de version du fichier. Ce numéro permet aux serveurs secondaires d'identifier une mise à jour. Conventionnelement, on utilise le format "yyyymmddnn"yyyy est l'année, mm le mois, dd le jour et nn le compteur de révision de la journée (+1 à chaque modification dans la journée).
  • Refresh : Délai entre les demandes de vérification de mise à jour des données de la zone par les serveurs secondaires.
  • Retry : Délai entre 2 tentatives de mises à jour de serveurs secondaires en cas d'échec.
  • Expire : Délai à partir duquel la zone n'est plus sensée être valide en cas de non réponse du serveur primaire.
  • TTL (Time To Live) : Durée pendant laquelle un enregistrement peut être stocké dans le cache d'un serveur ayant demandé une résolution de nom.

TXT

L'enregistrement DNS de type TXT permet d'insérer du texte dans une zone. Celui-ci peut par exemple être utilisé pour définir les valeurs SPF, DKIM ou DMARC afin de lutter contre le spam.

Exemple de fichiers de configuration de zone

Avec BIND, une zone DNS effectuant des résolutions directes et inverses est configurée au travers de 3 fichiers principaux :

Fichier de zone

// Résolution directe
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};

// Résolution inverse
zone "200.150.100.50.in-addr.arpa" IN {
type master;
file "reverse.example.com.zone";
allow-update { none; };
};

Fichier de résolution directe

example.com.  IN    SOA    50.100.150.200. email.example.com. (
    1970010101 ; Serial
    28800      ; Refresh
    7200       ; Retry
    604800     ; Expire
    86400 )    ; Minimum TTL

example.com.  IN    NS    ns.example.com.
example.com.  IN    NS    100.150.200.250.
example.com.  IN    MX    10 mail.example.com.
example.com.  IN    A     50.100.150.200
mail          IN    A     50.100.150.201
ns            IN    A     50.100.150.202

Fichier de résolution inverse

example.com.  IN    SOA    50.100.150.200. email.example.com. (
    1970010101 ; Serial
    28800      ; Refresh
    7200       ; Retry
    604800     ; Expire
    86400 )    ; Minimum TTL

              IN    NS    ns.example.com.
              IN    NS    100.150.200.250.
201           IN    PTR   mail
202           IN    A     ns