HOWTO Debian DNS
Cet HOWTO a pour but de documenter une installation d'un serveur DNS sous Debian en utilisant Bind9.
Information de base
Les ordinateurs connectés à un réseau IP, comme Internet, possèdent une adresse IP.
Ces adresses sont numériques afin d'être plus facilement traitées par une machine. En IPv4, elles sont représentées sous la forme xxx.xxx.xxx.xxx, où xxx est un nombre variant entre 0 et 255 (en système décimal). En IPv6, les IP sont de la forme xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx, où x représente un caractère au format hexadécimal.
Pour faciliter l'accès aux systèmes qui disposent de ces adresses, un mécanisme a été mis en place pour permettre d'associer un nom à une adresse IP, plus simple à retenir, appelé nom de domaine. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.
Les noms de domaines peuvent être également associés à d'autres informations que des adresses IP.
La résolution de nom sous Debian
La résolution de nom sous Debian (et Linux en général) se fait à partir de deux fichiers. D'abord le fichier hosts (/etc/hosts) qui est le premier lu par la machine pour faire le résolution de nom. Ce fichier fait la résolution de nom <=> adresse IP en local :
root@debiantp:/home/djib# cat /etc/hosts 127.0.0.1 debiantp localhost.localdomain localhost #127.0.1.1 debiantp.WORKGROUP debiantp #192.168.4.225 djibdns.exemple4.com djibdns # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
La première ligne fait la résolution du nom de machine sur l'adresse de bouclage localhost ou 127.0.0.1. Elle est obligatoire pour que le système soit opérationnel même si le réseau est désactivé.
Les deux lignes suivantes commentées permettent de faire des résolutions de nom pour des adresses IP. En les dé-commentant on permet à la machine d'accéder à d'autres hôtes sans utiliser les adresses IP, mais en utilisant les noms rentrés dans le fichier hosts (/etc/hosts).
Le deuxième est le fichier resolv.conf (/etc/resolv.conf) dans lequel on retrouve plusieurs informations :
root@debiantp:/home/djib# cat /etc/resolv.conf search exemple4.com troll.fr nameserver 192.168.4.225 nameserver 172.16.104.97
La première ligne énonce les domaines à ajouter au nom de l'hôte auquel on cherche à accéder.
La deuxième et troisième ligne renseigne les adresses IP des serveurs DNS pour chacun des domaines qui recevront les requêtes pour la résolution des noms d'hôtes. Le premier serveur sera contacté pour la résolution des noms, puis le deuxième serveur.
Si on utilise la commande PING sur l'hôte djibdns.exemple4.com, le nom de domaine étant fourni, la résolution de l'hôte ne nécessite pas l'ajout du domaine au nom d'hôte :
root@debiantp:/home/djib# ping djibdns.exemple4.com PING djibdns.exemple4.com (192.168.4.225) 56(84) bytes of data. 64 bytes from debiantp.local (192.168.4.225): icmp_req=1 ttl=64 time=0.075 ms
Si on utilise la commande ping sur l'hôte djibdns, le nom de domaine n'étant pas fourni, la résolution de l'hôte nécessite l'ajout du domaine au nom d'hôte :
root@debiantp:/home/djib# ping djibdns PING djibdns.exemple4.com (192.168.4.225) 56(84) bytes of data. 64 bytes from debiantp.local (192.168.4.225): icmp_req=1 ttl=64 time=0.049 ms
Pourquoi installer un serveur DNS ?
Renseigner le fichier hosts (/etc/hosts) est une belle perte de temps pour un réseau local. Pour la navigation web, l'ajout de l'ensemble des hôtes à chaque fois que l'on envoie une requête à un serveur serait impossible.
- On évite donc de mettre à jours manuellement tous les hôtes auquel on souhaite accéder
- On accélère sur un réseau local l'accès à des services présents sur des hôtes précis
- On accélère le navigation locale et distante grâce au cache DNS
Installer Bind9
Rien de bien difficile jusqu'ici :
#apt-get update #apt-get install bind9
Configurer un serveur DNS principal
Sur la dernière version de Bind9, les zones sont à ajouter dans named.conf.local (/etc/bind/named.conf.local).
GNU nano 2.2.4 Fichier : /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "exemple.com" {
type master;
file "/etc/bind/db.exemple.com";
};Ici, on aura donc :
exemple.com : qui est le domaine qui sera pris en charge par ce serveur DNS.
type master : c'est le niveau fonctionnel du serveur ; master pour un serveur DNS primaire.
file "/etc/bind/db.exemple.com"; : nous donne l'emplacement du fichier qui contiendra toutes les informations de correspondance entre les noms d'hôtes et les adresse IP.
Il faut maintenant créer le fichier qui contient les informations DNS à l'emplacement indiqué.
#nano /etc/bind/db.exemple.com
$TTL 604800
@ IN SOA djibdns.exemple.com. root.exemple.com. (
1 ; Serial -> N° de série à incrémenter à chaque modif
; de ce fichier. Ce N° est utilisé par les
; serveurs esclaves pour lui indiquer qu'il
; doit mettre à jour sa base. Par commodité
; ce n° est une date à l'envers.
604800 ;Refresh -> A l'expiration du délai Refresh exprimé en
; secondes, le serveur excalve va entrer en
; communication avec le maitre et si il ne
; le trouve pas, il fera une nouvelle
; tentative au bout du délai Retry et si au
; bout du délai Expire il considerera que le
; serveur n'est plus disponible.
86400 ; Retry
2419200 ; Expire
604800 ) ; Minimum -> Durée de vie minimum du cache en secondes
;** Les 2 lignes suivantes permettent au serveur de se retrouver lui même
@ NS djibdns.exemple4.com. ;Nom du serveur
djibdns A 192.168.4.225
;** Les lignes suivantes sont des alias entre des noms et des autres noms
djib CNAME djibdnsLa première partie de ce fichier définie les paramètres du serveur DNS.
Attention il faut absolument incrémenté votre Serial à chaque modification de votre fichier de configuration. Autrement même en redémarrant le service Bind, les changements ne seront pas pris en compte.
La deuxième partie permet au serveur DNS de se trouver lui même.
La troisième partie permet de renseigner des alias dans notre exemple (CNAME).
Il y a quatre paramètres différents pour renseigner les types d'enregistrement :
NS (Name Server) permet de renseigner les serveurs DNS qui ont autorité sur la zone.
MX (Mail Exchange) permet de renseigner pour une zone le serveur de mail ayant autorité sur la zone.
A (Address) permet de faire correspondre un nom d'hôte à une adresse IP
CNAME (Alias) permet de faire correspondre un nom à un nom d'hôte.
