Le fonctionnement du service DNS

Le fonctionnement du service DNS

Le service DNS (Domain Name System) et un système quasiment indispensable pour le fonctionnement d’internet. Il permet de convertir un nom de domaine (par exemple example.com) en adresse IP (aussi appelée adresse réseau).

Le service DNS fonctionne sur des serveurs DNS (merci capitaine obvious), et on en distingue 2 types:

  • Les DNS Autoritatifs: contient les zones DNS qu’ils gèrent
  • Les DNS Récursifs: résolvent les requêtes DNS en consultant les serveurs autoritatifs

Ainsi le monde fabuleux du DNS est constitué.

Mais qu’est-ce qu’une zone DNS ?

Une zone DNS est, en quelque sorte, le classeur qui contient tous les enregistrements DNS du nom de domaine.

Par exemple, mon nom de domaine gkaelin.com contient plusieurs enregistrements, notamment graph.gkaelin.com, ou encore web02.gkaelin.com

Il existe plusieurs types d’enregistrement:

  • A: les enregistrement courant qui sont les adresses IPV4, et permettent de convertir l’adresse tapée dans un navigateur en adresse réseau par exemple
  • AAAA: la même chose, mais cette fois en IPV6
  • CNAME: Les alias qui peuvent pointer vers un enregistrement A ou AAAA du même domaine, ou un tout autre qu’on ne gère pas
  • SOA: Contient des informations fondamentales sur la zone DNS, comprenant:
    • Le serveur primaire de la zone
    • L’adresse email du responsable de la zone DNS
    • Le numéro de série (incrémenté à chaque modification d’enregistrement)
    • Le délai en seconde qui définit le temps avant que les DNS secondaires mettent à jour leur zone
    • Le délai en seconde avant que les serveurs DNS secondaires doivent faire une tentative de synchronisation de zone en cas d’échec
    • Le temps de vie de la zone sur les serveurs secondaires (passé ce délai, ils refusent de répondre aux requêtes s’il n’y a pas eu de rafraichissement auprès du serveur primaire
    • Le la durée de vie par défaut de la zone (défini le temps de vie par défaut des enregistrements)
  • NS: Défini les serveurs DNS secondaires de cette zone
  • MX: Enregistrement utilisé par les serveurs email. Il définissent l’adresse du serveur pour que le domaine puisse recevoir des emails
  • PTR: Permet d’obtenir le FQDN lié à une adresse IP (utilisé par exemple pour les serveurs d’envoi d’email)
  • SRV: Enregistrements spéciaux spécifiant des options supplémentaires dans des applications, comme par exemple le port, chemin ou encore le protocole pour un calendrier CalDAV
  • TXT: Enregistrement ou on saisit des informations diverses saisies comme du texte. On retrouve notamment:
    • Le SPF: Permet de définir qu’une adresse IP peut envoyer des mails en tant que le domaine
    • Le DKIM: Est une signature numérique qui certifie qu’un email n’a pas été altéré durant la transmission
    • Le DMARC (Domain-based Message Authentication, Reporting, and Conformance): Permet de définir des politiques si le SPF et le DKIM sont en erreur
    • Diverses méthode de vérification: S’il est nécessaire de prouver que vous êtes bien propriétaire d’un domaine, certains prestataires demande qu’une suite de caractère soit ajouté
  • CAA: Permet de spécifier quels entités peuvent délivrer des certificats SSL en lien avec ce domaine
  • TLSA: Permet de lier un certificat TLS, ou une clé privée à un domaine, ce qui permet donc de stocker le fingerprint, et de renforcer la sécurité de contrôle de validation de certificat
  • TSIG: Permet de faire du DNSSEC (DNS Securisé)

Comment fonctionne la résolution DNS ?

La résolution DNS est le processus de conversion d’un nom de domaine (par exemple google.ch) en adresse IP. Les machines souhaitant effectuer des requêtes DNS vont d’abord questionner le serveur DNS resolver qui lui va s’occuper de contacter le serveur autoritatif correspondant. Les étapes dans le fonctionnement sont les suivantes (nous allons prendre mon nom de domaine comme exemple):

  • Le client demande au DNS resolver (autre nom pour un DNS récursif) l’adresse IP du nom de domaine (gkaelin.com)
  • Le resolver sépare le nom DNS au niveau des points (on aura alors gkaelin, et com)
  • Il commence par demander aux serveurs root (serveurs mondiaux gérant les TLD (.com, .ch)) qui est le serveur autoritatif de la zone. L’information renvoyée dépend des enregistrements NS saisi dans la zone.
  • Une fois connu, le resolver contact le serveur authoritatif et obtient l’adresse IP souhaitée
Dans le cas ou il y a des sous domaine (domaine.gkaelin.com), la procédure est répétée en boucle de serveur autoritatif en autoritatif pour arriver jusqu’à l’enregistrement souhaité

Le resolver peut gérer un cache en local, la durée de vie de l’enregistrement en cache dépend de la configuration définie dans la zone DNS.

Une bonne pratique dans la gestion des DNS est de ne pas définir le rôle de resolver sur des serveur autoritatifs. Le risque est que si trop de requêtes sont effectuées sur le serveur, le service risque de se planter, et le rôle autoritatif ne fonctionnera plus.

Le service DNS est très important pour naviguer sur internet. Il est beaucoup utilisé sur les reverse proxy (utilisé pour fournir plusieurs site internet sur la même adresse IPv4 par exemple), ou encore garantir que l’accès à un site interne chiffré avec un certificat est valable (il faut que le nom de domaine saisi soit renseigné dans le certificat fournit par le serveur pour garantir que la connexion est sécurisée, et qu’il n’y a pas détournement de connexion.

ICANN: le gestionnaire des noms de domaines

l’ICANN est une association à but non lucratif ayant pour mission de réguler l’attribution de ces noms de domaine. Ils gèrent notamment un annuaire des noms de domaine existant sur internet avec les informations du propriétaire et/ou contact technique et de facturation. Les noms de domaines sont payant, mais le prix varie suivant le TLD choisi. Par exemple, un .ch coûtera environs 10 CHF alors qu’un .swiss sera d’avantage autours de 100 CHF.

La tâche de facturation et de vente des noms de domaine sont déléguées à des registrars qui sont locaux au pays, et gère en principe que quelques TLD. Ils peuvent proposer des noms de domaine pour tous les TLD, mais cela est rare.

En revanche, si vous souhaitez gérer une zone DNS local (comme pour un annuaire LDAP, ou encore simplifier les accès interne à certains services), il ne sera pas nécessaire de prendre un nom de domaine. On retrouve notamment les TLD .local, ou .lan

Les DNS dans le web3

Depuis quelques années, le web3 commence à devenir de plus en plus populaire, surtout grâce au développement des blockchains ces dernières années. Le service DNS a donc en une évolution, et c’est ce que nous allons explorer maintenant.

Dans le web3, les DNS ont plusieurs rôles en plus, notamment:

  • Alias vers une adresse ethereum ou autre cryptomonnaie
  • Représentation d’une identité digital (certification d’une personne pour la gestion d’authentification par exemple)

Ainsi, il n’y a plus d’autorité central qui gère tous les noms de domaine, mais cette fois ce rôle est décentralisé dans la blockchain. Il est possible de commander des noms de domaine classique (.ch .com), mais cela peut coûter cher. Cependant techniquement le fonctionnement est très intéressant. Le processus de renouvellement est un peu différent. En effet, lorsqu’une résolution est nécessaire, le serveur resolver ne va pas contacter un root DNS, mais va chercher dans la blockchain pour chercher le nom de domaine, et exécute un smart contract pour obtenir l’IP. Il faut donc avoir un serveur DNS resolver ayant la capacité de télécharger la blockchain en local (un DNS classique ne peut pas le faire)