DNS sous LINUX
Bind




Un serveur DNS est un serveur qui transforme l'adresse de type http://www.ac-creteil.fr en adresse IP, qui sont les seules adresses valides sur internet. Lorsque vous souhaitez naviguer sur internet, vous devez obligatoirement avoir configuré le DNS de votre machine, sinon il vous sera impossible d'atteindre le moindre site web, à moins de connaître son adresse IP, ce qui est assez difficile à retenir.
Le serveur DNS à une autre fonctionnalité qui est d'indiquer le serveur SMTP (serveur de messagerie) qui est autorisé à recevoir les messages pour votre domaine, ainsi lorsque vous envoyez un message à toto@ac-creteil.fr vous n'indiquez pas le serveur de l'académie de Créteil, qui a la charge de remettre ce message au bon serveur.

Le serveur DNS Bind que nous allons installer est le serveur le plus utilisé sur internet. 
  1. Objectif

    La raison pour laquelle on peut avoir besoin d'un serveur DNS dans un établissement scolaire peut être double.

    La première disposer d'un serveur cache DNS, afin d'accélérer les requêtes.

    La seconde, qui n'est pas incompatible avec la première, est de simplifier l'adressage des machines internes à votre établissement.
    Ainsi je veux que les élèves ne soient  pas obligés de taper l'adresse IP de la machine web (intranet), mais puissent y arriver avec www.mon_lycee.fr, il faut alors que ce serveur puisse "forwarder" les requêtes vers un serveur dns officiel.
    Il est clair qu'ici mon_lycee.fr est un sous domaine complètement inventé, il n'a pas de valeur légale sur internet. Ainsi je vous conseille vivement de ne pas utiliser un domaine existant.

    Un domaine n'existe au sens légal que s' il a été déposé officiellement auprès d'un organisme autorisé (Voir le nic france pour plus d'informations). Cela serait la troisième possibilité de configuration d'un serveur DNS, vouloir installer un serveur public (officiel). Cette solution n'est pas envisageable pour un établissement scolaire.  

    Donc pour revenir à ce que l'on souhaite faire, on va se créer un domaine rien que pour nous, avec comme nom mon_lycee.fr et comme première machine mon_serveur.

  2. Installer le serveur bind

          Pour installer bind, il vous suffit d'installer le rpm bind-8....rpm (je n'indique pas ici de version, utilisez de préférence la dernière), et rpm -i bind-8.....rpm et le paquet caching-nameserver (ce paquet n'est pas nécessaire mais il vous installe les fichiers named.conf et /var/named/named.ca et /var/named/named.local, il installe aussi named.boot qui n'est plus utilisé dans la version 8 de bind) il permet de configurer un cache dns (on peut bien sûr compiler les sources).
    En passant installer aussi le paquet bind-util nous l'utiliserons pour tester la configuration.
     
    Vous obtenez alors les fichiers suivants :

    /etc/named.conf 
                   Contient les paramètres généraux. 
    /var/named/named.ca        Indique les serveurs dns racines.
    /var/named/named.local     résolution locale des adresses loopback

    Il vous faut en fonction de ce que vous voulez faire créer les fichiers suivants :

    /var/named/mon_lycee.fr    fichier qui fait correspondre le nom de machine et son adresse IP
    /var/named/db.192.168.0       fichier de zone inverse qui fait correspondre l'adresse IP avec le nom de machine.

  3. Configurer Bind.

Il faut pour cela configurer les différents fichiers que nous venons de voir.
On cherche ici à configurer un domaine mon_lycee.fr avec comme adresse de réseau 192.168.0.0.        

named.conf
;
;Fichier d'amorçage du serveur primaire pour mon_lycee.fr
;
options {
              directory "/var/named";
               forward first;
               forwarders {
                                  195.98.246.50
                                  };

query-source address * port 53;

allow-query {
             127/8;
             ! 192.168.1.10;
             192.168.1/24;
             };

allow-transfert { ! *; };
allow-update {! *; };

listen-on port 53 { *; };
          
};

logging {
             category statistics { null;
             };
            category security{
            default_syslog;
            default_debug;
             };
             category default {
             null;
             };      
};

zone "." {
               type hint;
               file "named.ca";
};

zone "0.0.127.in-addr.arpa" {
               type master;
               file  "named.local";
};

zone "mon_lycee.fr" in {
               notify no;
               type master;
               file "mon_lycee.fr";
};

zone "0.168.192.in.addr.arpa" in {
              notify no;
              type master;
              file "db.192.168.0";
};  
 
options définit les options du serveur dans son ensemble. On peut configurer plus finement en plaçant les options dans les zones (si vous gérez plusieurs domaines ou des sous domaines par exemple). 

zone
définit les options s'appliquant à des zones particulières.
La zone 0.0.127.in-addr.arpa crée une zone pour le réseau loopback. 
La zone . indique l'emplacement du root du serveur du domaine internet. Un forward only ne nécessite pas de zone .
La zone mon_lycee.fr est la zone que vous souhaitez créer et qui a comme fichier mon_lycee.fr.

logging
permet de configurer les logs de named. On peut les envoyer vers deux canaux syslog ou un fichier ou null.
Il existe plusieurs types de "category" (statistics, security, default,..). Vous pouvez paramétrer très finement cela.
 
directory indique le répertoire ou se trouve les fichiers. Vous pouvez à la place indiquer le chemin complet.  

forward
peut avoir plusieurs options (first, only) first redirige les requêtes aux serveurs se trouvant dans la liste forwarders, si les hôtes ne répondent pas, le serveur tentera de répondre.
only redirige sans réponse aux serveurs se trouvant dans la liste forwarders 

forwarders
indique les serveurs vers lesquelles les requêtes sont envoyées. 195.98.246.50 est le dns de l'académie de Créteil.

query-source
indique que le port 53 est le port d'échange (source et destination) entre les serveurs DNS. Très utile lorsqu'il y a un firewall.

allow-query
contient une liste des adresses dont le serveur acceptera ou refusera les requêtes. L'ordre compte, le premier l'emporte. 127/8 autorise localhost, j'interdis la machine 192.168.1.10 et autorise les autres (un exemple seulement).

allow-transfert
interdit les transferts de requête de zone. Par défaut cela est autorisé de partout.
allow-update refuse les instructions de mises à jour de la base de données de zone. Par défaut les mises à jour sont refusées.

listen-on port 53
indique le port en écoute pour les clients et les interfaces. Indiquer * pour écouter sur toutes les interfaces, ou l'adresse IP de la carte.

category statistics génère un rapport périodique d'activité.
category security requêtes acceptées/refusées.
category default default est équivalent à toutes catégories.
  
type déclare le type d'entrée, il en existe de plusieurs types (master, hint)
master déclare ce serveur comme étant primaire. Si vous créez un serveur secondaire indiquez slave.
hint déclare que cette entrée n'est qu'un endroit ou débuter les recherches.

notify no pour ne pas informer les autres serveurs s'il y a des changements dans la zone. 
Named.ca
Je ne donne pas d'exemple ici. Vous n'avez pas à modifier ce fichier. Il contient les adresses des serveurs root.
named.local
@      IN    SOA mon_serveur.mon_lycee.fr. postmaster.mon_serveur.monlycee.fr.(
                    2000101500 ; numéro de série
                    28800 ; rafraîchissement toutes les 8 heures
                    14400 ; nouvel essai toutes les 4 heures
                    604800 ; expiration dans 7 jours
                    86400 ) ; temps de vie minimal 24 heures
           NS    mon_serveur.mon_lycee.fr.
1         PTR  localhost.
 
Normalement vous n'avez pas à changer les valeurs qui sont dans ce fichier.
La première partie est identique dans les trois fichiers, si vous devez faire une modification sur un fichier vous devez modifier le numéro de série afin de faire connaître cette modification aux autres serveurs dns.
20001015 correspond au 15 oct 2000 changer cela lorsque vous faites une modification. Si vous devez faire plusieurs modifications dans la même journée incrémenté le 00. 
mon_lycee.fr
@      IN    SOA mon_serveur.mon_lycee.fr. postmaster.mon_serveur.monlycee.fr.(
                    2000101500 ; numéro de série
                    28800 ; rafraîchissement toutes les 8 heures
                    14400 ; nouvel essai toutes les 4 heures
                    604800 ; expiration dans 7 jours
                    86400 ) ; temps de vie minimal 24 heures

; serveur de nom 
          IN NS   mon_serveur.mon_lycee.fr.

;adresses IP des machines
localhost                       IN A       127.0.0.1
mon_serveur                 IN A       192.168.1.1
mon_serveur_web         IN A       192.168.1.2

;Alias
www                 IN CNAME         mon_serveur_web
ftp                     IN CNAME         mon_serveur_web
pop                   IN CNAME         mon_serveur

; Serveur smtp
mon_serveur_smtp        IN A        192.168.1.3
                           IN MX     10 mon_serveur_smtp.mon_lycee.fr.
Vous indiquez dans ce fichier, les machines que vous souhaitez pouvoir appeler par leur nom (équivalent au fichier host enregistrement de type A).


Indiquez aussi le serveur SMTP de votre domaine (enregistrement de type MX). 
Les CNAME (alias) permettent de définir les alias sur des machines. Ainsi lorsque vous tapez www.ac-creteil.fr www est un alias sur la machine web du rectorat, qui possède en fait un autre nom. 
l'avantage étant de pouvoir changer de machine sans être obligé de faire de grosses modifications. N'hésitez donc pas à utiliser les alias. 

Ce fichier est celui que vous allez modifier le plus, pensez donc à changer le numéro de série.

db.192.168.0
@      IN    SOA mon_serveur.mon_lycee.fr. postmaster.mon_serveur.monlycee.fr.(
                    2000101500 ; numéro de série
                    28800 ; rafraîchissement toutes les 8 heures
                    14400 ; nouvel essai toutes les 4 heures
                    604800 ; expiration dans 7 jours
                    86400 ) ; temps de vie minimal 24 heures

; serveur de nom 
          IN NS   mon_serveur.mon_lycee.fr.

; adresses IP inverses
1          IN PTR    mon_serveur.mon_lycee.fr.
2          IN PTR    mon_serveur_web.mon_lycee.fr.
3          IN PTR    mon_serveur_smtp.mon_lycee.fr.
Fichier des reverses. Une entrée de type A dans ce fichier doit avoir une correspondance dans ce fichier, enfin normalement.

Le 1, 2, 3 correspondent à respectivement l'adresse 192.168.1.1, et ainsi de suite.

 

4 Remarques : 

- Pensez à toujours mettre un point à la fin des noms de machine + domaine.
- Vous n'aurez certainement pas le besoin d'un serveur SMTP, il est là pour l'exemple. Si vous deviez en ajouter un deuxième indiquer un poids supérieur (IN MX   15  mon_autre_serveur_smtp). Si vous souhaitez en faire votre SMTP principal indiquez un poids inférieur.
- Les numéros de série peuvent être différents d'un fichier à un autre. Vous n'avez qu'à modifier celui du fichier que vous modifiez.
- Postmaster doit être un compte existant sur votre machine. ce qui est normalement le cas. Il recevra tout le courrier concernant ce domaine.
- Un serveur DNS n'est pas simple à mettre en oeuvre. Il faut entre autre éviter de monter la ligne à chaque fois qu'une requête est envoyée au serveur web local.

Je n'ai pas ici donné toutes les options disponibles, mais toutefois , il peut être utile d'enregistrer certains logs de votre dns.
Voir les paramétrages du fichiers named.conf.
Attention à ne pas enregistrer toutes les requêtes et entre autres les requêtes qui aboutissent, car vous auriez alors des fichiers énormes.

Pensez à configurer votre fichier /etc/resolv.conf qui doit contenir les lignes suivantes :
domain mon_lycee.fr
nameserver 127.0.0.1
          (autant utiliser le dns que vous venez de configurer, vous pouvez éventuellement en indiquer un autre).

5 Tester son serveur DNS

Une fois que votre installation est terminée, vous devez la tester. 
Pensez avant tout à lancer le daemon named, sinon vous risquez de ne rien voir :-). 
Pour cela, vous avez installé bind-util. Vous pouvez  utiliser alors l'utilitaire nslookup.

6 Configurer les clients

Je ne vais pas ici vous apprendre à configurer le dns de vos clients, par contre pensez à utiliser le dns, que vous venez de mettre en oeuvre, et donc de le placer en première position de vos dns.


TP 1 :  Installer le serveur bind sur votre machine. 
            Configurer bind de façon à disposer d'un dns local capable de forwarder les requêtes officielles.  


© Philippe Chadefaux - 10/10/2000 -