Vous devez installer et configurer dans votre VLAN utilisateur le serveur DNS ayant autorité sur le domaine utilisateurs.gsb.fr pour gérer votre VLAN utilisateurs du contexte gsb.fr.
Voici le nom des domaines utilisateurs à utiliser :
Les tâches d’administration sur le serveur qui héberge le service DNS vont être les suivantes :
Dans le réseau de GSB c’est REZOLAB qui a le rôle de serveur DNS pour le domaine gsb.fr.
Sur les postes clients, les tâches d’administration sont beaucoup plus simples. Il faut :
Avant que n'existent les serveurs DNS, la résolution de noms était locale à chaque machine. Le fichier /etc/hosts sous Linux contenait tous les noms DNS et toutes les adresses IP auxquelles on souhaitait accéder. La méthode du fichier local et celle du serveur DNS peuvent cohabiter notamment pour des raisons d’optimisation car il est plus rapide de regarder dans un fichier local que de contacter un serveur).
Historiquement, le fichier /etc/host.conf était utilisé par les outils de résolution de nom pour connaître l'ordre dans le choix de la méthode de résolution. Ce fichier est toujours présent pour des raisons de compatibilité ascendante, mais maintenant, c'est le fichier /etc/nsswitch.conf, plus complet, qui est utilisé.
Entre d'autres lignes, vous devriez voir dans ce fichier /etc/nsswitch.conf :
root@equipexdns:~# cat /etc/nsswitch.conf hosts: files … dns …
La résolution la résolution locale (fichier /etc/hosts) est favorisée sur la résolution avec DNS comme vous pouvez le voir dans l’ordre indiqué : files puis ensuite dns. Mais vous allez changer cela dans la suite de l’atelier.
Dans un réseau avec serveur DNS, le fichier /etc/hosts devrait être réduit à sa plus simple expression, puisque c’est votre serveur qui servira à la résolution de noms.
Votre fichier /etc/hosts devrait avoir un contenu similaire à ce qui suit :
root@equipexdns:~# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain adresseip equipexdns …
Le fichier /etc/resolv.conf doit contenir l’adresse IP du serveur DNS. Ce fichier est vide par défaut.
Vous devez renseigner ce fichier pour tous les ordinateurs du réseau, STA et serveurs et même votre serveur DNS equipexdns qui est aussi une machine cliente de son propre service DNS. Cette VM peut avoir besoin de trouver une IP à partir d’un nom.
Vous allez indiquer également le domaine dans lequel vous êtes situés (domain) et comment compléter un nom DNS si on n'indique pas le domaine (search) :
root@equipexdns:~# nano /etc/resolv.conf domain utilisateurs.gsb.fr search utilisateurs.gsb.fr nameserver adresseIPdeVotreServeurDNS
Vérifiez que la résolution de noms ne fonctionne pas pour l'instant :
root@equipexdns:~# host equipexdns Host equipexdns not found: 5(REFUSED)
root@equipexdns:~# apt -y install bind9 dnsutils
Modifiez le fichier de configuration locale du serveur DNS equipesxdns.
Attention : Respectez rigoureusement la syntaxe. Bind est très sensible à la moindre erreur !!! Le fichier de configuration de Bind contient de très nombreuses options de configuration qui ne seront pas toutes abordées. Vous allez vous contenter d’un fichier minimaliste
Editez le fichier /etc/bind/named.conf.local et ajoutez les informations de zones suivantes :
zone "utilisateur.gsb.fr" { type master; file "/etc/bind/db.utilisateurs.gsb.fr"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/bind/db.utilisateurs.gsb.inv"; };
Voyons la signification de chaque champ :
Option | Commentaires |
---|---|
zone “utilisateurs.gsb.fr” { | Le nom de la zone entre guillemets et suivi d’une accolade. |
type master; | Master indique que vous avez l’autorité sur la zone. D’autres ser-veurs (esclaves) pourront se synchroniser avec votre serveur. |
file “/etc/bind/db.utilisateurs.gsb.fr”; | Emplacement et nom du fichier de zone. Il sera placé dans /etc/bind/ et s’appellera db.utilisateurs.gsb.fr |
}; | L’accolade ferme la définition de la zone. |
La zone suivante porte la mention « in-addr.arpa » qui indique la zone inverse. Cette zone inverse permet au serveur de fournir un nom d’hôte à partir d’une adresse IP.
Cette fonctionnalité est rendue nécessaire par certains services réseau. Le nom de la zone répond à une structure très précise. Le début du nom de la zone est constitué par le préfixe réseau de l’adresse IP. Les conventions sont les suivantes : Les tâches d’administration sur le serveur vont être les suivantes :
Notez bien au passage l’inversion des octets !
Pour le contexte GSB, et compte tenu du découpage en sous-réseau il faut un fichier de zone inverse b.a.in-addr.arpa;
Vous devez maintenant créer les deux fichiers indiqués pour nos zones dans /etc/bind/named.conf.local.
Dans votre zone, vous avez plusieurs serveurs avec des adresses IP précises. Choisissez de créer des enregistrements pour vos serveurs DHCP et DNS.
Voici un contenu minimaliste pour ce fichier /etc/bind/db.utilisateurs.gsb.fr que vous devez créer :
$ORIGIN utilisateurs.gsb.fr. $TTL 1D @ IN SOA equipexdns.utilisateurs.gsb.fr. root.utilisateurs.gsb.fr. ( 2006031201 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ) ; minimum NS equipexdns.utilisateurs.gsb.fr. equipexdns A 111.222.333.444 dhcp A 111.222.333.445
Chaque ligne (qui ne commence pas par un $) s’appelle un enregistrement DNS. La première ligne ($ORIGIN) définit le nom du domaine. Notez bien le point à la fin du nom de domaine.
La deuxième ligne ($TTL 1D) indique la durée de vie des informations transmises par votre ser-veur DNS. En effet, les machines qui feront appel à votre serveur vont conserver dans un cache les informations découvertes afin de ne pas refaire en permanence les mêmes de-mandes. Ici, au bout de trois jours (1D = 1 day), les informations doivent être retirées du cache. Comment déterminer ce TTL ? Cela dépend de votre zone. Si elle change souvent, il faut un TTL court.
La troisième ligne est la plus importante. C’est un enregistrement SOA (Start Of Authority) qui indique que les informations en-dessous sont de votre responsabilité. En effet, vous êtes le serveur maître de la zone gsb.local. Voici sa structure :
@ IN SOA | equipexdns.utilisateurs.gsb.fr. | root.utilisateurs.gsb.fr. | ( 2006031201; serial\\28800; refresh\\14400; retry\\3600000; expire\\86400 ); minimum |
Enregistrement DNS de type Internet (IN) déclarant notre autorité (SOA). Le @ fait référence à $ORIGIN. | Nom du serveur de nom maître sur la zone gsb.local.\\Attention au point à la fin !!! | Email (sans @) de l’administrateur de la zone\\Attention au point à la fin !!! | Une série de valeurs numériques utilisées pour la synchronisation entre le serveur maître et ses esclaves.\\La première parenthèse doit être sur la même ligne que le SOA. |
La quatrième ligne est un enregistrement NS (Name Server) qui donne le nom du serveur maître sur la zone (vous). La cinquième ligne est un enregistrement A (Address) qui donne l’IP de la machine dont le nom est indiqué à droite. Voilà, pour l’essentiel sur ce fichier. Passons au fichier de zone inverse.
Le fichier de zone inverse (/etc/bind/db.utilisateurs.gsb.inv) doit contenir :
$TTL 3D @ IN SOA equipexdns.utilisateurs.gsb.fr. root.utilisateurs.gsb.fr. ( 2006031201 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ) ; minimum NS equipexdns.utilisateurs.gsb.fr. 444 PTR equipexdns.utilisateurs.gsb.fr. 445 PTR dhcp.utilisateurs.gsb.fr.
Les informations sont sensiblement identiques. La différence réside sur les enregistrements décrivant les machines. On indique la fin de l’adresse IP. PTR indique qu’il s’agit d’un enregistrement inverse.
Ensuite, on indique le nom FQDN des machines suivi d’un point.
Quand le serveur DNS va recevoir une requête pour laquelle il n’a pas de réponse, ce qui est le cas pour accéder à des serveurs sur Internet, il va transmettre la requête aux serveurs listés dans le paramètre forwarders. En principe on indique le serveur DNS de son FAI. Vous pouvez aussi pour cet atelier mettre les serveurs DNS publics 8.8.8.8 ou 8.8.4.4 ou 1.1.1.1ou 9.9.9.9.
Pour activer la récursivité, modifier /etc/bind/named.conf.options et metez no au paramètre dnssec-validation :
Options { … dnssec-validation no; … };
Rajouter dans le fichier /etc/bind/named.conf.options l’option suivante :
Options { … forwarders { 8.8.8.8; 8.8.4.4; }; … };
Utilisez la comande suivante pour tester voter configuration
# named-checkconf -z
Par défaut le serveur DNS ne va répondre qu’aux requêtes des clients situés sur le même sous-réseau qui est ici 192.168.xxx.xxx/xx. Cela permet de limiter les attaques basées sur le service DNS. Pour autoriser des clients d'autres sous-réseaux, utilisez l'option allow-query :
Options { … allow-query { 192.168.xxx.yyy/24; } ; … };
allow-query { 192.168.1/24; } ;
De nombreuses modifications ont été réalisées. Des erreurs ont pu être introduites dans les fichiers. Cette partie a pour but de vous présenter les erreurs généralement rencontrées. Plusieurs outils permettent de valider la configuration (au niveau de la syntaxe tout au moins) :
Commande | Effet |
---|---|
named-checkzone | Valide le fichier /etc/named.conf et /etc/named.conf.local |
named-checkzone <nom_de_zone> <nom_du_fichier> | Valide le fichier de zone |
named –g | |
host <nom_de_machine> | Interroge le serveur DNS au sujet de la machine indiquée. |
hostname –f | Donne le nom FQDN de la machine local |
Ensuite, lancez le serveur en mode débogage, vous aurez déjà pas mal d’informations sur les éventuels problèmes :
root@equipexdns:~# named -g
Analyser les messages d'erreur obtenus puis faites éventuellement un CTRL-C pour stopper le serveur afin d'éditer le fichier concerné.
Si vous avez une erreur du type
none:0: open: /etc/bind/rndc.key: permission denied
Ignorez là.
S'il n'y a plus d’erreurs de syntaxe, arrêtez puis relancez le serveur de la façon habituelle :
root@equipexdns:~# service bind9 restart Stopping domain name service...: bind9. Starting domain name service...: bind9.
Ensuite, faites quelques tests :
root@equipexdns:~# hostname equipexdns root@equipexdns:~# host equipexdns equipexdns.utilisateurs.gsb.fr has address 111.222.333.444
La commande ci-dessous est particulièrement intéressante. Elle permet de lister les informations sur la zone mais « vues » par le serveur :
root@equipexdns:~# host -lv utilisateurs.gsb.fr
Maintenant, vos hôtes peuvent accéder à Internet avec une résolution de noms comme vous pouvez le vérifier à partir d'une autre VM de votre réseau utilisateur correctement configurée.
root@dhcp:~# lynx http://www.ac-limoges.fr
Les commandes dig et nslookup qui permettent de tester la configuration du serveur DNS et de pouvoir détecter des erreurs de configuration sur les serveurs DNS pour les corriger.
La commande nslookup est plus ancienne que la commande dig, il est possible de lui passer soit le nom d’une station ou l’adresse d’un serveur pour obtenir les informations fournies par le serveur DNS. Voici ci-dessous deux exemples :
$ nslookup dhcp Server: 192.168.50.90 Address: 192.168.50.90#53 Name: dhcp.mondomaine.org Address: 192.168.1.2 $ nslookup 192.168.1.2 2.1.168.192.in-addr.arpa name = dhcp.mondomaine.org.
Tapez la commande nslookup sur une des stations du réseau pour obtenir et vérifier les informations fournies par le serveur DNS.
La commande dig fournit plus d’information en interrogeant directement un serveur DNS spécifié (l’adresse du serveur doit être indiquée en premier paramètre) en plus des informations de résolution de noms. Voici ci-dessous quelques exemples d’utilisation :
$ dig ns1.mondomaine.org ; <<>> DiG 9.16.22-Debian <<>> ns1.mondomaine.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34654 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 8a3cc0da0dea6eaf3506eba35e6121ea484f5e9d41ee1144 (good) ;; QUESTION SECTION: ;ns1.mondomaine.org. IN A RSX103 – Cnam Paris ;; ANSWER SECTION: ns1.mondomaine.org. 604800 IN A 192.168.50.90 ;; ADDITIONAL SECTION: ns2.mondomaine.org. 604800 IN A 192.168.50.91 ;; Query time: 0 msec ;; SERVER: 192.168.50.90#53( 192.168.50.90) ;; WHEN: Mon Feb 03 15:59:38 UTC 2022 ;; MSG SIZE rcvd: 139
$ dig soa mondomaine.org ; <<>> DiG 9.16.22-Debian <<>> soa mondomaine.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38518 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 8333ab9fd5d0555621ef9a4e5e6123e1312c74e39b52d58e (good) ;; QUESTION SECTION: ;mondomaine.org. IN SOA ;; ANSWER SECTION: mondomaine.org. 604800 IN SOA ns1.mondomaine.org. root.mondomaine.org. 1 604800 86400 2419200 604800 ;; ADDITIONAL SECTION: ns1.mondomaine.org. 604800 IN A 192.168.50.90 ns2.mondomaine.org. 604800 IN A 192.168.50.91 ;; Query time: 0 msec ;; SERVER: 192.168.50.90#53(192.168.50.90) ;; WHEN: Mon Feb 03 16:08:01 UTC 2022 ;; MSG SIZE rcvd: 192
$ dig www.mondomaine.org ; <<>> DiG 9.16.22-Debian <<>> www.mondomaine.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20402 RSX103 – Cnam Paris ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 95f0892417ed967cf361e6965e6125932ec00d08cde00be4 (good) ;; QUESTION SECTION: ;www.mondomaine.org. IN A ;; ANSWER SECTION: www.mondomaine.org. 604800 IN CNAME srv.mondomaine.org. srv.mondomaine.org. 604800 IN A 192.168.50.100 ;; ADDITIONAL SECTION: ns1.mondomaine.org. 604800 IN A 192.168.50.90 ns2.mondomaine.org. 604800 IN A 192.168.50.91 ;; Query time: 0 msec ;; SERVER: 192.168.50.90#53(192.168.50.90) ;; WHEN: Mon Feb 03 16:15:15 UTC 2022 ;; MSG SIZE rcvd: 177
$ dig ptr 100.50.168.192.in-addr.arpa ; <<>> DiG 9.16.22-Debian <<>> ptr 100.50.168.192.in-addr.arpa ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21895 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: d55d2ee64d3f84bf9565d5b75e61267cf152fde2ee26b21e (good) ;; QUESTION SECTION: ;100.50.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.50.168.192.in-addr.arpa. 604800 IN PTR srv.mondomaine.org. ;; Query time: 0 msec ;; SERVER: 192.168.50.90#53(192.168.50.90) ;; WHEN: Mon Feb 03 16:19:08 UTC 2022 ;; MSG SIZE rcvd: 149