Installation de Bind9
Nous allons utiliser Bind9 qui est la référence en matière de DNS.
L'installation sous debian se déroule simplement.
apt-get install bind9
L'installation va créer un dossier
/etc/bind/ et un utilisateur bind.
Dans
/etc/bind/ , on va retrouver les fichiers de configurations nécessaires au fonctionnement du serveur:
rndc.conf et rndc.key : déterminent les paramètres de sécurité nécessaires à l'administration du serveur DNS
named.conf : est le fichier principal qui va comporter tous les fichiers de zone. A l'installation le fichier named.conf est en partie rempli mais sera bien sur à compléter par la suite.
db.0 : fichier de zone inverse pour les broadcast .
db.127 : fichier de zone inverse pour l'interface locale
db.root : fichier de zone qui contient les serveurs DNS root du net.
Ces trois fichiers n'ont pas besoin d'être modifiés.
Configuration d'un serveur DNS pour un réseau local
Le fonctionnement du serveur DNS repose sur le fichier named.conf et les zone qui constituent le domaine. Dans ces zones il faut indiquer chaque correspondance entre les noms des machines et leurs adresses IP.
Les fichiers de zone inversée réalisent l'opération inverse : traduire l'adresse IP en nom de machine.
Toute la configuration est centralisée dans le fichier named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "XjikjJ87kS89ksç9==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
zone "." {
type hint;
file "/etc/bind/db.root";
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
zone "maison.lan."{
type master;
file "/etc/bind/maison.lan";
};
zone "10.168.192.in-addr.arpa" {
type master;
file "/etc/bind/maison.lan";
};
Dans ce fichier on retrouve le contenu des fichiers rndc.conf et rndc.key. Ils contiennent la clef qui permet de lancer le serveur.
On retrouve aussi les différentes zones qui constituent notre serveur , et leurs fichiers.
chaque zone possède un nom , un type (master ou slave) et l'emplacement du fichier qui la défini
Pour un réseau local , nous allons créer un domaine DNS : maison.lan
Ce nom est donné pour l'exemple , nous aurions pu bien sur lui donner un autre nom.
Pour l'exemple notre domaine domaine maison.lan fera partie du réseau 192.168.0.0/24
Zone maison.lan
Les machines le composant s'appelleront machine1.maison.lan , machine2.maison.lan.... machine1.maison.lan étant aussi le serveur DNS.
Nous allons créer un fichier de zone maison.lan
Ce fichier de zone permettra de définir les IP en fonction du nom de la machine :
$ttl 38400
maison.lan. IN SOA ns.maison.lan. hostmaster.maison.lan(
2004121706
10800
3600
604800
38400 )
NS ns.maison.lan.
$ORIGIN ns.maison.lan
machine1 A 192.168.0.1
ns.machine A 192.168.10.1
machine2 A 192.168.0.2
machine3 A 192.168.0.3
machine4 A 192.168.0.4
Details du fichier:
TTL (Time to live) correspond à la durée de validité des données. Plus cette valeur est courte , plus le serveur est sollicité, plus elle est grande , plus la mise à jour des données est grande.
IN signifie qu'il s'agit d'une zone internet (Valeur par défaut)
SOA désigne l'enregistrement de début de l'autorité (Start Of Authority), il est suivi du nom du serveur dns et l'adresse du responsable.
La première série de chiffre correspond au numéro de série du fichier. Par convention AAAAMMJJXX (A=année, M=mois, J=jour, X=numéro). A chaque modification de la zone, il faut penser à incrémenter ce chiffre.
La seconde série de chiffre correspond à l'intervalle de temps (en secondes) entre chaque vérification des serveurs esclaves.
La troisième série de chiffre correspond à l'intervalle entre chaque nouvelle tentative de vérification en cas de non réponse du serveur.
La quatrième série de chiffre correspond à la durée maximale pendant laquelle les esclaves répondront aux requêtes sans avoir pu contacter le serveur maître.
La dernière série de chiffre indique la durée de validité des données communiquées par le serveur pour toutes requêtes.
Ces valeurs indiquées dans l'exemple, sont des valeurs par défaut qui devraient fonctionner dans la majeure partie des cas.
Ensuite nous indiquons le nom du serveur DNS pour résoudre les noms de maison.lan grâce aux champs NS (name server)
$ORIGIN déclare un nom de domaine à ajouter pour reconstituer le nom pleinement qualifié.
Les champs A (Address) permettent d'indiquer à chaque machine son adresse IP. Il faut savoir que plusieurs champ A peuvent être attribués à une même adresse IP.
Vous pouvez aussi des champs CNAME qui sont des alias donnés à un nom de machine
www CNAME machine1
Les champs MX sont utilisés si vous avez un serveur mail.
ATTENTION : Comme vous l'avez remarqué tous les noms de domaine se terminent par un point ".".
L'oubli des points constitue la principale erreur de configuration.
Zone inverse 192.168.0
Jusque la nous avons créé une zone qui permet de convertir les noms en IP.
Il faut donc maintenant créer une zone qui permettra de résoudre les adresses IP en nom de domaine.
Exemple:
$TTL 38400
@ IN SOA ns.maison.lan. hostmaster.maison.lan. (
2004121604
10800
3600
604800
38400 )
NS ns.maison.lan.
1 PTR machine1.maison.lan.
2 PTR machine2.maison.lan.
3 PTR machine3.maison.lan.
4 PTR machine4.maison.lan.
Le fichier de zone inverse est constitué de la même façon que le fichier de zone précédemment commenté.
La différence se voit au niveau des champs utilisé : PTR (pointeur)
3 PTR machine3.maison.lan.
Ici la machine avec l'adresse IP 192.168.0.3 aura pour nom machine3.maison.lan.
Verification du bon fonctionnement du serveur
Avant de lancer le serveur , il faut modifier le fichier
/etc/resolv.conf sur toutes les machines clientes.
Il faut indiquer le nom du domaine et l'adresse IP du serveur DNS.
search maison.local
nameserver 192.168.0.1
Pour vérifier que notre serveur résout bien les noms du réseau , il faut utiliser l'utilitaire dig
Requête sur le champ A de machine1.maison.lan
dig @192.168.0.1 machine1.maison.lan A
Dig va retourner une série d'informations, celle qui nous intéresse est "ANSWER SECTION"
Si elle est absente ou erronée, c'est que vous vous êtes trompés quelques part (sûrement un point oublié à la fin des noms de domaines)
Requète inverse sur l'IP 192.168.0.3
dig @192.168.0.1 -x 192.168.0.3
La encore le résultat fourni par "ANSWER SECTION" nous intéresse.
Configuration d'un serveur DNS sur le net
Cette configuration est possible , si vous possédez une IP fixe ainsi qu'un nom de domaine.
Dans ce cas, il faut renseigner au registrar l'IP du serveur DNS.
Pour un réseau d'entreprise qui possède parfois plusieurs IP publiques , avoir son propre serveur DNS peut s'avérer tres utile. En effet puisque l'on gère de façon autonome son domaine, on peut définir les noms et alias pour chaque IP publique.
Il suffira de créer une zone de notre domaine.
La zone inverse étant gérée par le registrar , que vous pouvez bien souvent modifier via l'interface web d'administration sur le site du registrar
Pour l'exemple, notre domaine aura pour nom
mydomain.com
$ORIGIN .
$ttl 38400
mydomain.com. IN SOA mydomain.com. root.mydomain.com. (
2004110129
5400
3600
604800
38400 )
NS ns.mydomain.com.
NS ns.anotherdomain.com.
MX 10 mail.mydomain.com.
MX 20 mail.anotherdomain.com.
A 123.45.67.89
$ORIGIN mydomain.com.
mail A 123.45.67.89
www A 123.45.67.90
webmail CNAME mail
www CNAME www
ftp CNAME www
Comme on peut le remarquer le fichier de zone est à peu près similaire au fichier de zone vu précedement.
On remarque qu'il y a deux champs NS et MX. Il s'agit tout simplement des serveurs DNS (NS) et de courrier (MX) primaires et secondaires, toujours utile en entreprise.
Dans l'exemple , nous possédons deux adresses IP publiques 123.45.67.89 et 123.45.67.90. Un serveur mail sera hébergé sur mail.mydomain.com
(123.45.67.89) et un serveur web www.mydomain.com (123.45.67.90). On indique donc, le nom et l'adresse IP du serveur correspondant par un champ A.
On peut par la suite indiquer des alias grâce aux champs CNAME.