Serveur virtuel : Le serveur DNS, installation et configuration
La configuration principale de BIND se fait dans le fichier /etc/bind/named.conf.
Dans ce fichier, on définit un certain nombre de zones. Une zone correspond soit à une plage IP d’un réseau ou à un nom de domaine. Les deux zones qui nous intéressent ici sont 10.0.2.* et knowledgeplaza.lan.
On définit deux zones pour avoir la résolution de nom dans les deux sens. C’est-à-dire que l’on peut obtenir une adresse IP à partir d’un nom d’hôte mais également, que l’on peut obtenir un nom d’hôte à partir d’une adresse IP.
Une zone avec un nom de domaine se définit comme ceci :
zone "knowledgeplaza.lan" { type master; file "/etc/bind/db.knowledgeplaza.lan"; }; /// On indique tout d'abord le nom de la zone que l'on connaît avec le mot clé zone suivi du nom de domaine (dans notre cas, "knowledgeplaza.lan". On indique que c'est le DNS maître (en effet, on peut avoir un ou des DNS de backups qui sont aussi appelés des DNS secondaires) en indiquant type master. Et enfin, on indique dans quel fichier se trouve les informations de résolution concernant cette zone. En général, on place ces fichiers dans /etc/bind/ et on préfixe le nom de la zone par db.. Nous définissons également la zone de plage IP pour la résolution inverse. Pour se faire, nous utilisons les mêmes paramètres. Cependant, le nom de la zone s'écrit avec la plage réseau inversée suivi de .in-addr.arpa. L'entrée de zone pour notre réseau 10.0.2.* s'écrit comme ceci :
zone “2.0.10.in-addr.arpa” {
type master; file "/etc/bind/db.10.0.2";
}; ///
Nous en avons fini avec le fichier de configuration général. Voyons maintenant comment définir les noms des machines présentes dans une zone.
Les fichiers zones
Comme vous vous en doutez, nous avons un fichier par zone. Les fichiers zones contiennent toutes les entrées comme une table de traduction pour les noms des machines d’une même zone.
Un fichier zone commence toujours par un champ SOA, ce champ SOA se compose comme suit (ici le fichier /etc/bind/db.knowledgeplaza.lan) :
$TTL 604800 @ IN SOA ns.knowledgeplaza.lan. hostmaster.knowledgeplaza.lan. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.knowledgeplaza.lan. @ IN MX 10 ns.knowledgeplaza.lan. @ IN A 127.0.0.1 kp IN A 10.0.2.15 kp-sandbox IN CNAME kp.knowledgeplaza.lan. proxy IN CNAME kp.knowledgeplaza.lan. mail IN CNAME kp.knowledgeplaza.lan.
Le premier symbole @ désigne la zone décrite par le fichier de configuration (ici, knowledgeplaza.lan). A la place de @, vous auriez très bien pu indiquez knowledgeplaza.lan. (n’oubliez pas le “.” à la fin !!!).
Ensuite, on indique IN qui signifie que l’on a affaire à une zone Internet; c’est pour ainsi dire toujours le cas (sauf quelques très rares exceptions). Enfin, toujours sur la première ligne, on indique le serveur DNS qui dispose du fichier zone de référence (important lorsque que l’on a des DNS secondaires) et l’adresse email de la personne responsable de la zone (le premier “.” dans le champ d’email est considéré comme un “@”).
Dans notre cas, le serveur DNS primaire de la zone est ns.knowledgeplaza.lan et l’adresse email de la personne responsable est hostmaster@knowledgeplaza.lan.
Remarque : Vous avez sans doute noté que le serveur DNS et l’adresse email sont ponctuées par un point (“.”). Ce point est indispensable. Si vous l’omettez, par défaut, BIND rajoute le nom de la zone et dès lors ns.knowledgeplaza.lan. renvoie ns.knowledgeplaza.lan alors que ns.knowledgeplaza.lan (sans point) renvoie ns.knowledgeplaza.lan.knowledgeplaza.lan. Il s’agit d’une erreur très fréquente. En utilisant les valeurs que j’ai stipulées ci-dessus, tout devrait fonctionner. Pour plus d’informations, je vous renvoie à Google.
Après le champ SOA, on indique le serveur de nom à consulter pour résoudre un nom d’hôte dans le domaine knowledgeplaza.lan. Nous faisons ça avec un champ NS de la manière suivante :
@ IN NS ns.knowledgeplaza.lan.
Ensuite comme nous allons configurer un serveur de mail à la même adresse, vous pouvez indiquer au serveur DNS que les adresses de la forme *@knowledgeplaza.lan sont gérées par un serveur de mail prédéfini; nous le faisons comme ceci :
@ IN MX 10 ns.knowledgeplaza.lan.
Remarque : La valeur 10 indique la priorité du serveur concerné. En indiquant plusieurs champs MX avec des valeurs différentes, vous pouvez indiquer des serveurs de mail secondaires.
La ligne suivante indique que toutes les requêtes sur un autre domaine que ceux sous-cités mènera au serveur local.
@ IN A 127.0.0.1
Enfin, nous terminons ce fichier zone avec la table de traduction des hôtes en adresse IP :
kp IN A 10.0.2.15 kp-sandbox IN CNAME kp.knowledgeplaza.lan. proxy IN CNAME kp.knowledgeplaza.lan. mail IN CNAME kp.knowledgeplaza.lan.
Le champ CNAME est là parce que notre serveur qui n’a qu’une seule adresse peut avoir plusieurs noms différents. Ce sont donc des alias qui mènent tous vers la même adresse.
Avant de pouvoir utiliser notre serveur DNS, nous allons renseigner la zone pour la plage IP de notre réseau. La zone se décrit vaguement comme la précédente, à la différence près que l’on utilise le mot clé PTR au lieu de A dans la table de traduction.
Si la ligne $ORIGIN 2.0.10.in-addr.arpa. vous crée une erreur (voir le fichier log /var/log/daemon.log apres avoir redemarré bind9) vous pouvez la supprimer, cela fonctionne.
Voici le fichier zone pour notre réseau 10.0.2.* d’exemple :
$TTL 3h @ IN SOA ns.knowledgeplaza.lan. hostmaster.knowledgeplaza.lan. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.knowledgeplaza.lan. @ IN MX 10 ns.knowledgeplaza.lan. $ORIGIN 2.0.10.in-addr.arpa. 15 IN PTR kp.knowledgeplaza.lan.
Voilà, notre serveur DNS est configuré. Il nous reste plus qu’à l’activer, pour ça commencez par relancer le démon de bind :
[bash] sudo /etc/init.d/bind9 reload
Puis configurons le pour qu’il soit utilisé. Dans le fichier /etc/resolv.conf, ajouter à la première ligne l’adresse IP de la machine virtuelle (typiquement 10.0.2.15) ça donne donc :
nameserver 10.0.2.15
Il ne reste plus qu’à vérifier que ça marche :
[bash] links http://kp.knowledgeplaza.lan
Oui bien avec un outil plus approprié, nslookup (il vous faudra peut-être installer le paquet dnsutils)
[bash] nslookup kp.knowledgeplaza.lan
Ca devrait vous renvoyer l’adresse IP de votre machine virtuelle.