Aller au contenu principal

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.

astuce

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 :

  1. Requête DNS : Lorsque vous entrez une URL dans votre navigateur, une requête DNS est envoyée pour trouver l'adresse IP correspondante.
  2. 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).
  3. 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.
  4. 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.).
  5. 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.
  6. Serveur DNS Autoritaire : Le résolveur interroge enfin le serveur DNS autoritaire qui contient l'adresse IP exacte du domaine demandé.
  7. 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
...
Résultat

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 :

  1. 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).
  2. 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éponses ICMP Echo Reply.

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 paquets ICMP à l'adresse IP résolue.
  • Avec une adresse IP :

    ping 93.184.216.34
    • ping envoie directement des paquets ICMP à 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
Résultat

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


Quel est le rôle principal du DNS ?


Quel type de requête DNS est utilisé pour traduire un nom de domaine en adresse IPv4 ?


Quel serveur DNS est interrogé en premier si la réponse n'est pas en cache ?


Quel type de requête DNS est utilisé pour indiquer les serveurs de messagerie pour un domaine ?


Quel protocole est utilisé pour résoudre un nom de domaine en adresse IP lors de l'utilisation de la commande `ping` avec un nom de domaine ?


Quel type de paquet ICMP est envoyé par la commande `ping` pour vérifier la connectivité réseau ?


Quelle est la première étape effectuée par la commande `ping` lorsqu'elle est utilisée avec un nom de domaine ?


Que se passe-t-il si vous utilisez la commande `ping` avec une adresse IP directement ?


Quel type de réponse ICMP est attendu par la commande `ping` après l'envoi d'un paquet Echo Request ?


Quelle commande `ping` n'implique pas de résolution DNS ?


Si la commande `ping` utilise un nom de domaine, quelle étape est nécessaire avant l'envoi des paquets ICMP ?


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

  1. 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.


  2. 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


  3. 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

  4. Sur chaque client, configurez le serveur DNS (192.168.1.250) dans les paramètres réseau.

    Une solution

  5. Testez la résolution de noms depuis un client en utilisant la commande nslookup www.example.com.

    Une solution

  6. Ajoutez un enregistrement sur le serveur DNS

    • Sur le serveur DNS, ajoutez l'enregistrement suivant :

      • blog.example.com -> 192.168.1.203

  7. 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.


  8. Simulez une panne du serveur DNS en l'éteignant. Observez le comportement des clients lors de la résolution de noms.

    Une solution

  9. 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

Questions de réflexion

  1. 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.

  2. 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.

  3. 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 à :

  1. 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.
  2. Configurer le DNS de votre machine Windows pour utiliser ce serveur DNS afin de permettre la résolution du domaine monserveur.local.
  3. 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

  1. Mémoriser la configuration initiale du DNS de Windows

    Une solution

  1. Vérifier que le domaine monserveur.local ne répond pas sous Windows

    Une solution

  1. Mémoriser l'adresse IP du conteneur Apache

    Utilisez la commande docker inspect apache | grep "IPAddress" pour obtenir l'adresse IP du conteneur Apache.

    remarque

    Si vous n'avez pas de conteneur Apache, veuillez consulter le tutoriel "Etude d'un service : HTTP".

    Une solution

  1. 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
    • Utilisez la commande docker inspect bind9 | grep "IPAddress" pour obtenir l'adresse IP du conteneur du serveur DNS.


  1. 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

  1. 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

  1. 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
    • 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

  1. 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.


  1. 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.
attention

Pensez à bien remettre la configuration correcte du DNS sous Windows, après le TP !