lundi 19 décembre 2016

CONFIGURATION D’UN SERVEUR DNS sous RHEL

CONFIGURATION D’UN SERVEUR DNS


 Le système DNS introduit une convention de nommage hiérarchique des domaines qui commence par un domaine racine appelé ".". Les domaines situés directement sous le domaine racine sont appelés domaines de premier niveau. Ils sont gérés par l'ICANN et représentent souvent la localisation géographique (fr, be, eu, ru, de ...) ou le type de service (museum, info, org, gov, mail, ...). Les domaines de second niveau sont disponibles pour les entreprises et les particuliers. Ils sont distribués et gérés par d'autres sociétés comme l'InterNIC (une filiale le l'ICANN) ou bien l'AFNIC (Association Française pour le Nommage Internet en Coopération) qui gère le domaine fr. Enfin une multitude de sous-domaines peuvent être crée à l'intérieur d'un domaine de second niveau.



Hiérarchie du système DNS
Les noms de machine utilisant le système DNS sont appelés noms d'hôtes. Un nom d'hôte peut contenir jusqu'à 255 caractères alphanumériques (chiffres et lettres) et le caractère trait d'union "-". L'utilisation du caractère "." est interdite car il est réservé afin de séparer un domaine supérieur d'un domaine inférieur.
En effet, on distingue deux types de noms avec le système DNS :
le nom d'hôte qui représente le nom d'une machine (un ordinateur, une imprimante ou bien encore un routeur).
Le nom de domaine pleinement qualifié ou FQDN (Fully Qualified Domain Name).
Le FQDN est en fait composé de deux parties : le nom d'hôte et le suffixe DNS. Le suffixe DNS défini la relation entre le domaine auquel appartient la machine et le domaine racine. Par exemple, si l'on considère une machine avec le nom d'hôte CLIENT-11 située dans le domaine students, son suffixe DNS est : students.cepi.ci. Le nom de domaine pleinement qualifié (FQDN) de la machine ntic-11 est donc : ntic-11.students.cepi.ci.
Les fichiers de configuration du serveur dns sont les suivants :
Le fichier /etc/named.conf ce fichier indique les fonctions de named et les noms des fichiers de configuration
/var/named/named.local  ce fichier permet de résoudre l’adresse de boucle local.
named.hosts ce fichier qualifié de zone file, contient les noms dns et les adresses IP correspondantes des hôtes d’un domaine. Ce fichier doit être créé dans le répertoire /var/named le nom qui lui est donné (named .hosts) est à titre d’exemple l’administrateur est libre de lui donner le nom qu’il veut.
named.rev ce fichier qualifié de zone file, contient les données inverse du précédent (named.hosts) et permet de connaître le nom d’une machine à partir de sont adresse ip. Ce fichier doit être crée dans le répertoire /var/named le nom qui lui est donné (named.rev) est à titre d’exemple l’administrateur est libre de lui donner le nom qu’il veut.

1 Etude du fichier /etc/named.conf
                                                                                                                                                                                                                            Les commentaires commencent par // ou # ou bien sont de type c (/*…*/).
La structure du fichier est la suivante :
Une suite de section terminée par « ; ».
Une section «zone»  décrit un domaine DNS.
L’énoncé type précise le rôle du serveur :

type master;  indique un serveur maître
type slave;  indique un serveur secondaire
type hint;  indique un serveur cache
L’énoncé «file» précise le nom du fichier qui contient la description du domaine.

3 FORMAT D’UN ENREGISTREMENT DE RESSOURCE DNS
Les fichiers named.ca, named.rev, … contiennent des enregistrements de ressources DNS mais les noms exacts des fichiers d’enregistrement de ressources sont spécifiés dans le fichier named.conf. La structure des ressources DNS est la suivante :
Nom  durée de vie   classe   type  donnée
nom: c’est le nom d’un objet, par exemple un nom DNS.
Durée de vie: c’est la durée de vie de l’objet dans le tampon (cache).
En son absence, elle est égale à la valeur du champ  minimum de l’enregistrement SOA.
La classe indique le réseau de transport utilisé. Les réseaux tcp/ip sont définis par la classe IN.
Type : une valeur sur 16 bits spécifiant le type de ressource décrit par l'enregistrement. Le type de ressource peut être un des suivants :
SOA (Start Of Authority) : le champ SOA permet de décrire le serveur de nom ayant autorité sur la zone, ainsi que l'adresse électronique du contact technique (dont le caractère « @ » est remplacé par un point).
NS : correspond au serveur de noms ayant autorité sur le domaine.
A : il s'agit du type de base établissant la correspondance entre un nom canonique et une adresse IP. Par ailleurs, il peut exister plusieurs enregistrements A, correspondant aux différentes machines du réseau (serveurs).
PTR : permet la conversion d’une adresse ip en nom DNS.
MX : identifie un serveur de messagerie.
CNAME (Canonical Name) : il permet de faire correspondre un alias au nom canonique. Il est particulièrement utile pour fournir des noms alternatifs correspondant aux différents services d'une même machine.


4 CONFIGURATION D’UN DNS MAITRE PRINCIPAL D’UN DOMAINE

 Première étape : configuration du fichier /etc/named.conf.
Voici comment ce présente ce fichier avant sa configuration.
// named.conf for Red Hat caching-nameserver
//
options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
         // query-source address * port 53;
};
//
// a caching only nameserver config
//
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

zone "." IN {
        type hint;
        file "named.ca";
};
zone "localdomain" IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.ip6.local";
        allow-update { none; };
};

zone "255.in-addr.arpa" IN {
        type master;
        file "named.broadcast";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.zero";
        allow-update { none; };
};
include "/etc/rndc.key";


la configuration de ce fichier est simple.
 il suffit  de copier les zones
zone "localhost" et zone "0.0.127.in-addr.arpa" et de les coller à la fin du fichier juste avant la dernière ligne comme dans l’exemple ci –dessous.



// named.conf for Red Hat caching-nameserver
//
options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
         // query-source address * port 53;
};
// a caching only nameserver config
//
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localdomain" IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.ip6.local";
        allow-update { none; };
};
zone "255.in-addr.arpa" IN {
        type master;
        file "named.broadcast";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.zero";
        allow-update { none; };
};
include "/etc/rndc.key";


Après cette étape, nous allons maintenant remplacer localhost par le nom de notre domaine et dans le champs file de cette zone, nous allons remplacer localhost.zone par le nom du fichier qui contiendra les noms dns et les adresses IP correspondantes des hôtes d’un domaine. Le nom de ce fichier est laissé au choix de l’administrateur. (Ce fichier doit être créé dans le répertoire /var/named il est à noter que le contenu du fichier /var/named/named.local doit être copié dans ce fichier).
Aussi devrons-nous remplacer 0.0.127 par l’inverse des trois premiers octet de l’adresse du sous-réseau auquel nous appartenons. Par exemple si nous appartenons au sous-réseau 192.168.0.0 nous remplacerons alors 0.0.127 par 0.168.192.
Nous devrons aussi remplacer localhost.zone par le nom d’un fichier qui doit être différent du précèdent. named. ce fichier qualifié contient les données invers du précédent et permet de connaître le nom d’une machine à partir de sont adresse ip (Ce fichier doit être crée dans le répertoire /var/named il est à noter que le contenu du fichier /var/named/named.local doit être copié dans ce fichier).

Exemple de configuration d’un dns maître principal d’un domaine
Le nom du domaine est suportIT .ci
Le nom de la machine servant de serveur est serveur il a pour adresse IP 192.168.0.199
Les deux machines servant de clients sont les suivantes:
cepi6   adresse IP    192.168.0.209      
cepi5    adresse IP   192.168.0.208      
Dans ce cas de figure le fichier /etc/named.conf après modification se présente comme suit :
//
// named.conf for Red Hat caching-nameserver
//
options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
         // query-source address * port 53;
};
// a caching only nameserver config
//
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
        type hint;
        file "named.ca";
};
zone "localdomain" IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.ip6.local";
        allow-update { none; };
};
zone "255.in-addr.arpa" IN {
        type master;
        file "named.broadcast";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.zero";
        allow-update { none; };
};
zone "suportIT.ci" IN {
      type master;
      file "suportIT.ci";
     allow-update { none; };
};
zone "0.168.192" IN {
     type master;
     file "suportIT.ci.rev";
     allow-update { none; };
};
include "/etc/rndc.key";

Nous allons comme indiqué copier le contenu du fichier named.local dans  les fichiers suportIT.ci et suportIT.ci.rev. Nous allons donc en ligne de commande et nous saisissons les commandes suivantes:
#cp /var/named/named.local  /var/named/suportIT.ci
et
#cp /var/named/named.local  /var/named/suportIT.ci.rev

Par la suite nous editons le fichier /var/named/suportIT.ci et nous la modifions comme suit:
$TTL 86400
@       IN      SOA     serveur.suportIT.ci. root.serveur.suportIT.ci.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN    NS      serveur.suportIT.ci.
serveur    IN     A   192.168.0.199
cepi5        IN     A   192.168.0.208
cepi6        IN     A   192.168.0.209 
Nous éditons également le fichier /var/named/suportIT.ci.rev et nous la modifions comme suit:
$TTL 86400
@       IN      SOA     serveur.suportIT.ci. root.serveur.suportIT.ci.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      serveur.suportIT.ci.
199     IN      PTR     serveur.suportIT.ci.
208     IN      PTR    cepi5.suportIT.ci.
209     IN      PTR    cepi6.suportIT.ci.
Nb: remarquez que pour les enregistrements   IN    A,  il n’y a pas de point en fin de ligne.
       Pour les enregistrement IN  NS  et IN  PTR, il y a toujours un point en fin de ligne.
Si vous ne respecter pas cette ponctuation votre serveur DNS vous enverra un message d’erreur de configuration.
La configuration continue maintenant c’est au tour du fichier /etc/resolv.conf d’être édité.
Dans ce fichier nous indiquerons l’adresse de notre serveur DNS .
#vi /etc/resolv.conf
Nous modifions donc notre fichier comme suit.
search suportIT.ci
nameserver 192.168.0.199
Le dernier fichier à être modifier est le fichier /etc/hosts ce fichier répertorie les noms FQDN de toutes les machines du domaine et leur adresse ip correspondante.
Nous l’éditons :
#vi /etc/hosts
Et nous le modifions comme suit :
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1   localhost.localdomain  localhost
192.168.0.199    serveur.suportIT.ci      serveur
192.168.0.209    cepi6.suportIT.ci cepi6
192.168.0.208    cepi5.suportIT.ci cepi5

Enfin nous démarrons le service  à l’aide de la commande suivante :

#/etc/init.d/named start
La commande nslookup
La commande nslookup est l’outil adéquat pour mettre au point une configuration DNS et obtenir des informations provenant de n’importe quel serveur DNS.
L’exemple qui suit illustre quelques possibilités de la commande nslookup.

> help
 Aide en ligne.

> set type=ns
Visualise la liste des serveurs de nom d’un domaine.

> set type=MX
Visualise la liste des serveurs de messagerie d’un domaine :
> exit
Met fin à une session.



Aucun commentaire:

Enregistrer un commentaire