Fonctionnement
Démarche
DNS fonctionne principalement avec le protocole UDP au port 53. Une requête contenant ledomaine ou le FQDN ainsi que le type d’enregistrement demandé est envoyée à un serveur DNS.
Si celui-ci est autoritaire du domaine en question (c’est-à-dire que ce domaine est géré par lui-même) nous répondra directement avec l’information correspondant à la requête, soit le domaine référé par un CNAME, l’adresse IP référée par une entrée A, le serveur de courriel correspondant à l’entrée MX, etc.
S’il n’est pas autoritaire du domaine demandé, il acheminera notre requête à un autre serveur DNS. Si vous utilisez votre routeur comme serveur DNS à la maison, tous les domaines mis à part votre domaine local seront acheminés à un serveur DNS public. Il vous mentionnera alors qu’il n’est pas autoritaire du domaine demandé en vous remettant l’information concernant le domaine demandé lorsque la réponse lui sera acheminée.
Un serveur DNS a généralement une mémoire temporaire pour éviter de questionner son serveur en amont ou “upstream” à chaque requête. Pour cette raison, lorsqu’on enregistre un nouveau domaine public, il est fort probable que notre domaine ne soit pas immédiatement accessible.
Les serveurs publics les plus populaires sont 8.8.8.8 (Google), 1.1.1.1 (Cloudflare), 9.9.9.9 (Quad9) mais tous ces serveurs publics se réfèrent ultimement à “root-servers.org” qui une organisation d’opérateurs indépendants connaissant l’ensemble des domaines publics. Ces “root-servers” sont essentiels au fonctionnement d’Internet tel qu’on le connaît. Sans ce service, il faudrait accéder aux différentes ressources par leur adresse IP.

Tout comme le protocole Telnet, les requêtes et réponses DNS sont visibles en texte clair dans une capture de paquets. Depuis peu, il est maintenant possible d’acheminer ces requêtes de façon encryptée par DNS-over-TLS et DNS-over-HTTPS aux serveurs le supportant tels que ceux de Google (dns.google) et cloudflare (one.one.one.one et cloudflare-dns.com).
Requête
Une requête contient généralement le type d'enregistrement demandé ainsi que le FQDN, sous-domaine ou domaine à résoudre.
Exemple d'une requête demandant l'adresse IP correspondant à "cegepat.qc.ca"
Domain Name System (query)
Questions: 1
Queries
cegepat.qc.ca: type A, class IN
Name: cegepat.qc.ca
Type: A (1) (Host Address)
Class: IN (0x0001)
Exemple d'une requête demandant l'adresse du serveur de courriels pour le domaine "cegepat.qc.ca"
Queries
cegepat.qc.ca: type MX, class IN
Name: cegepat.qc.ca
Type: MX (15) (Mail eXchange)
Exemple d'une requête demandant tout type d'enregistrement correspondant au domaine "google.com"
Queries
google.ca: type ANY, class IN
Name: google.ca
Type: ANY (255) (A request for all records the server/cache has available)
Class: IN (0x0001)
Réponse
Lorsqu'interrogé, un serveur DNS vérifiera sa propre configuration pour vérifier s'il est autoritaire (responsable) du domaine questionné. Advenant le cas contraire, si le serveur est configuré en conséquence, il consultera un autre serveur DNS (généralement un serveur public comme 8.8.8.8, 1.1.1.1 ou un des serveurs racine/root-servers) et nous acheminera la réponse s'il trouve l'information demandée. Dans sa réponse, le serveur indiquera s'il est autoritaire du serveur.
Exemple d'une réponse à une requête demandant tout type d'enregistrement correspondant au domaine "google.com"
Answers
google.ca: type A, class IN, addr 142.251.32.67
google.ca: type AAAA, class IN, addr 2607:f8b0:400b:807::2003
google.ca: type NS, class IN, ns ns2.google.com
google.ca: type SOA, class IN, mname ns1.google.com
google.ca: type TXT, class IN
google.ca: type NS, class IN, ns ns4.google.com
google.ca: type NS, class IN, ns ns3.google.com
google.ca: type MX, class IN, preference 0, mx smtp.google.com
google.ca: type NS, class IN, ns ns1.google.com
google.ca: type CAA, class IN