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
|