M2102 Architecture des réseaux TP n 4 Configuration de serveur DNS Objectif du TP : Dans ce TP vous allez apprendre à configurer des noms d'hôtes sur une machine Linux, puis à configurer un serveur DNS local. Exercice 1 : /etc/hosts Sous Marionnet, créez un nouveau projet. Ajoutez à ce projet 2 machines sous Debian (deb1 et deb2), reliées par un câble croisé. Configurez les interfaces de deb1 et deb2 pour que les deux soient sur le réseau 3FFE:0:0:1::/64. Testez la connectivité entre les deux machines virtuelles avec ping6. Sur deb1, ouvrez le fichier /etc/hosts avec vi, et ajoutez-y les lignes suivantes : 3FFE:0:0:1:[suite de l'adresse de deb1] machine1 3FFE:0:0:1:[suite de l'adresse de deb2] machine2 Toujours sur deb1, effectuez un ping6 machine1 et ping6 machine2. Que se passe-t-il? Si vous tentez un ping6 machine1 sur la machine deb2 que se passe-t-il, pourquoi? Expliquez le rôle du fichier /etc/hosts. Exercice 2 : configuration DNS simple Dans cette partie nous allons configurer un serveur DNS et l'utiliser depuis différents clients. Cette configuration de base va impliquer deux fichiers : /etc/bind/named.conf.local (qui existe) et /etc/bind/db.tp-reseau (que nous allons créer). Sous Marionnet, créez un nouveau projet. Ajoutez à ce projet 3 machines : une sous Debian nommée servdns. une sous Debian nommée clientdeb une sous Pinocchio nommée clientpin Configurez les trois machines afin qu'elles aient une adresse Ipv6 sur le réseau 3FFE:0:0:1::/64 Le fichier de configuration principal : Sur la machine servdns, ouvrez le fichier /etc/bind/named.conf.local avec vi. Ajoutez-y les lignes suivantes, parmi les différentes zones mentionnées : zone tp-reseau. { type master; file /etc/bind/db.tp-reseau ; }; Cette modification permet de définir au niveau du serveur un domaine tp-reseau qui sera décrit dans le fichier db.tp-reseau que vous allez créer. 1
Le fichier de configuration de zone : Toujours sur la machine servdns, Positionnez-vous dans le dossier /etc/bind, puis lancez simplement vi. Vous allez écrire un fichier de configuration de zone reprenant les éléments suivants : En-tête : @ IN SOA servdns.tp-reseau. root.servdns.tp-reseau. ( 2015042201 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; default_ttl ) Cet en-tête défini les options globales de la zone, dont son nom, son numéro de version, et les différentes durées de rafraîchissement des informations pour les serveurs secondaires. Définition du serveur de nom : @ IN NS servdns.tp-reseau. Cette ligne défini la machine serveurdns du domaine tp-reseau comme serveur de noms Définition des noms des machines présentes sur le réseau : servdns IN AAAA [insérer l'adresse Ipv6 de servdns] clientdeb IN AAAA [insérer l'adresse Ipv6 de clientdeb] clientpin IN AAAA [insérer l'adresse Ipv6 de clientpin] Ces lignes attribuent les noms servdns, clientdeb et clientpin aux machines dont l'adresse IP est mentionnée. A présent sauvegardez votre fichier avec la commande suivante : :w db.tp-reseau puis quittez vi. Tests et initialisation : Testez la validité de vos fichiers en utilisant les commandes named-checkconf et namedcheckzone. (vérifier les syntaxes et arguments à utiliser) Si les deux tests sont valides, vous pouvez lancer le serveur DNS en utilisant la commande named. Référencement du serveur : Sur chacune des deux machines, éditez le fichier /etc/resolv.conf, et remplacez son contenu par la ligne suivante : nameserver [insérer l'adresse Ipv6 de servdns] Tests de fonctionnalité : Sur chacune des deux machines, effectuez les commandes suivantes, notez leurs résultats et expliquez les : host servdns.tp-reseau host clientdeb.tp-reseau host clientpin.tp-reseau host servdns 2
host clientdeb host clientpin host master host apprentice host slave Vous pouvez également utiliser la commande ping6 pour vérifier que la transmission se fait bien : ping6 servdns.tp-reseau ping6 clientdeb.tp-reseau ping6 clientpin.tp-reseau Exercice 3 : Domaines de recherches, alias et reverse DNS Nous allons maintenant compléter notre système pour l'enrichir davantage. Définitions de domaines de recherche Dans le fichier /etc/resolv.conf de chaque machine, ajoutez la ligne suivante : search tp-reseau Exécutez de nouveau les commandes suivantes : host servdns.tp-reseau host clientdeb.tp-reseau host clientpin.tp-reseau host servdns host clientdeb host clientpin host master host apprentice host slave Qu'est-ce qui a changé? Pourquoi? Alias de noms : Editez avec vi le fichier db.tp-reseau et ajoutez-y les lignes suivantes : master IN CNAME serveurdns apprentice IN CNAME clientdeb slave IN CNAME clientpin Comme vous avez modifié le fichier de zone, il faut incrémenter son numéro de version pour que la modification soit prise en compte. Augmentez de 1 le nombre mentionné sur la ligne serial. A présent, vous devez relancer le serveur, pour cela il faut le tuer en retrouvant son pid à l'aide de la commande suivante : ps aux grep named puis en lui envoyant un signal de terminaison avec la commande kill. kill -9 pid_du_service Ensuite retestez votre fichier de zone et relancez le service named. Quels sont les changements apportés par cette manipulation, comment pouvez-vous vous en assurer? 3
Reverse DNS : Nous allons maintenant ajouter un élément de configuration permettant de faire du Reverse DNS (retrouver le nom d'une machine à partir de son adresse IP). Pour commencer, nous allons définir une zone reverse dans le fichier /etc/named.conf.local : zone 1.0.0.E.F.F.3.ip6.arpa. { type master; file db.tp-reseau.rev ; }; Il faut ensuite créer dans /etc/bind un fichier db.tp-reseau.rev et y entrer les informations suivantes, qui ressemblent fortement à celles de tp-reseau.zone : En-tête : @ IN SOA servdns.tp-reseau. root.servdns.tp-reseau. ( 2014051601 ; serial 3600 ; refresh 900 ; retry 1209600 ; expire 43200 ; default_ttl ) Définition du serveur de nom : @ IN NS servdns.tp-reseau. Définition des noms des machines présentes sur le réseau : Pour identifier chaque machine dans le fichier de zone inverse, il faut écrire son adresse ipv6 à l'envers en insérant des points simples, et terminer par.ip6.arpa Par exemple, pour une machine d'adresse 3FFE:0:0:1:20A:6FF:FEC1:2933 l'identifiant est : 3.3.9.2.1.C.E.F.F.F.F.6.0.A.0.2.0.1.0.0.0.0.0.0.0.0.0.0.0.E.F.F.3.ip6.arpa Il faut alors employer ces identifiants dans les lignes suivantes : [id inverse de servdns] IN PTR servdns.tp-reseau. [id inverse de clientdeb] IN PTR clientdeb.tp-reseau. [id inverse de clientpin] IN PTR clientpin.tp-reseau. Ces lignes spécifient pour chaque adresse Ipv6 quelle est la machine correspondant. A présent relancez le serveur (comme précédemment), et effectuez des tests en utilisant les commandes dig et nslookup (dont la documentation est disponible sous le terminal). 4
Partie 4 : Pour ceux qui ont du temps Sous Marionnet, créez un nouveau projet comportant 5 machines suivant le schéma indiqué : Le premier réseau a pour identifiant 3FFE:0:0:1::/64 et le second 3FFE:0:0:2::/64. Configurez ServDNS pour qu'il associe le nom de chaque machine à son adresse Ipv6. Partie 5 : Pour les caïds qui regrettent les TP de Système Écrivez un script shell qui lors de son lancement : vérifie les fichiers /etc/bind/named.conf et /etc/bind/named.conf.local trouve dans ce fichier les différentes zones définies dans des fichiers locaux vérifie chacune de ces zones lance le service named si tous les tests sont réussis. Vous pouvez bien entendu vous reposer sur les commandes named-checkconf et namedcheckzone. 5