WEBVTT

00:00.000 --> 00:04.080
Bonjour ! Nous allons voir ensemble le fonctionnement du système DNS.

00:04.080 --> 00:05.760
Lorsque vous êtes sur Internet,

00:05.760 --> 00:10.400
vous utilisez des noms de domaine tels que "wikipedia.org" ou "radiofrance.fr",

00:10.400 --> 00:13.880
mais le serveur que vous contactez n'est identifié que par une adresse IP.

00:13.880 --> 00:16.440
Comment associer un nom de domaine à une adresse IP ?

00:16.440 --> 00:18.520
Le système DNS répond à cette question.

00:18.520 --> 00:20.520
Avant l'apparition du système DNS,

00:20.520 --> 00:23.560
la résolution des noms de domaine se faisait avec le fichier hosts,

00:23.560 --> 00:27.080
toujours présent aujourd'hui dans les systèmes d'exploitation de nos appareils.

00:27.080 --> 00:29.760
Il est prioritaire sur le système DNS.

00:29.760 --> 00:31.960
Voici la syntaxe du fichier hosts.

00:31.960 --> 00:36.000
On voit que chaque ligne associe une adresse IP à un ou plusieurs noms de domaine.

00:36.000 --> 00:41.680
Ce système fonctionnait lorsqu'il n'y avait qu'un petit nombre d'équipements sur le réseau car la mise à jour est fastidieuse.

00:41.680 --> 00:43.440
Lorsque l'on souhaite modifier le fichier,

00:43.440 --> 00:48.240
il faut s'assurer que chaque client du réseau possède la dernière version à jour du fichier.

00:48.240 --> 00:53.360
De plus, la gestion de ce fichier devient impossible avec plusieurs millions de domaines à gérer.

00:53.360 --> 01:01.160
La nécessité d'un système décentralisé et hiérarchique a permis la création du système DNS dès 1983.

01:01.160 --> 01:05.239
Dans une URL, voici où se situe le domaine.

01:05.239 --> 01:09.240
Il est précédé par le protocole, ici "https".

01:09.240 --> 01:12.640
Le protocole est séparé du domaine par les "//".

01:12.640 --> 01:14.800
Le domaine est suivi par la ressource.

01:14.800 --> 01:17.000
La ressource commence par un "/".

01:17.000 --> 01:20.120
La ressource et le protocole ne font pas partie du domaine.

01:20.120 --> 01:25.120
Le système DNS étant hiérarchique, chaque niveau du domaine est séparé du suivant par un point.

01:25.120 --> 01:27.880
Un domaine se décompose de droite à gauche.

01:27.880 --> 01:33.360
Tout à droite, on retouve le domaine de premier niveau ou TLD pour Top Level Domain en anglais.

01:33.360 --> 01:35.040
Puis, le domaine de deuxième niveau.

01:35.040 --> 01:36.440
Et ainsi de suite …

01:36.440 --> 01:41.240
Pour une adresse de messagerie, le domaine se situe après le signe "@".

01:41.240 --> 01:46.680
Avant le domaine, on retrouve l'identifiant et le signe "@" signifiant "chez".

01:46.680 --> 01:49.320
Le domaine se décompose de la même manière.

01:49.320 --> 01:54.720
Nous allons voir une représentation en arbre de la hiérarchie des différents niveaux des domaines.

01:54.720 --> 01:58.200
Tout en haut, on retouve la racine représentée par un "."

01:58.200 --> 02:00.560
On retrouve sur notre arbre deux volets :

02:00.560 --> 02:04.720
à droite, le volet permettant à partir d'un nom de domaine d'obtenir une adresse IP

02:04.720 --> 02:10.600
et à gauche, le volet permettant de retrouver à partir d'une adresse IP le ou les noms de domaine associés.

02:10.600 --> 02:15.000
L'association de l'adresse IP vers le domaine fonctionne de manière particulière,

02:15.000 --> 02:17.520
nous verrons en détail son fonctionnement plus tard.

02:17.520 --> 02:21.200
On retrouve directement sous la racine les domaines de premier niveau.

02:21.200 --> 02:25.160
Ils sont gérés par l'ICAAN et on les regroupe en deux types :

02:25.160 --> 02:29.160
Les domaines nationaux associés à un pays ou territoire

02:29.160 --> 02:30.520
".fr" pour la France

02:30.520 --> 02:32.520
".be" pour la Belgique, etc.

02:32.960 --> 02:34.160
Les domaines génériques,

02:34.160 --> 02:37.680
".com" initialement prévu pour les organismes à but lucratif,

02:37.680 --> 02:40.440
".museum" pour les musées, etc.

02:40.440 --> 02:47.640
Chaque TLD est géré par un registre, qui peut être une association, un état ou tout autre organisme

02:47.640 --> 02:51.160
et impose des conditions et des tarifs propres afin d'attribuer un domaine.

02:51.160 --> 02:53.640
On retrouve ensuite le second niveau.

02:53.640 --> 02:58.640
Dans notre exemple, c'est à ce niveau qu'on retrouve le domaine "afnic.fr"

02:58.640 --> 03:01.440
Continuons un niveau en dessous.

03:01.440 --> 03:06.920
Dans notre exemple, c'est à ce niveau qu'on retrouve le domaine "cloud.example.com"

03:06.920 --> 03:08.480
Et ainsi de suite.

03:08.480 --> 03:18.840
On retrouve au 6e niveau l'association entre l'IP 193.52.232.67 et le domaine "iutdijon.u-bourgogne.fr".

03:18.840 --> 03:23.160
Voici comment fonctionne la résolution récursive avec un serveur DNS.

03:23.160 --> 03:28.280
Dans notre exemple, nous considérerons que le client et le serveur DNS ne possèdent aucun cache.

03:28.280 --> 03:33.040
Le client cherche a résoudre le domaine "mail.example.test".

03:33.040 --> 03:38.040
Le client envoie sa requête à son serveur DNS renseigné dans ses paramètres réseau.

03:38.040 --> 03:41.320
Le service DNS écoute sur le port UDP 53

03:41.320 --> 03:45.360
Le serveur DNS récursif transmet la requête à un serveur racine.

03:45.360 --> 03:49.280
Les serveurs racines sont en charge des domaines de premier niveau.

03:49.280 --> 03:55.720
Le serveur racine ne connaît que l'adresse IP du serveur DNS gérant le TLD "test".

03:55.720 --> 04:02.360
Le serveur DNS récursif contacte alors le serveur DNS gérant le TLD test et lui transmet la requête.

04:02.360 --> 04:09.000
Le serveur gérant le TLD test ne connaît que le serveur DNS gérant les sous-domaines de "example.test".

04:09.000 --> 04:14.400
Le serveur DNS récursif transmet la requête au serveur DNS du domaine "example.test".

04:14.400 --> 04:17.680
Ce serveur connaît le domaine demandé et envoie la réponse.

04:17.680 --> 04:20.920
Le serveur DNS récursif conserve la réponse en cache.

04:20.920 --> 04:26.080
Le serveur DNS récursif envoie la réponse au client qui conserve également la réponse en cache.

04:26.080 --> 04:31.720
Les serveurs racines sont 13 grappes de serveurs contrôlés par 12 autorités différentes.

04:31.720 --> 04:38.240
Les adresses IP sont publiées et permettent aux serveurs DNS de résoudre les domaines de premier niveau.

04:38.240 --> 04:42.200
Voici les types d'enregistrements DNS les plus courants.

04:42.200 --> 04:44.480
Nous allons les détailler dans quelques instants.

04:44.480 --> 04:49.320
Toutes les configurations que nous allons voir seront pour le domaine "example.com".

04:49.320 --> 04:54.320
Les enregistements DNS ne peuvent contenir que des lettres, des chiffres et le trait d'union.

04:54.320 --> 05:00.880
La syntaxe punnycode permet d'encoder des caractères Unicode afin d'être compatible avec le système DNS.

05:00.880 --> 05:06.720
Un enregistrement A permet d'associer un nom de domaine à une adresse IPv4.

05:06.720 --> 05:09.760
Voici la configuration associée.

05:09.760 --> 05:12.400
Les deux lignes donnent la même information.

05:12.400 --> 05:16.080
La première est relative au domaine de la configuration actuelle.

05:16.080 --> 05:21.480
La seconde désigne le domaine de manière absolue, comme en témoigne le point final à la fin du domaine.

05:21.480 --> 05:24.840
Ce point représente la racine de la hiérarchie DNS.

05:24.840 --> 05:31.160
Attention, si ce point est absent, le système considère que votre domaine est relatif au domaine de la configuration.

05:31.160 --> 05:38.960
Dans notre exemple, si le point final était absent, le domaine serait "cloud.example.com.example.com"

05:38.920 --> 05:43.360
Il est possible d'associer plusieurs IP à un domaine.

05:43.360 --> 05:47.720
Pour cela, il suffit de créer plusieurs enregistrements pour un même domaine.

05:47.720 --> 05:54.000
Cela permet de répartir simplement le trafic entre plusieurs IP, notamment dans le cas de services très sollicités.

05:54.000 --> 06:01.720
Les enregistrements étant retournés de manière aléatoire, cela permet à un client de choisir aléatoirement parmi les différentes IP proposées.

06:01.720 --> 06:08.000
Un enregistrement AAAA permet d'associer un nom de domaine à une adresse IPv6.

06:08.000 --> 06:13.960
La configuration est proche de l'enregistrement A où l'adresse IPv6 remplace l'IPv4.

06:13.960 --> 06:18.960
Un enregistrement NS désigne les serveurs DNS gérant un domaine.

06:18.960 --> 06:23.720
Voici la configuration où l'on désigne deux serveurs DNS pour le domaine.

06:23.720 --> 06:33.200
Attention, chaque enregistrement NS doit être accompagné d’un enregistrement A, AAAA et/ou CNAME pour fournir l’IP du serveur.

06:33.200 --> 06:38.200
Un enregistrement SOA permet de renseigner les informations sur la zone DNS.

06:38.200 --> 06:41.840
Cet enregistrement doit être au début de la configuration.

06:41.840 --> 06:43.760
On retrouve dans l'ordre :

06:43.760 --> 06:46.680
Le serveur DNS principal du domaine

06:46.680 --> 06:52.480
Une adresse courriel de contact technique dont le "@" est remplacé par un "."

06:52.480 --> 06:56.120
Un numéro de série de la configuration de la zone.

06:56.120 --> 07:01.960
Le temps de rafraîchissement entre le serveur principal et les serveurs secondaires, exprimé en secondes.

07:01.960 --> 07:09.920
Le temps d'attente, après un essai infructueux de rafraîchissement depuis les serveurs secondaires vers le serveur principal, exprimé en secondes.

07:09.920 --> 07:16.000
Le temps d'expiration, si les serveurs secondaires ne peuvent pas joindre le serveur principal, exprimé en secondes.

07:16.000 --> 07:20.480
Le TTL des enregistrements dans les caches DNS, exprimé en secondes.

07:20.480 --> 07:25.160
L'enregistrement CNAME permet de faire un alias vers un autre domaine.

07:25.160 --> 07:27.800
Il est possible de chaîner les alias.

07:27.800 --> 07:34.480
Attention, à la fin, le CNAME doit pointer vers un domaine possédant un enregistrement A et/ou AAAA.

07:34.480 --> 07:39.480
Lorsqu'un serveur SMTP souhaite envoyer un message à destination de votre domaine,

07:39.480 --> 07:44.160
l'enregistrement MX permet de désigner le ou les serveurs SMTP pour le domaine.

07:44.160 --> 07:49.160
Voici la configuration permettant de désigner trois serveurs SMTP pour notre domaine.

07:49.160 --> 07:53.600
Une petite subtilité ici, un champ supplémentaire est ajouté.

07:53.600 --> 07:56.960
Ce champ permet de classer vos serveurs par priorité.

07:56.960 --> 08:00.640
Plus le nombre est faible, plus le serveur est prioritaire.

08:00.640 --> 08:06.000
Si le champ de priorité est identique entre plusieurs serveurs, un équilibrage de charge sera appliqué.

08:06.000 --> 08:14.920
Attention, chaque enregistrement MX doit être accompagné d’un enregistrement A, AAAA et/ou CNAME pour fournir l’IP du serveur.

08:14.920 --> 08:19.920
Un enregistrement PTR permet d'associer une adresse IP à un domaine.

08:19.920 --> 08:23.760
Le système DNS est conçu pour résoudre des domaines.

08:23.760 --> 08:30.480
Comme la partie désignant le plus grand ensemble d'une adresse IP se situe à gauche (premier octet d'une IPv4),

08:30.480 --> 08:32.760
et non à droite pour le nom de domaine (TLD),

08:32.760 --> 08:41.320
on cherche à résoudre le domaine composé de l'IP inversée concaténée avec "in-addr.arpa".

08:41.320 --> 08:54.320
Ainsi, pour l'IPv4 10.104.12.31, on résout le domaine 31.12.104.10.in-addr.arpa.

08:54.320 --> 08:58.760
Voici la configuration pour un enregistrement PTR avec une IPv4.

08:58.760 --> 09:03.760
Un enregistrement PTR permet également d'associer une adresse IPv6 à un domaine.

09:03.760 --> 09:08.440
Pour transformer une IPv6 en un domaine pouvant être résolu par le système DNS,

09:08.440 --> 09:12.080
on utilise l'écriture non condensée de l'adresse, puis

09:12.080 --> 09:17.760
on inverse l'ordre de chaque octet et on y concatène "ip6.arpa".

09:17.760 --> 09:22.440
Voici la configuration pour un enregistrement PTR avec une IPv6.

09:22.440 --> 09:26.480
Il est possible d'interroger manuellement un serveur DNS.

09:26.480 --> 09:32.320
Sur les systèmes Linux, la commande "dig" affiche les informations renvoyées par le serveur DNS.

09:32.320 --> 09:38.720
Sur Windows, la commande "nslookup" dans l'invité de commandes permet d'effectuer une requête DNS.

09:38.720 --> 09:41.800
La réponse de la requête apparaît ici.

09:41.800 --> 09:48.160
Le système DNS n'est pas chiffré. Ainsi, au-delà de l'attaque par déni de service, le DNS est sensible à

09:48.160 --> 09:50.360
l'interception…

09:53.920 --> 09:55.720
et la modification.

09:55.720 --> 09:59.640
Un attanquant peut lire ou modifier la requête ou la réponse.

09:59.640 --> 10:03.320
Cela a pour but d'obtenir des informations et renvoyer de fausses informations.

10:03.320 --> 10:08.720
Par exemple, renvoyer l'IP d'un serveur malveillant en lieu et place de l'enregistrement légitime.

10:08.720 --> 10:13.400
Cela est particulièrement problématique quand un serveur DNS obtient une mauvaise réponse.

10:13.400 --> 10:17.160
Une fois son cache empoisonné, il propage l'erreur à tous ses clients.

10:17.160 --> 10:19.960
Le DNSSEC permet de résoudre ces problèmes :

10:19.960 --> 10:24.960
une signature cryptographique est associée à chaque enregistrement d'un serveur doté de ce protocole.

10:24.960 --> 10:32.680
Ce qui permet au client de vérifier avec la clef publique du serveur que l'enregistrement retourné est bien valide et n'a pas été altéré.

10:32.680 --> 10:36.320
Ce protocole permet également de déléguer les signatures.

10:36.320 --> 10:42.160
Un domaine peut déclarer qu'un sous-domaine est signé et ainsi établir une chaîne de confiance jusqu'à la racine.

10:42.160 --> 10:47.160
Voilà, nous avons vu le fonctionnement du DNS et les principaux enregistrements.

10:47.160 --> 10:49.280
Pour aller plus loin, vous pouvez

10:49.280 --> 10:51.520
consulter le cours au format texte et

10:51.520 --> 10:53.840
vous entraîner avec des exercices corrigés.

10:53.840 --> 10:56.240
Merci pour votre attention et à bientôt.
