Nous avons déjà parlé en théorie sur Neptunet du service DNS, maintenant, il faut passer à la pratique !
Dans ce tutoriel, nous allons installer le rôle DNS sur un serveur Windows et … et rien d’autre en fait… Mais ça va fonctionner, même sans configurer le service vous verrez !
Laissez simplement la magie de l’informatique opérer.
Installer un DNS cache sur un serveur Windows 2019
Je vous propose aujourd’hui un petit tuto pour prendre en main le service DNS sous Windows.
Au menu dans cet article, l’installation du rôle DNS en mode dit « cache », c’est-à-dire qu’il ne va pas gérer de nom de domaine (donc pas de zone), mais seulement répondre et transmettre les requêtes des clients DNS de mon réseau à d’autres serveurs DNS, puis stocker temporairement les données afin d’éviter les multiples requêtes mais aussi favoriser les réponses rapides.
Info ++ : Pour bien comprendre les différentes notions qui seront évoquées ici, des connaissances de base en DNS sont préférables. Je vous conseille de parcourir les articles suivants pour vous familiariser avec ce service : Le principe des noms de domaine | Le fonctionnement du service DNS |
Comme toujours, un schéma de l’infra que je vais utiliser dans ce tuto :
Les machines ont reçu manuellement une configuration IP. Le serveur qui deviendra le DNS de mon réseau a pour adresse de DNS, lui-même, c’est-à-dire sa propre adresse IP (que l’on peut aussi écrire 127.0.0.1).
Bien, commençons sans plus tarder ! Et on démarre par l’installation du rôle « serveur DNS » sur la machine serveur. Pour cela, depuis le gestionnaire de serveur, cliquez sur « ajouter des rôles et des fonctionnalités ».
On passe la page « avant de commencer » en cliquant sur Suivant (vous pouvez cocher la case « ignorer cette page par défaut » après l’avoir lu au moins une fois, c’est utile…).
On veut installer un rôle donc on coche « Installation basée sur un rôle ou une fonctionnalité » et on clique sur Suivant.
On sélectionne notre serveur de destination, c’est-à-dire le serveur sur lequel on veut installer le rôle. Ici, c’est facile, je n’en ai qu’un.
A la page de sélection des rôles serveur, il faut cocher ….. « Serveur DNS » ! Merci à ceux qui suivent… Notez que sur la droite, vous avez une courte description concernant ce service.
En cochant un rôle, une fenêtre appelée « assistant » va s’ouvrir et vous proposer d’installer des fonctionnalités nécessaires au bon fonctionnement du rôle. Cliquez sur « Ajouter des fonctionnalités » pour confirmer cette installation supplémentaire.
Vous pouvez passer la page d’ajout de fonctionnalité car nous avons déjà ajouté tout ce dont notre rôle aura besoin.
Ensuite, quelques informations utiles concernant le service que l’on va installer sur notre serveur.
On confirme l’installation en cliquant simplement sur le bouton « Installer ».
La progression de l’installation du rôle et des fonctionnalités requises est visible grâce à une barre bleue. Très rapidement, un message informant de la réussite va s’afficher. Inutile de redémarrer la machine, le service est directement fonctionnel.
Voyons maintenant comment on peut gérer ce nouveau service ! Pour cela, allez sur le gestionnaire de serveur, dans outils et cliquez sur DNS. Vous pouvez également exécuter « dnsmgmt.msc » qui ouvrira directement la console de gestion du service.
Voici un aperçu de la console de gestion de notre service DNS fraîchement installé.
A ce stade, mon serveur DNS est ce qu’on appelle un serveur DNS « cache ». Il ne gère aucune zone, ni aucun domaine. On peut dire qu’il est simplement le relais des clients DNS.
Nous allons tester ce nouveau service sur un poste client. J’ai dans mon réseau un Windows 10 qui a une adresse IP dans le même réseau que mon serveur évidemment. Voici sa configuration réseau :
Comme vous pouvez le constater, mon PC Windows 10 a bien une adresse de passerelle par défaut, qui correspond donc à un routeur me permettant d’accéder à Internet (sans accès à internet, la suite du tuto ne fonctionnera pas), et l’adresse d’un serveur DNS, l’adresse de MON serveur DNS.
Toutes les requêtes DNS émises par ce poste client passeront donc pas le serveur DNS de mon réseau qui se chargera de traduire les noms de domaine que je veux joindre en adresse IP et inversement. Pour s’assurer du bon fonctionnement du service DNS, tentons un simple ping à destination de google.fr :
Le domaine « google.fr » est bien traduit en adresse IP « 216.58.198.195 », mon serveur DNS est donc bien fonctionnel.
Pourtant nous n’avons rien touché dans la console de gestion du DNS sur le serveur… comment est-ce que cela peut fonctionner ?
Si vous avez bien compris l’article sur le fonctionnement du DNS, vous devriez entrevoir la solution.
Souvenez-vous qu’un serveur DNS ne connait pas tous les noms de domaine existant au monde. Quand il ne peut pas répondre lui-même à une requête, il interroge d’autres serveurs DNS situés sur internet : les serveurs racines, les serveurs de 1er niveau (TLD), les serveurs de 2nd niveau (SLD), etc…
Quand il a enfin la réponse, il la stocke dans son cache pour pouvoir répondre plus rapidement aux requêtes des clients et ne pas solliciter sans cesse d’autres serveurs DNS.
Voyons comment se constitue ce fameux « cache » en retournant sur le serveur de notre réseau, dans la console de gestion du DNS.
Si vous êtes curieux et avez déjà fouiné dans le console de gestion du DNS, vous avez dû voir qu’à ce stade, tout est vide.
Pour afficher le cache, il faut changer le mode d’affichage pour voir apparaître une nouvelle partie. Cliquez une fois sur le nom de votre serveur, cliquez ensuite sur « Affichage » puis sur « Affichage détaillé ».
Vous verrez alors dans le gestionnaire une nouvelle partie appelée « Recherches mises en cache ».
Si vous déroulez cette nouvelle partie, vous verrez une arborescence se dessiner qui devrait vous rappeler le fonctionnement du service DNS lorsqu’il émet des requêtes.
On retrouve un dossier racine (le fameux point), contenant des TLD, contenant eux-mêmes des SLD.
Comment notre serveur peut connaître les adresses des serveurs DNS racine ? Mais en voilà une bonne question !
Tous les serveurs DNS disposent de la liste des serveurs racine. Elle est facilement visible dans le gestionnaire de DNS en se plaçant sur le nom du serveur, en effectuant un clic droit et en allant fouiner dans les propriétés, plus précisément dans l’onglet « Indications de racine ».
Par défaut, mon serveur va émettre des requêtes directement auprès de ces serveurs. Je peux également mettre en place un ou plusieurs redirecteurs, c’est-à-dire indiquer qu’il doit transmettre ses requêtes, non pas aux serveurs root, mais à un serveur DNS précis.
Pour cela, il me suffit d’aller dans l’onglet « Redirecteur » et d’indiquer l’adresse IP du DNS où seront renvoyées les requêtes. Dans l’illustration suivante, j’ai ajouté l’adresse IP 1.1.1.1 qui correspond au DNS de CloudFlare.
Mais je ne souhaite pas actuellement mettre en place de redirecteur, je vais donc annuler cette dernière manipulation qui n’était là que pour la démo ^^.
Bien reprenons !
Précédemment, j’ai fait un ping vers google.fr depuis un PC Windows. Mon serveur DNS a demandé au serveur racine l’adresse d’un serveur DNS gérant le TLD « .fr », il a ensuite demandé l’adresse d’un serveur DNS gérant le SLD « google » et obtenu des informations sur les serveurs DNS de google directement.
Relançons un ping à destination cette fois-ci de free.fr :
Actualisons le gestionnaire DNS avec l’icône représentant une flèche verte circulaire ou avec la touche F5 du clavier.
Dans mon arborescence, j’ai maintenant un conteneur « free » qui contient des informations sur les serveurs DNS de free (Serveur de noms NS), mais aussi sur ce qu’on appelle des hôtes (représentés par la lettre A), des machines serveurs ou des ordinateurs par exemples.
Lors de mon ping, c’est l’adresse IP 212.27.48.10 qui me répond. Je vois ici que c’est un enregistrement DNS dit « hôte », je suppose donc que cet hôte est l’un des serveurs web qui héberge le site de free.fr (d’ailleurs, si j’essaie d’aller sur http://212.27.48.10, je suis automatiquement redirigé ici https://www.free.fr/freebox/ ).
Bien évidemment, les enregistrements que l’on voit ici ne restent pas à vie stockés sur le serveur. Ils ont une durée de vie limitée. Pour connaître leur « Time to live », il faut afficher le cache de résolution DNS avec la commande ipconfig /displaydns (je vous conseille de le faire sur un poste client car sur un serveur dns, ça risque d’être une sacrée liste…), et de chercher l’information.
Par exemple ici, la commande ipconfig /displaydns lancée sur le poste client me retourne ces infos :
Je vois donc que la durée de vie restante de l’enregistrement de google.fr est de 296 secondes (donc au total 300 secondes, soit 5 minutes car je venais de relancer un ping de google.fr pour refaire du trafic), et pour free.fr, celle-ci est de 84661 secondes restantes (on peut donc estimer que le total est de 86400 secondes soit 24 heures).
Cette durée de vie est très utile car elle permet de réinitialiser automatiquement les données en cas de changement.
Voilà comment fonctionne un serveur DNS cache chez Windows !
Dans un futur article, nous verrons comment créer une zone DNS principale et gérer des enregistrements (et dans un futur lointain, peut être même une zone secondaire 😉)
En attendant, je vous dis à très vite !