Home | Linux | Réseaux | Developpement | Divers | FAQ | Forum | Guestbook | Musique |

 

Domain Name Server (Serveur de Nom de Domaine)

1 - Introduction

A l'origine, le nombre d'hôtes sur internet était si faible et donc les adresses IP étaient assez facile à gérer. Chaque hôte avait à sa disposition une liste complète de tous les noms d'hôtes et des adresses dans un fichier local /etc/hosts ou c/:/windows/hosts.
Avec la croissance d'internet ce système devient beaucoup trop lourd à gérer ; un nouveau système était necessaire ("Il faut vivre avec son temps..." Jpouille).
Ce nouveau système est appelé BIND (Berckley Internet Domain Server). C'est en fait une base de données réparties couvrant tout le réseau.
Les noms de domaines sur un réseau sont hierarchisés de la même façon que le système de fichier Unix.
Les noms de domaines se lisent de la droite vers la gauche, nous trouvons le "." à la racine puis les Top Level Domain (TLD) qui sont les domaine du type : .com, .gov, .org, .mil, .edu et tous les autres propres au pays de localisation (.fr, .co.uk, .it, .jp, .de, .nl ...
Puis viennent les domaines du type : dummieslinux, linux-mandrake, micro$hit, 3com ... ce sont en fait le nom d'une societé, d'une association ou d'une organisation. Enfin pour finir on ndique le sous domaine qui est le nom de la machine.
Nous allons mettre en place le domaine "chezoim.fr" qui recevra les machine king (IP 10.0.0.1 - le serveur), secretariat (IP 10.0.0.2 - client win32) et custom (10.0.0.3 - client win32 avec un serveur HTTP). Donc par exemple king.chezoim.fr est un Full Qualified Domain Name : nom complet de machine dans un domaine.

2 - Présentation du DNS

Le DNS fournit un mécanisme qui convertit les adresses IP en nom mémotechniques représentant les hôtes, les réseaux et les alias de mail. Pour ce faire, il divise l'IP internet et le nom en différents groupes logiques. Du fait de sa complexité DNS possède sa propre terminologie :

Terme Définition
Domaine Entité logique ou organisation qui représente une partie d'un réseau. Par exemple unc.edu est le nom du domaine primaire de l'université de la Caroline du Nord à Chapel Hill.
Nom de domaine Partie nom d'un nom d'hôte qui représente le domaine contenant l'hôte. Dans l'adresse sunsite.unc.edu, le nom de domaine est unc.edu. Ce terme est interchangeable avec domaine.
Hôte Ordinateur sur un réseau.
Noeud Ordinateur sur un réseau.
Serveur de noms Ordinateur qui fournit des services DNS pour associer des noms DNS aux adresses IP.
Résoudre ou traduire Convertir un nom DNS en son adresse IP correspondante.
Convertisseur ou traducteur Programme ou bibliothèque de programmes qui extrait des informations DNS d'un serveur de noms.
Résolution inverse Association d'une adresse IP à son nom DNS. Egalement appelé DNS inverse.
Duper (spoof) Faire croire au réseau que l'adresse IP ou le nom de domaine est différent.

3 - Installation du DNS

Avant d'installer le logiciel de DNS vous devez vous assurer du fonctionement parfait de votre réseau (ping sans perte de paquets) pour cela allez dans la rubrique Réseaux.
Pour installer le serveur, rien de bien compliqué, munissez vous du CD de la distribution Mandrake 7.0 et recherchez le package bind-8.2.2P5-1mdk.i586.rpm.
Installez le via la commande suivante :
$ rpm -ivh bind-8.2.2P5-1mdk.i586.rpm

4 - Configuration du convertisseur

Lorsque l'on utilise un DNS, la première chose à faire est de configurer la bibliothèque de résolution sur votre ordinateur. Le convertisseur local doit être configuré si vous avez l'intention de convertir des noms DNS, même si vous n'avez pas l'intention d'avoir un serveur de nom en local.

/etc/host.conf
Les bibliothèques de résolution locales sont configurées à l'aide du fichier /etc/host.conf se trouvant dans le répertoire /etc. Le fichier signale au convertisseur quels services sont disponibles et dans quel ordre il doit les appliquer.
Voici un exemple de fichier /etc/host.conf

order   hosts,bind
multi   on

Les options de configuration du fichier host.conf :

Options Description
order Spécifie l'ordre dans lequel les différents mécanismes de résolution de noms sont appliqués. Les services de résolutions spécifiés sont appliqués dans l'ordre donnés.
hosts Essaie de convertir le nom en cherchant dans le fichier /etc/host local.
bind Lance une requête à un serveur DNS pour convertir le nom.
nis Utilise le protocole NIS (Network Information Service) pour convertir le nom d'hôte.
alert A utiliser avec on ou off comme argument. Si elle est activée, chaque tentative de "spoofing" est enregistrée à l'aide de syslog.
nospoof Si une adresse spécifiée est associée à un nom d'hôte à l'aide d'une résolution inverse, le nom renvoyé est converti afin de vérifier qu'il correspond à l'adresse demandée. Cette procédure évite le "spoofing" (incohérence) d'adresse IP. Cette opton est activée n spécifiant nospoof on. Attention le fait d'activer cette option peut entrainer une surcharge du système.
trim Avec un nom de domaine comme argument, trim enlève le nom de domaine avant de chercher dans /etc/hosts. Ainsi vous pouvez saisir uniquement le nom d'hôte de base qui se trouve dans /etc/hosts sans avoir à spécifier le nom de domaine.
multi A utiliser avec on ou off comme argument. Utilisé uniquement avec les requêtes hosts afin de déterminer si un hôte peut avoir plusieurs adresses IP spécifiées dans /etc/hosts. Cette option n'a aucun effet sur les requêtes NIS ou DNS.

/etc/resolv.conf
Après avoir configuré la bibliothèque de convertisseur il faut maintenant configurer des informations pour la partie DNS du convertisseur. Cela n'est valable que si vous utilisez le DNS pour convertir des noms, c'est à dire en spécifiant bind dans la ligne order du fichier /etc/host.conf.
Voici un exemple de fichier /etc/resolv.conf :

search chezoim.fr
nameserver 127.0.0.1

Les options de configuration du fichier resolv.conf :

Options Description
domain Indique le nom de domaine local de cet hôte. S'il n'est pas fourni, le convertisseur essaie de l'obtenir à l'aide de l'appel système getdomainename().
nameserver Spécifie l'adresse IP d'un serveur DNS à contacter afin de convertir un nom. Un maximum de trois serveur peut être saisi en utilisant l'option nameserver plusieurs fois. Les serveurs sont interrogés dans l'ordre précisé. Il vaut mieux placer le serveur le plus fiable en premier afin d'éviter une perte de temps dans une recherche sur un serveur qui risque de se planter.
search Liste de domaines à essayer si aucun domaine n'est spécifié dans la requête d'un nom d'hôte. Si aucune option de recherche n'est précisée, la liste de domaines est créée à partir du domaine local, plus chaque domaine père du domaine local.

/etc/nsswitch.conf
Ce fichier indique dans quel ordre le système doit chercher un nom d'hôte.
Voici un exemple de fichier /etc/nsswitch.conf :

hosts: files dns

5 - La base de données et l'enregistrement des ressources

Après avoir configuré les constantes (je parle de constantes car on ne change pas tous les jours de nom de domaine) nous allons nous pencher sur les différentes variables que requière la configuration d'un DNS.
Dans un premier temps il vous faudra créer le fichier /etc/named.conf, c'est un peut lui le fichier qui supervise le DNS avec le fichier /var/named/chezoim.fr. Le fichiers /etc/named.conf contient les zones (et oui nous y voila dans ces fameuses zones...) de votre domaine, les zones sont en fait des plages d'adresses que votre DNS va se contenter de gérer. Dans notre exemple nous avons pris des adresses de classe A (10.x.x.x) : 10.0.0.1, 10.0.0.2 et 10.0.0.3.
Voici un exemple de fichier /etc/named.conf :

options { 
	#répertoire à créer 
	directory "/var/named"; }; 
	#Attention la zone . est creee automatiquement, 
	#n'oubliez pas de la supprimer pour installer Named 
	zone "." { type hint; file "root.cache";
	}; 

zone "chezoim.fr"{ 
	type master; file "chezoim.fr"; 
	notify no; 
	}; 
	
zone "0.0.127.in-addr.arpa"{ 
	type master; 
	file "db.127.0.0"; 
	}; 
	
zone "0.0.10.in-addr.arpa"{ 
	type master; 
	file "10.0.0"; 
	notify no; 
	};

Dans la section Options on définit le répertoire qui contiendra vos fichiers de configuration. Puis les zones : Chezoim.fr pour les définitions du domaine chezoim.fr, 0.0.127 et 0.0.10 servent à la recherche inversée des noms permettant de trouver le nom du serveur lorsque l'on connait son adresse IP.

Voici les trois fichiers définis dans le /etc/named.conf :

#####################
#/var/named/chezoim.fr
######################

@    IN     SOA     king.chezoim.fr. (
                    2000050601 ; serial
                    10800 ; refresh
                    3600 ; retry
                    604800 ; expire
                    86400 ; default_ttl
                    )
localhost   IN    A     127.0.0.1
king        IN    A     10.0.0.1
secretariat IN    A     10.0.0.2
custom      IN    A     10.0.0.3

king        IN    HINFO "Pentium 133 MHz" "Mandrake 7.0"
secretariat IN    HINFO "Pentium II 233 MHz" "MS Windows NT"
custom      IN    HINFO "AMD K6 II 350 MHz" "Debian 2.1"
www         IN    CNAME custom
@           IN    NS    king
@           IN    NS    secretariat
@           IN    NS    custom



#####################
#/var/named/10.0.0
#####################
@   IN  SOA    king.chezmoi.fr. (
                    2000042400 ; serial
                    10800 ; refresh
                    3600 ; retry
                    604800 ; expire
                    86400 ; default_ttl
                    )
@   IN  NS     king.chezoim.fr.
@   IN  PTR    tux.chezoim.fr.



###################
#/var/named/127.0.0
###################
@   IN      SOA     king.chezoim.fr. 1 (
                    8 ; serial
                    7200 ; refresh
                    604800 ; retry
                    86400 ; expire
                    0 ; default_ttl
                    )
@   IN      NS      king.chezoim.fr.
@   IN      PTR     king.chezoim.fr.

6 - Les préparatifs à la vérification du fonctionement du DNS

Avant de démarer votre serveur il est préférable de redémarer votre machine afin que les modifications du domaine se fasse sur votre config réseau.
Après cela vous devez démarer le serveur DNS :

$ /etc/rc.d/init.d/named start

et afin de vérifier d'éventuelle erreur de syntaxe vous pouvez vérifier les logs par la commande suivante :

$ tail -f /var/log/messages

Si tout se passe bien vous pouvez essayer de faire un Ping depuis votre serveur DNS sur lui même en lui donant son nom suivit du nom du domaine :

$ ping king.chezoim.fr

7 Vérification depuis le serveur HTTP

Vous avez rendez vous dans le panneau de configuration, section réseau, protocole TCP/IP de votre carte réseau, configuration DNS. Cochez la case "activer DNS". Entrez les valeurs suivantes :

nom d'hôte : custom 
domaine : chezoim.fr 
ordre de recherche DNS : 10.0.0.1
Site hébergé officiellement chez Linux France - © 1999 2005