Etude d'un service : DNS
Notions théoriques
Le service DNS (Domain Name System) permet de traduire :
- les noms de domaine, compréhensibles par les humains,
- en adresses IP, compréhensibles par les machines.
Par exemple, lorsque vous tapez www.google.com dans votre navigateur, le DNS traduit ce nom de domaine en une adresse IP comme 142.250.74.206, permettant ainsi à votre ordinateur de se connecter au serveur de Google.
Dans quelle couche du modèle TCP/IP se situe le service DNS ?
Dans le modèle OSI, comme dans le modèle TCP/IP, un service se situe dans la couche application.
Fonctionnement du DNS
Le DNS fonctionne de manière hiérarchique et distribuée.
Voici les principales étapes du fonctionnement du DNS :
- Requête DNS : Lorsque vous entrez une URL dans votre navigateur, une requête DNS est envoyée pour trouver l'adresse IP correspondante.
- Serveur DNS Résolveur : Cette requête est d'abord envoyée à un serveur DNS résolveur, souvent géré par votre fournisseur d'accès Internet (FAI).
- Cache DNS : Le résolveur vérifie d'abord s'il a déjà la réponse en cache. Si oui, il renvoie l'adresse IP immédiatement.
- Interrogation des Serveurs Racine : Si la réponse n'est pas en cache, le résolveur interroge un des serveurs DNS racine. Les serveurs racine ne connaissent pas l'adresse IP finale, mais ils savent où trouver les serveurs DNS de premier niveau (TLD) (.com, .org, .net, etc.).
- Serveurs de Premier Niveau (TLD) : Le résolveur interroge ensuite le serveur TLD approprié, qui renvoie l'adresse du serveur DNS autoritaire pour le domaine spécifique.
- Serveur DNS Autoritaire : Le résolveur interroge enfin le serveur DNS autoritaire qui contient l'adresse IP exacte du domaine demandé.
- Retour de l'Adresse IP : L'adresse IP est renvoyée au résolveur, qui la transmet ensuite à votre navigateur. Votre navigateur peut alors établir une connexion avec le serveur Web à cette adresse IP.
Types de Requêtes DNS
Il existe plusieurs types de requêtes DNS, les plus courantes étant :
- A (Address) : Traduit un nom de domaine en adresse IPv4.
- AAAA (IPv6 Address) : Traduit un nom de domaine en adresse IPv6.
- CNAME (Canonical Name) : Alias pour un autre nom de domaine.
- MX (Mail Exchange) : Indique les serveurs de messagerie pour un domaine.
- PTR (Pointer) : Traduit une adresse IP en nom de domaine (utilisé pour les recherches inverses).
Avantages du DNS
- Simplicité : Les utilisateurs peuvent utiliser des noms de domaine faciles à mémoriser au lieu des adresses IP.
- Flexibilité : Les administrateurs peuvent changer l'adresse IP d'un serveur sans modifier le nom de domaine.
- Redondance : Le DNS est distribué et hiérarchique, ce qui améliore la résilience et la disponibilité.
Exemple pratique
Voyons comment utiliser les commandes ping
et nslookup
pour vérifier la résolution DNS du nom de domaine www.example.com.
Utilisation de ping
La commande
ping
permet de vérifier la connectivité réseau avec une adresse IP ou un nom de domaine.
La commande ping
envoie des paquets ICMP à la destination et attend une réponse.
ping www.example.com
Sortie attendue :
PING www.example.com (93.184.215.14): 56 data bytes
64 bytes from 93.184.215.14: icmp_seq=0 ttl=54 time=82.284 ms
64 bytes from 93.184.215.14: icmp_seq=1 ttl=54 time=86.426 ms
64 bytes from 93.184.215.14: icmp_seq=2 ttl=54 time=82.695 ms
...
La commande ping www.example.com
envoie des paquets à www.example.com et affiche les réponses reçues, y compris le temps de réponse. Cela montre que la résolution DNS a réussi et que la connectivité avec l'adresse IP 93.184.216.34 est établie.
La commande ping utilise-t'elle les serveurs DNS ?
Utilisation de ping
avec un Nom de Domaine
Lorsque vous utilisez ping
avec un nom de domaine (par exemple, ping www.example.com
), le système doit d'abord résoudre ce nom de domaine en une adresse IP. Ce processus de résolution de nom est effectué via le protocole DNS (Domain Name System). Voici comment cela fonctionne :
-
Résolution DNS :
- Lorsque vous tapez
ping www.example.com
, votre système envoie une requête DNS à un serveur DNS configuré (souvent celui de votre fournisseur d'accès Internet ou un serveur DNS public comme ceux de Google ou de Cloudflare). - Le serveur DNS répond avec l'adresse IP correspondante au nom de domaine (par exemple, 93.184.216.34 pour
www.example.com
).
- Lorsque vous tapez
-
Envoi des Paquets ICMP :
- Une fois que l'adresse IP est obtenue,
ping
envoie des paquets ICMP Echo Request à cette adresse IP et attend des réponsesICMP
Echo Reply.
- Une fois que l'adresse IP est obtenue,
Utilisation de ping
avec une Adresse IP
Lorsque vous utilisez ping
avec une adresse IP directement (par exemple, ping 93.184.216.34
), il n'y a pas de résolution DNS impliquée. Dans ce cas, ping
envoie simplement des paquets ICMP à cette adresse IP sans avoir besoin de contacter un serveur DNS.
Exemple de Commandes ping
-
Avec un nom de domaine :
ping www.example.com
- Le système résout
www.example.com
en une adresse IP via DNS. - Ensuite,
ping
envoie des paquetsICMP
à l'adresse IP résolue.
- Le système résout
-
Avec une adresse IP :
ping 93.184.216.34
ping
envoie directement des paquetsICMP
à l'adresse IP spécifiée sans résolution DNS.
Utilisation de nslookup
La commande nslookup
:
- interroge les serveurs DNS
- pour trouver l'adresse IP associée à un nom de domaine.
nslookup www.example.com
Sortie attendue :
Server: 2001:861:2071:82f0:b2fc:88ff:fe82:671c
Address: 2001:861:2071:82f0:b2fc:88ff:fe82:671c#53
Non-authoritative answer:
Name: www.example.com
Address: 93.184.215.14
La commande nslookup www.example.com
interroge les serveurs DNS pour obtenir l'adresse IP de www.example.com. La sortie montre que www.example.com est résolu en 93.184.216.34, confirmant que le DNS fonctionne correctement.
Test de mémorisation/compréhension
TP pour s'entrainer avec Filius
Objectifs
- Comprendre le fonctionnement du protocole DNS
- Configurer un serveur DNS local
- Résoudre des problèmes de résolution de noms
Consignes du TP
-
Lancez Filius et créez un nouveau réseau avec la topologie suivante :
- 1 switch
- 3 ordinateurs clients (PC1, PC2 et PC3) connectés au switch
- 1 ordinateur qui sera notre serveur DNS (Serveur DNS) connecté au switch
- Connectez-les avec des câbles réseau.
-
Configurez les adresses IP (masque
255.255.255.0
) comme suit :-
Clients :
- PC1 = 192.168.1.2
- PC2 = 192.168.1.3
- PC3 = 192.168.1.4
-
Serveur DNS = 192.168.1.250
-
-
Sur le serveur DNS, installez le logiciel "Serveur DNS" et configurez-le avec les enregistrements suivants :
- www.example.com -> 192.168.1.200
- mail.example.com -> 192.168.1.201
- ftp.example.com -> 192.168.1.202
Une solution
Vous devez être connecté pour voir le contenu.
-
Sur chaque client, configurez le serveur DNS (192.168.1.250) dans les paramètres réseau.
Une solution
Vous devez être connecté pour voir le contenu.
-
Testez la résolution de noms depuis un client en utilisant la commande
nslookup www.example.com
.Une solution
Vous devez être connecté pour voir le contenu.
-
Ajoutez un enregistrement sur le serveur DNS
-
Sur le serveur DNS, ajoutez l'enregistrement suivant :
- blog.example.com -> 192.168.1.203
-
-
Testez la résolution de ce nouveau nom de domaine
blog.example.com
depuis un autre client.-
Sur un autre client (par exemple PC1), vérifiez que
nslookup blog.example.com
renvoie bien 192.168.1.203.
-
-
Simulez une panne du serveur DNS en l'éteignant. Observez le comportement des clients lors de la résolution de noms.
Une solution
Vous devez être connecté pour voir le contenu.
-
Rétablissez le serveur DNS et ajoutez un enregistrement incorrect volontairement.
-
Rallumez le serveur DNS.
-
Sur le serveur DNS, ajoutez l'enregistrement suivant :
- error.example.com -> 999.999.999.999
-
Que renvoie le serveur DNS ?
Une solution
Vous devez être connecté pour voir le contenu.
-
-
Créez un nouvel ordinateur en tant que serveur Web :
-
1 ordinateur qui sera notre serveur Web (Serveur Web) connecté au switch
-
Connectez-le avec un câble réseau
-
Configurez son adresses IP = 192.168.1.200 (masque
255.255.255.0
)
- Testez la résolution du nom de domaine
www.example.com
depuis un autre client, via son navigateur.
-
Installez le navigateur sur l'ordinateur PC1 (192.168.1.2)
-
Saisissez l'adresse suivante : http://www.example.com
-
Vérifiez que la page s'affiche bien
Questions de réflexion
-
Pourquoi est-il important de configurer un serveur DNS local dans un réseau ?
Proposition de réponse
Configurer un serveur DNS local permet de réduire le temps de réponse pour la résolution des noms de domaine, car les requêtes DNS n'ont pas besoin de sortir du réseau local.
De plus, un serveur DNS local peut être configuré pour résoudre des noms de domaine internes, ce qui est utile pour accéder facilement aux ressources internes comme les serveurs de fichiers ou les imprimantes.
-
Quels avantages présente l'utilisation d'un serveur DNS local par rapport à un serveur DNS public ?
Proposition de réponse
Un serveur DNS local :
-
offre une meilleure sécurité, car il limite l'exposition des requêtes DNS à Internet, réduisant ainsi le risque d'attaques telles que :
- le spoofing
- l'empoisonnement de cache
-
permet de définir des noms de domaine internes.
-
offre une meilleure résilience en cas de défaillance des serveurs DNS publics, car le réseau peut continuer à fonctionner normalement pour les ressources internes.
-
-
Que se passe-t-il si 2 enregistrements DNS pointent vers la même adresse IP ?
Proposition de réponse
Si 2 enregistrements DNS pointent vers la même adresse IP, cela permet d'avoir plusieurs noms de domaine pour un même service.
C'est utile pour l'hébergement virtuel (virtual host) ou pour des alias de services.
TP : Un serveur DNS avec Docker
Objectif du TP
L'objectif de ce TP est de vous familiariser avec la configuration et l'utilisation des services DNS et HTTP dans un environnement conteneurisé sous Windows.
Vous allez apprendre à :
- Configurer le logiciel pour serveurs DNS le plus utilisé sur Internet "BIND" https://www.isc.org/bind/ pour résoudre un nom de domaine personnalisé (
monserveur.local
) vers l'adresse IP d'un serveur Web Apache exécuté dans un conteneur Docker. - Configurer le DNS de votre machine Windows pour utiliser ce serveur DNS afin de permettre la résolution du domaine
monserveur.local
. - Accéder à une page Web hébergée sur le serveur Apache via le domaine personnalisé
monserveur.local
.
Ce TP vous permettra de comprendre :
- les concepts de base de la résolution DNS,
- l'interaction entre les services DNS et HTTP,
- ainsi que l'utilisation de Docker pour déployer et gérer des services en conteneur.
Vous apprendrez également à vérifier et à modifier les configurations réseau de votre machine Windows pour utiliser un serveur DNS personnalisé.
Consignes du TP
-
Mémoriser la configuration initiale du DNS de Windows
Une solution
Vous devez être connecté pour voir le contenu.
-
Vérifier que le domaine
monserveur.local
ne répond pas sous WindowsUne solution
Vous devez être connecté pour voir le contenu.
-
Mémoriser l'adresse IP du conteneur Apache
Utilisez la commande
docker inspect apache | grep "IPAddress"
pour obtenir l'adresse IP du conteneur Apache.remarqueSi vous n'avez pas de conteneur Apache, veuillez consulter le tutoriel "Etude d'un service : HTTP".
Une solution
Vous devez être connecté pour voir le contenu.
- Installer un serveur DNS sur un conteneur Linux via Docker Desktop sous Windows
-
Lancez un conteneur Linux avec BIND installé (
https://hub.docker.com/r/sameersbn/bind/
)Une solution
Vous devez être connecté pour voir le contenu. -
Utilisez la commande
docker inspect bind9 | grep "IPAddress"
pour obtenir l'adresse IP du conteneur du serveur DNS.
-
-
Configurer le Serveur DNS pour résoudre le domaine
monserveur.local
et déléguer la recherche si le domaine n'est pas trouvéConfigurez BIND pour résoudre
monserveur.local
vers l'adresse IP du conteneur Apache et pour transférer les requêtes non résolues au serveur DNS configuré précédemment sur Windows.Une solution
Vous devez être connecté pour voir le contenu.
-
Mémoriser l'adresse IP du conteneur du serveur DNS
Utilisez la commande
docker inspect bind9 | grep "IPAddress"
pour obtenir l'adresse IP du conteneur du serveur DNS.Une solution
Vous devez être connecté pour voir le contenu.
-
Configurer le DNS de Windows pour qu'il interroge le serveur DNS installé
-
Modifiez les paramètres de votre adaptateur réseau pour utiliser l'adresse IP du conteneur Docker comme serveur DNS.
Une solution
Vous devez être connecté pour voir le contenu. -
Vérifiez qu'avec cette nouvelle configuration :
- les requêtes DNS sont résolues par votre serveur DNS Docker (pour le domaine
monserveur.local
) - les requêtes DNS non résolues sont transférées correctement
Une solution
Vous devez être connecté pour voir le contenu. - les requêtes DNS sont résolues par votre serveur DNS Docker (pour le domaine
-
-
Accéder à la page Web via le domaine
monserveur.local
Utilisez un navigateur Web pour accéder à
http://monserveur.local
et vérifiez que le site Web est accessible.
-
Remettre la configuration initiale du DNS de Windows
Rétablissez les paramètres DNS de votre adaptateur réseau à leur état initial.
-
Ouvrir les paramètres réseau :
-
Allez dans Panneau de configuration > Réseau et Internet > Centre Réseau et partage.
-
Cliquez sur Modifier les paramètres de la carte.
-
Modifier les propriétés de l'adaptateur réseau :
- Faites un clic droit sur votre connexion réseau et sélectionnez Propriétés.
- Sélectionnez Protocole Internet version 4 (TCP/IPv4) et cliquez sur Propriétés.
- Rétablissez les adresses des serveurs DNS que vous aviez notées précédemment.
-
Pensez à bien remettre la configuration correcte du DNS sous Windows, après le TP !