| ]











Présentation :



Un DNS (Domain Name System)
sert à faire la correspondance entre l'adresse IP et le nom de la

machine

Plus concrètement sans DNS vous seriez obligé de taper

directement les adresses IP

Pour avoir naviguer sur internet vous devez configurez votre

serveur DNS



Objectif :



Disposer d'un serveur cache DNS, afin d'accélérer les requêtes

simplifier l'adressage des machines internes à votre

établissement

Installation du serveur:


Pour mettre en place le service de résolution de nom sur un serveur Linux, on va procéder successivement aux opérations suivantes :
 • Installer le logiciel BIND avec la commande (yum).
installer le package si cela n' est pas déjà réalisé,
configurer les fichiers :
/etc/named.conf
/var/named/named.ca
/var/named/named.local
faire créer les fichiers suivants:
/var/named/nom du domaine.fr
/var/named/db.192.168.0.1 (adresse ip).
démarrer le service serveur.


Installer le package


La résolution de nom est réalisée par les produits du package bind. La version actuelle est le package bind-9.x. qui remplace les versions antérieures 4.x. Nous resterons sur une configuration simple. On va utiliser "bind 9". Il faudra donc installer les fichiers bind-9.x et bind-utils-9.x. Ce deuxième package donne quelques outils comme host, dig... L' installation a copié les fichiers. Sur une configuration simple vous allez avoir 5 fichiers à créer ou à modifier sur le serveur primaire :
/etc/bind/named.conf (fichier de configuration global du service DNS du serveur de nom primaire)
/var/bind/stage.hosts qui contiendra la description de la correspondance nom-adresse de toutes les machines du réseau
/var/bind/stage.rev qui contiendra la correspondance inverse adresse-nom (pour la résolution inverse de nom in-addr.arpa)
/var/bind/local.host pour la configuration locale (localhost - 127.0.0.1).
/var/bind/local.rev pour la configuration reverse (127.0.0.1 - localhost).


Configuration de serveur :


Le fichier named.conf


Voici un exemple de fichier commenté pour le domaine fictif stage.org, d'adresse 192.168.1.0.

 # fichier named.conf pour le domaine stage.org
# Indication du chemin où sont localisés les fichiers de la base de données
       options {
                             directory "/var/named";
                          forwarders {           
# Indiquer un serveur dns de niveau supérieur 
     0.0.0.0;
                                                 
  };  
                              



                    auth-nxdomain no;                     






                     # RFC1035
 }; 







# pour le fichier de cache du serveur de nom zone "." in { 










file "db.root"; 
type hint; 

 

}; 


# pour la recherche directe dans le domaine, on utilise le fichier stage.org 
       zone "stage.org" 

in { 




type master;          # nous sommes serveur primaire de ce domaine 




file "stage.hosts"; # les correspondances nom, adresse IP
}; 








# pour la recherche de zone inverse (reverse) on utilise le fichier stage.rev 
zone "1.168.192.in-addr.arpa" in {
 type master;            # serveur primaire de 1.168.192.in-addr.arpa 
file "stage.rev";
 }; 
# pour la résolution de nom sur localhost zone "local" in {
 type master;         # nous sommes serveur de 127.0.0.1
 file "local.host";       # correspondances nom, adresse IP 
}; 
# rappel : la machine locale porte toujours l'adresse « localhost » 127.0.0.1 
# résolution inverse sur cette zone 
# la description est dans local.host 
zone "0.0.127.in-addr.arpa" in { 
type master;            # serveur primaire de 0.0.127.in-addr.arpa
file "local.rev";






 };


Notez bien que les noms appliqués aux fichiers de ressources ne sont en rien imposés. Il s' agit d' une pure convention. En effet un serveur de nom peut prendre en charge plusieurs domaines, cela permet de structurer l' organisation des fichiers de ressources. Notez également l' option"type master". Il s' agit d' un serveur primaire. Nous verrons comment déclarer un serveur secondaire.


Le fichier /var/named/stage.hosts


Le paramètre @, signifie qu' il s' agit du domaine "stage.org" (le nom tapé après le mot « zone » dans le fichier de configuration named.conf). Le paramètre "IN", signifie qu' il s' agit d' un enregistrement de type Internet. Notez la présence d' un point (.) après le nom des machines. Sans celui-ci, le nom serait « étendu ». Par exemple, ns1.stage.org (sans point) serait compris comme ns1.stage.org.stage.org (on rajoute le nom de domaine en l' absence du point terminal). Le point (.) terminal permet de signifier que le nom est pleinement qualifié. NB : dans ces fichiers, les commentaires sont précédés d' un point-virgule. enregistrement de type SOA, on déclare tous les paramètres ainsi que l' adresse du responsable administratif de la zone, ici : postmaster 
$TTL                              3h @ 
                                      IN SOA                                                ns1.stage.org. postmaster.stage.org. (  16 ;  
                                            86400 ;  














                                            3600 ; 


                                            3600000 ; 


                                            604800 ;) 


                                           ; enregistrement de type Name Server, on déclare le serveur de nom                       


                                           IN NS ns1.stage.org. 


                                           ; on déclare les autres noeuds pour la résolution de nom 











                                           ; Notez l' absence du point après les noms pour permettre












                                           ; l' extension du nom de domaine. ns1 IN A 192.168.1.1
                                           ; client cli1 IN A 192.168.1.2
                                           ; on déclare les alias CNAME : messagerie, news, www, ftp 
                                           
                                           mail               IN CNAME ns1 
                                           news               IN CNAME ns1 
                                           www               IN CNAME ns1 
                                           ftp                    IN CNAME ns1


/var/named/stage.rev


Ici il s'agit de la résolution de nom inverse de la zone stage.org. 


$TTL                    3h 
                             @ IN SOA ns1.stage.org. postmaster.stage.org. ( 
                             16 ; 
                             86400 ; 
                             3600 ; 
                             3600000 ; 
                             604800 ;) 
                            ;





enregistrement de type Name Server 







                            IN NS ns1.stage.org.







                            ;
On déclare les noeuds dans le domaine 



1.168.192.in-addr.arpa             ;





Ici, on ne peut pas se passer du nom complet (fini par un point).                                          





                   










;
 l' extension serait (exemple avec ns1) : 







1.1.168.192.in-addr.arpa. 


                                                       1                IN PTR ns1.stage.org. 


                                                      ;
Client
                                                       2                IN PTR cli1.stage.org.
/var/named/local.hosts
           
                          $TTL                  3h 
                                       @ IN SOA ns1.stage.org. postmaster.stage.org. ( 
                                      16 ; 
                                      86400 ; 
                                      3600 ; 
                                      3600000 ; 
                                      604800 ;)
                                  
                                     ; enregistrement de type Name Server 
                                     IN NS ns1.stage.org. 
                                     ; On déclare le noeud dans le domaine 





local 


                                     localhost IN 127.0.0.1













/var/named/local.rev


                      
                       $TTL             3h 
                                             @ IN SOA ns1.stage.org. postmaster.stage.org. ( 
                                             16 ; 
                                             86400 ; 
                                             3600 ; 
                                             3600000 ; 
                                             604800 ;) 
                                             ; enregistrement de type Name Server 
                                             IN NS ns1.stage.org. 
                                             ; On déclare les noeuds dans le domaine 0.0.127.in-addr.arpa
                                             ; Normalement, il n' en a qu' un : 127.0.0.1 = localhost.
                                             ; Noter le point terminal.
                                            1                             IN PTR localhost.
Compléments pratiques


Démarrer ou arrêter le service le service Le service (daemon) qui active la résolution de nom s' appelle"named", prononcer "naime dé". Si vous voulez l' arrêter ou le redémarrer dynamiquement vous pouvez utiliser les commandes suivantes : 


/etc/init.d/named stop 
/etc/init.d/named start

Relancer le service serveur de cette façon peut parfois poser problème. 
En effet cette procédure régénère le cache du serveur. Le service prends également un nouveau "PID". Si vous voulez éviter cela, ce qui est généralement le cas, préférez la commande "kill -HUP 'PID de Named'". Vous trouverez le PID de named dans "/var/run".


Finaliser la configuration


Les fichiers de configuration sont créés. Il ne reste plus qu 'à tester. Il faut au préalable configurer le serveur pour qu' il utilise lui même le service DNS et redémarrer les services réseau. Relancez, ensuite le service réseau. Utilisez les commandes suivantes : 


/etc/init.d/network stop 
/etc/init.d/network start


Procédure de configuration du client


La description de la configuration de tous les clients possibles n' est pas détaillée. Vous trouverez ci-dessous des éléments pour un client windows 9x et pour un client Linux.


Windows


Configurer le client pour lui signifier quel est le serveur de nom qu' il doit consulter. Pour cela il faut aller dans : panneau de configuration - réseau - tcp/ip - Onglet "Configuration DNS". Vous allez pouvoir définir le nom d' hôte de la machine locale dans le réseau et le nom de domaine auquel appartient l' hôte. Définissez ensuite l' adresse IP du serveur de nom que vous voulez utiliser.


Avec Linux


Vous pouvez utiliser linuxconf ou bien modifier (en tant que « root ») le fi chier de configuration du « resolver » (/etc/resolv.conf). 


                       # Fichier /etc/resolv.conf

                       search stage.org





 # Extension à rajouter à un nom d' hôte sans points                      nameserver 192.168.1.1  

# Ip du DNS


Annexe : Mise à jour dynamique du dns

Modification des fichiers named.conf et dhcpd.conf


/etc/bind/named.conf
                         
                         # fichier named.conf pour le domaine stage.org 
               
          # Indication du chemin où sont localisés les fichiers de la base de données                         


















                 options {
                                 directory "/var/named"; 
                                  forwarders {                  # Indiquer un serveur dns de niveau supérieur         


                                0.0.0.0;
                                };  
       auth-nxdomain no;                          # conform to RFC1035 
                               };            
                     # pour le fichier de cache du serveur de nom zone "." in
           { 
               type hint; 
             file "db.root";
                   };
              # pour la recherche directe dans le domaine, serveur primaire, on utilise le fichier stage.org 
                         zone "stage.org" in


{



               

                            type master;              # nous sommes serveur primaire de ce domaine






                            file "stage.hosts";           

# zone stage.org 



                            allow-update {                





# Authorise la mise à jour depuis l'hôte local




                                        127.0.0.1; 




                     };




          }; 




         # pour la recherche de zone inverse (reverse) on utilise le fichier stage.rev


             zone "1.168.192.in-addr.arpa" in {
          type master;                 # zone stage.org reverse  
          file "stage.rev"; 
         allow-update {             # Authorise la mise à jour depuis l'hôte local 
                               127.0.0.1; 
                 }
                       }; 
                       # pour la résolution de nom sur localhost zone "local" in 





{


                 type master; 


                 file "local.host"; 


       }; 


           zone "0.0.127.in-addr.arpa" in { 


              type master; file "local.rev"; 


                  };
/etc/bind9/dhcp.conf
                          ddns-update-style interim;              # Mode de mise à jour 
                          ddns-updates on;                               # Autorise les maj du dns ignore client-                   






                          updates;                                                # Refuse les maj client 


                          update-static-leases on;                    # Maj des enregistrements statiques                       


                          ddns-domainname "dnc";                # Domaine 


                          default-lease-time 600; 


                          max-lease-time 7200; 





                         option domain-name-servers 192.168.1.10; 





                        option subnet-mask 255.255.255.0; 


                        option routers 192.168.1.1; 


                        log-facility local7; 





                        subnet 192.168.1.0 



 netmask 255.255.255.0 {


                                 range 192.168.1.200 192.168.1.210;


                                  allow

 unknown-clients;



              } 



                       zone stage. { 



                      primary 127.0.0.1; 



            }
                 zone 1.168.192.in-addr.arpa. {
                 primary 127.0.0.1; 
}