Maniatux's Blog

Welcome to the internet

Configuration d'un serveur DNS

Rédigé par Xavier - -

Note : Les versions récentes de Debian et Ubuntu ont divisé en plusieurs fichiers la configuration de Bind. Consultez leurs documents ou wiki respectifs.

Un serveur DNS permet d'associer un nom de domaine, à caractères alphabétiques (par exemple google.fr), à une adresse IP. Il fonctionne également dans l'autre sens. C'est grâce à ça que nous n'avons pas à mémoriser les adresses IP des sites que nous visitons.

serveur dns

Voici un tutoriel pour configurer bind9, un serveur DNS, sous debian / ubuntu.

Logiciels

  • Bind9
  • Debian ou Ubuntu GNU/Linux

Requis

  • Avoir un réseau fonctionnel
  • Avoir des bases en TCP/IP (masques, réseaux...)
  • Connaitre le fonctionnement d'un DNS

Schema du réseau

Voici le réseau sur lequel nous allons travailler:

Schema reseau DNS
Masque de sous-réseau: 255.255.255.0, et adresse du réseau: 192.168.0.0

Configuration de Bind9

Le fichier de configuration est situé dans /etc/bind/named.conf, pour l'éditer vous pouvez utiliser nano:

# nano /etc/bind/named.conf

Comme vous pourrez le constater, c'est assez pointu et il est recommandé de bien maitriser le fonctionnement (théorique) d'un serveur DNS.

Pour commencer nous devons définir une nouvelle zone. Elle pointera vers notre réseau. Nous devons la nommer, par exemple "mynetwork.lan".

# nano /etc/bind/named.conf

Et ajoutez ceci:

zone "mynetwork.lan" {
        type master;
        file "/etc/bind/db.mynetwork.lan";
};

Comme vous l'avez deviné, nous allons devoir créer un fichier "db.mynetwork.lan" par la suite. Comme le DNS fonctionne aussi "à l'envers" (une IP désigne un nom de domaine) nous devons aussi ajouter:

zone "0.168.192" {
        type master;
        file "/etc/bind/db.192.168.0";
};

Attention cette fois vous devez indiquer l'adresse du sous-réseau en l'inversant! Vous pouvez connaitre cette adresse à partir du masque de sous-réseau. Dans notre exemple c'est 192.168.0.0 mais le dernier terme est l'adresse machine. Là encore il faudra créer un fichier "db.192.168.0" dans lequel nous mettrons nos paramètres.

# touch /etc/bind/db.mynetwork.lan
# touch /etc/bind/db.192.168.0

Dans le premier fichier, vous devez ajouter ceci:

$TTL 3h
@ IN SOA ns.mynetwork.lan. hostmaster.mynetwork.lan. ( 2010022320 8H 2H 1W 1D )

Pour savoir à quoi correspondent les paramètres, voici des pages plus descriptives: ici et ici. Voici un petit résumé:

  • TTL: Temps de mémorisation des erreurs
  • @: zone décrite par le fichier de configuration
  • IN: indique que l'on se situe dans la zone internet
  • SOA: indique que le serveur est la meilleure source d'informations
  • ns.mynetwork.lan. (n'oubliez pas le point qui va après): le serveur
  • hostmaster.mynetwork.lan. (idem): adresse mail du responsable (hostmaster@mynetwork.lan.)
  • 20100223230: numéro de version, ici j'ai mis la date
  • 8H (8 heures): Temps de rafraichissement
  • 2H (2 heures): Temps entre deux essais
  • 1W (1 week): Temps d'expiration
  • 1D (1 day): TTL réponse négative

Dans le même fichier, ajoutez ceci:

@       IN      NS      ns.mynetwork.lan.

ns A 192.168.0.1 machine2 A 192.168.0.2 machine3 A 192.168.0.3 machine4 A 192.168.0.4

La première colone est le préfixe du nom de domaine qui sera attribué. par exemple "ns" donnera "ns.mynetwork.lan". Le type "A" signifie que c'est un nom translaté en IP.

Ouvrez ensuite le second fichier et ajoutez ceci:

$TTL 3h
@       IN      SOA     ns.mynetwork.lan. hostmaster.mynetwork.lan. (
                                2010022320
                                8H
                                2H
                                1W
                                1D )

@       IN      NS      ns.mynetwork.lan.

1       IN      PTR     ns.mynetwork.lan.
2       IN      PTR     machine2.mynetwork.lan.
3       IN      PTR     machine3.mynetwork.lan.
4       IN      PTR     machine4.mynetwork.lan.

Vous l'aurez remarqué, c'est très similaire mais à l'envers. Attention n'oubliez pas les points. Et cette fois au lieu de "A" on met "PTR" qui désigne une translation d'adresse vers un nom.

Relancez ensuite bind9:

Récapitulatif: Nous avons donc défini:

  • Un serveur 192.168.0.1 qui sera joignable via le nom "ns.mynetwork.lan"
  • Un client 192.168.0.2 qui sera joignable via "machine2.mynetwork.lan"
  • Un client 192.168.0.3 qui sera joignable via "machine3.mynetwork.lan"
  • Un client 192.168.0.4 qui sera joignable via "machine4.mynetwork.lan"
# /etc/init.d/bind9 restart

Tests

Rendez-vous sur l'une des machines clients du réseau, et vérifiez que votre nouveau serveur DNS est bien celui défini dans le fichier /etc/resolv.conf (avec cat ou nano). Dans le cas présent vous devez y trouver une ligne:

nameserver 192.168.0.1

Vous pouvez faire des essais avec la commande "nslookup".

# nslookup
> ns.mynetwork.lan

Cette commande demande à quelle adresse IP correspond le domaine "ns.mynetwork.lan". Si on remonte dans nos fichiers db, on voit que c'est 192.168.0.1, soit l'IP du serveur. Cette commande doit donc retourner:

Serveur:          192.168.0.1
Address:          192.168.0.1#53
Name:       ns.mynetwork.lan
Address:    192.168.0.1

Comme indiqué sur la dernière ligne, l'adresse IP correspondant à ns.mynetwork.lan est bien 192.168.0.1 :) D'ailleurs vous pouvez également le vérifier en lançant un ping vers ns.mynetwork.lan, c'est bien 192.168.0.1 qui répond. Vous pouvez retenter l'opération en remplaçant "ns.mynetwork.lan" par "machine2.mynetwork.lan" et cette fois c'est 192.168.0.2 qui répond!

Classé dans : Sysadmin - Mots clés : aucun