Outils pour utilisateurs

Outils du site


admin:bind

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

admin:bind [2011/02/02 23:42] (Version actuelle)
Ligne 1: Ligne 1:
 +Documentation provenant de Ubuntu-fr.org.
  
 +===== Configuration de BIND =====
 +
 +Considérons les aspects suivants :
 +  * Le réseau local est ''​192.168.251.*''​ et se nomme ''​bureau.lan''​.
 +  * La machine serveur DNS est aussi le serveur de mail et porte l'IP ''​192.168.251.202'';​ elle se nomme ''​mail2''​.
 +  * Il y a 3 autres machines sur le réseau : ''​192.168.251.200''​ (nommée ''​twin1''​),​ ''​192.168.251.201''​ (nommée ''​twin2''​) et ''​192.168.251.205''​ (nommée ''​portable''​).
 +
 +//Remarque :// L'​utilisation du TLD (//Top Level Domain//) fictif ''​.lan''​ est voulue. En effet, n'​utilisez pas un TLD existant comme ''​.com''​ ou ''​.be''​ sans en être le propriétaire.
 +
 +Voyons comment configurer le serveur BIND avec ce petit réseau.
 +
 +==== Configuration de base du serveur ====
 +
 +=== Le fichier de configuration générale ===
 +
 +La configuration principale de BIND se fait dans le fichier ''/​etc/​bind/​named.conf''​.
 +
 +Dans ce fichier, on définit un certain nombre de //zone//. 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 ''​192.168.251.*''​ et ''​bureau.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 :
 +
 +
 +<​code>​
 +zone "​bureau.lan"​ {
 +        type master;
 +        file "/​etc/​bind/​db.bureau.lan";​
 +};
 +</​code>​
 +
 +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, ''"​bureau.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 ''​192.168.251.*''​ s'​écrit comme ceci :
 +
 +<​code>​
 +zone "​251.168.192.in-addr.arpa"​ {
 +        type master;
 +        file "/​etc/​bind/​db.192.168.251";​
 +};
 +</​code>​
 +
 +Nous en avons fini avec le fichier de configuration générale. 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 :
 +
 +<​code>​
 +$TTL 3h
 +@       ​IN ​     SOA     ​ns.bureau.lan. hostmaster.bureau.lan. (
 +                                2005090201
 +                                8H
 +                                2H
 +                                1W
 +                                1D )
 +</​code>​
 +
 +Le symbole ''​@''​ désigne la zone décrite par le fichier de configuration (ici, ''​bureau.lan''​). A la place de ''​@'',​ vous auriez très bien pu indiquez ''​bureau.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.bureau.lan''​ et l'​adresse email de la personne responsable est ''​[email protected]''​.
 +
 +//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.bureau.lan.''​ renvoie ''​ns.bureau.lan''​ alors que ''​ns.bureau.lan''​ (sans point) renvoie ''​ns.bureau.lan.bureau.lan''​. Il s'agit d'une erreur très fréquente.
 +
 +Les valeurs qui suivent sont respectivement :
 +   * le numéro de série (souvent on met la date courante suivie d'un numéro d'​ordre);​ ''​AAAAMMJJxx''​.
 +   * le temps de rafraichissement (''​refresh'';​ ici, 8 heures); la valeur recommandée est de 24 heures.
 +   * le temps entre deux essais (''​retry'';​ ici, 2 heures); la valeur recommandée est de 2 heures.
 +   * le temps d'​expiration (''​expire'';​ ici, 1 semaine); la valeur recommandée est de 1000 heures.
 +   * la valeur TTL minimum (''​minimum'';​ ici, 1 jour); la valeur recommandée est de 2 jours.
 +
 +En utilisant les valeurs que j'ai stipulées ci-dessus, tout devrait fonctionner. Pour plus d'​informations,​ je vous renvoie à [[http://​www.google.fr|Google]].
 +
 +Après le champ SOA, on indique le serveur de nom à consulter pour résoudre un nom d'​hôte dans le domaine ''​bureau.lan''​. Nous faisons ça avec un champ ''​NS''​ de la manière suivante :
 +
 +<​code>​
 +@       ​IN ​     NS      ns.bureau.lan.
 +</​code>​
 +
 +Ensuite (ceci est facultatif),​ si vous avez un serveur de mail, vous pouvez indiquer au serveur DNS que les adresses de la forme ''​*@bureau.lan''​ sont gérées par un serveur de mail prédéfini;​ nous le faisons comme ceci :
 +
 +<​code>​
 +@       ​IN ​     MX      10      mail2.bureau.lan.
 +</​code>​
 +
 +//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.
 +
 +Enfin, nous terminons ce fichier zone avec //la table de traduction//​ des hôtes en adresse IP :
 +
 +<​code>​
 +ns              IN      A       ​192.168.251.202
 +mail2           ​IN ​     A       ​192.168.251.202
 +twin1           ​IN ​     A       ​192.168.251.200
 +twin2           ​IN ​     A       ​192.168.251.201
 +portable ​       IN      A       ​192.168.251.205
 +</​code>​
 +
 +Le fichier zone complet pour ''​bureau.lan''​ ressemble à ceci :
 +
 +<​code>​
 +$TTL 3h
 +@       ​IN ​     SOA     ​ns.bureau.lan. hostmaster.bureau.lan. (
 +                                2005090201
 +                                8H
 +                                2H
 +                                1W
 +                                1D )
 +
 +@       ​IN ​     NS      ns.bureau.lan.
 +
 +@       ​IN ​     MX      10      mail2.bureau.lan.
 +
 +ns              IN      A       ​192.168.251.202
 +mail2           ​IN ​     A       ​192.168.251.202
 +twin1           ​IN ​     A       ​192.168.251.200
 +twin2           ​IN ​     A       ​192.168.251.201
 +portable ​       IN      A       ​192.168.251.205
 +</​code>​
 +
 +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.
 +
 +Voici le fichier zone pour notre réseau 192.168.251.* d'​exemple :
 +
 +<​code>​
 +$TTL 3h
 +@       ​IN ​     SOA     ​ns.bureau.lan. hostmaster.bureau.lan. (
 +                                2005090201
 +                                8H
 +                                2H
 +                                1W
 +                                1D )
 +
 +@       ​IN ​     NS      ns.bureau.lan.
 +
 +@       ​IN ​     MX      10      mail2.bureau.lan.
 +
 +202             ​IN ​     PTR     ​ns.bureau.lan.
 +202             ​IN ​     PTR     ​mail2.bureau.lan.
 +200             ​IN ​     PTR     ​twin1.bureau.lan.
 +201             ​IN ​     PTR     ​twin2.bureau.lan.
 +205             ​IN ​     PTR     ​portable.bureau.lan.
 +</​code>​
 +
 +Nous pouvons maintenant demander à notre serveur de prendre en compte nos modifications via la commande suivante :
 +
 +<​code>​
 +sudo /​etc/​init.d/​bind9 reload
 +</​code>​
 +
 +Nous pouvons maintenant passer à la phase de vérification.
 +
 +==== Vérification de la configuration ====
 +
 +Pour vérifier la configuration de notre serveur DNS, nous allons lui adresser des requêtes directement via l'​utilitaire ''​nslookup'',​ pour l'​utiliser,​ il suffit de taper ''​nslookup''​ dans un terminal.
 +
 +On doit lui indiquer le serveur DNS à vérifier via le mot clé ''​server 127.0.0.1''​ et ensuite, on lui donne un nom d'​hôte et il doit nous répondre l'​adresse IP. 
 +
 +Voici la petite session de test que j'ai fait chez moi :
 +
 +<​code>​
 +[email protected]:/​$ nslookup
 +> server 127.0.0.1
 +Default server: 127.0.0.1
 +Address: 127.0.0.1#​53
 +> mail2.bureau.lan
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +Name:   ​mail2.bureau.lan
 +Address: 192.168.251.202
 +> 192.168.251.201
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +
 +201.251.168.192.in-addr.arpa ​   name = twin2.bureau.lan.
 +> set q=mx
 +> bureau.lan
 +Server: ​        ​127.0.0.1
 +Address: ​       127.0.0.1#​53
 +bureau.lan ​   mail exchanger = 10 mail2.bureau.lan.
 +> exit
 +</​code>​
 +
 +Si tout se déroule normalement,​ vous pouvez configurer vos clients et utiliser votre serveur DNS.
 +
 +==== Configuration avancée ====
 +
 +=== Configuration d'un serveur DNS secondaire ===
 +
 +Dans cette section, nous allons envisager la configuration d'un serveur DNS secondaire qui se synchronise avec le serveur DNS principal que nous avons défini ci-dessus.
 +
 +== Le serveur DNS secondaire proprement dit ==
 +
 +Pour configurer le serveur secondaire, nous devons simplement indiquer à BIND les zones qu'il doit traiter en mode esclave. Sur base de la configuration ci-dessus, nous configurons le fichier ''/​etc/​bind/​named.conf''​ de serveur DNS secondaire de la manière suivante :
 +
 +<​code>​
 +zone "​bureau.lan"​ {
 +        type slave;
 +        masters {192.168.251.202;​} ;
 +        file "/​etc/​bind/​db.bureau.lan";​
 +};
 +
 +zone "​251.168.192.in-addr.arpa"​ {
 +        type slave;
 +        masters {192.168.251.202;​} ;
 +        file "/​etc/​bind/​db.192.168.251";​
 +};
 +</​code>​
 +
 +En faisant cela, il est inutile d'​indiquer les fichiers zones (fichier ''​db.''​) sur le serveur DNS secondaire. Les fichiers proviendront d'une synchronisation avec le DNS primaire. ​
 +
 +//Remarque :// L'​utilisateur faisant fonctionner le serveur DNS doit avoir les droits d'​écriture sur les fichiers zones renseignés dans la configuration ci-dessus.
 +
 +== Modification de la configuration du serveur DNS primaire ==
 +
 +Nous devons renseigner dans les fichiers zones le deuxième serveur DNS, et pour se faire, on ajoute la ligne suivante au fichier ''/​etc/​bind/​db.bureau.lan''​ :
 +
 +<​code>​
 +@       ​IN ​     NS      ns2.bureau.lan.
 +</​code>​
 +
 +et nous devons également renseigner l'​adresse IP de ''​ns2.bureau.lan''​ (n'​oubliez pas de mettre à jour le fichier de zone pour le sous-réseau IP également avec le mot clé ''​PTR''​ !) :
 +
 +<​code>​
 +ns2             ​IN ​     A       ​192.168.251.250
 +</​code>​
 +
 +<​code>​
 +250             ​IN ​     PTR     ​ns2.bureau.lan.
 +</​code>​
 +
 +Après avoir modifié les zones et de ce fait, dévoilé ''​ns2'',​ nous pouvons maintenant indiquer au serveur DNS maître que le serveur DNS secondaire peut accéder aux données de zones.
 +
 +Pour ce faire, les informations concernant les zones qui nous intéressent (dans le fichier ''/​etc/​bind/​named.conf''​ du serveur maître) deviennent ceci :
 +
 +<​code>​
 +zone "​bureau.lan"​ {
 +        type master;
 +        notify yes;
 +        allow-transfer {192.168.251.250;​} ;
 +        file "/​etc/​bind/​db.bureau.lan";​
 +};
 +
 +zone "​251.168.192.in-addr.arpa"​ {
 +        type master;
 +        notify yes;
 +        allow-transfer {192.168.251.250;​} ;
 +        file "/​etc/​bind/​db.192.168.251";​
 +};
 +</​code>​
 +
 +Après toutes ces modifications,​ demandez au service BIND de recharger la configuration : 
 +<​code>​
 +sudo /​etc/​init.d/​bind9 reload
 +</​code>​
 +
 +Et surtout, n'​hésitez pas à re-tester votre configuration (sur les deux serveurs).
admin/bind.txt · Dernière modification: 2011/02/02 23:42 (modification externe)