Fichiers de configuration BIND

Le démon named du serveur de noms BIND utilise le fichier /etc/named.conf pour la configuration. Tous les fichiers de zone sont stockés dans le dossier /var/named.

AvertissementAvertissement
 

N'éditez pas manuellement le fichier /etc/named.conf ou tout autre fichier dans le dossier /var/named si vous êtes en train d'utiliser l'outil BIND Configuration Tool. Tout changement manuel dans ce fichier ou dans tout fichier de ce dossier sera écrasé la prochaine fois que l'outil BIND Configuration Tool sera utilisé.

Le fichier /etc/named.conf ne doit pas comporter d'erreurs pour pouvoir démarrer named. Quelques options erronées dans certaines déclarations ne sont pas considérées comme assez critiques pour bloquer le serveur. Par contre une erreur dans les déclarations elles-mêmes empêchera named de démarrer.

/etc/named.conf

Le fichier /etc/named.conf est une suite de déclarations utilisant des options insérées placées entre accolades { }. Un fichier /etc/named.conf commun est organisé comme le montre la Figure 14-2.

<statement-1> ["<statement-1-name>"] [<statement-1-class>] {
   <option-1>;
   <option-2>;
   <option-N>;
};

<statement-2> ["<statement-2-name>"] [<statement-2-class>] {
   <option-1>;
   <option-2>;
   <option-N>;
};

<statement-N> ["<statement-N-name>"] [<statement-N-class>] {
   <option-1>;
   <option-2>;
   <option-N>;
};

Figure 14-2. Organisation commune de /etc/named.conf

Le "<statement-name>" n'est nécessaire qu'avec les déclarations acl, include, server, view et zone. Le <statement-N-class> ne peut être spécifié qu'avec la déclaration zone.

Des commentaires peuvent être placés dans /etc/named en caractères insérés de style C /* */ ou après les caractères // et #.

Les déclarations suivantes peuvent être utilisées dans /etc/named.conf:

Exemples de déclarations de zone

La plupart des changements apportés au fichier /etc/named.conf d'un serveur de noms maître ou esclave concerne l'ajout, la modification ou la suppression de déclarations de zone. Bien que ces déclarations de zone puissent contenir de nombreuses options, la plupart des noms de serveurs en utilise peu. Les déclarations de zone suivantes sont des exemples très basiques qui peuvent ê utilisés dans une relation de serveurs de noms maître/esclave.

Une déclaration de zone sur un serveur de noms primaire hôte du domaine domain.com peut ressembler à la Figure 14-5.

zone "domain.com" IN {
  type master;
  file "domain.com.zone";
  allow-update { none; };
};

Figure 14-5. Exemple d'une déclaration de zone maître simple

Cette déclaration de zone nomme la zone domain.com, définit le type comme maître, dit à named de lire le fichier /var/named/domain.com.zone pour configurer la zone et de ne permettre de mise à jour par aucun autre hôte.

La déclaration de zone pour domain.com devrait ressembler à Figure 14-6.

zone "domain.com" {
  type slave;
  file "domain.com.zone";
  masters { 192.168.0.1; };
};

Figure 14-6. Exemple de déclaration de zone esclave simple

Cette déclaration de zone dit à named sur le serveur esclave de chercher le serveur maître 192.168.0.1 pour y trouver les informations de configuration pour la zone appelée domain.com. Les informations que le serveur esclave reçoit du serveur maître sont enregistrées dans le fichier /var/named/domain.com.zone.

Zone Files

Les fichiers de zone qui contiennent des informations sur un espace de nom particulier sont stockés dans le dossier de fonctionnement de named, qui est par défaut /var/named. Chaque fichier de zone est nommé selon les données d'options de file dans la déclaration zone, généralement d'une manière qui se réfère au domaine en question et identifie le fichier comme contenant des données de zone, comme example.com.zone.

Chaque fichier de zone peut contenir des directives et enregistrements de ressources. Les directives disent au serveur de noms d'effectuer un certain acte ou d'appliquer une configuration spéciale à la zone. Les enregistrements de ressources définissent les paramètres de la zone, assignant une identité à des systèmes à l'intérieur de l'espace de nom de la zone. Les directives sont facultatives, mais les enregistrements de ressources sont requis pour fournir un service de noms à cette zone. Toutes les directives et enregistrements de ressources doivent se situer sur leur propre ligne.

Des commentaires peuvent être placés dans les fichiers de zone après les caractères point-virgules (;).

Directives de fichiers de zone

Les directives sont identifiées par le caractère de tête $ placé avant le nom de la directive et généralement en haut du fichier de zone.

Les directives suivantes sont les plus couramment utilisées:

  • $INCLUDE — Dit à named d'inclure un autre fichier de zone dans ce fichier de zone à l'endroit où la directive est utilisée. Cela permet de stocker des configurations de zone supplémentaires à l'écart du fichier de zone principal.

  • $ORIGIN — Détermine que le nom de domaine sera attaché à tout enregistrement non qualifié, comme ceux qui spécifient seulement l'hôte et rien de plus.

    Par exemple, un fichier de zone peut contenir la ligne suivante:

    $ORIGIN domain.com

    Tous les noms qui sont utilisés dans les enregistrements de ressources et ne finissent pas par un point (.) se verront ajouter ce nom de domaine. Autrement dit, lorsque l'enregistrement de zone est lu par le serveur de noms, la première ligne en-dessous sera interprétée en tant que seconde ligne:

    ftp               IN   CNAME   server1
    ftp.domain.com.   IN   CNAME   server1.domain.com.

    NoteNote
     

    L'utilisation de la directive $ORIGIN n'est pas nécessaire si l'on nomme la zone dans /etc/named.conf similairement à la valeur à assigner à $ORIGIN. Le nom de la zone est utilisé par défaut comme valeur de la directive $ORIGIN.

  • $TTL — Règle la valeur par défaut Time to Live (TTL) pour la zone. C'est le nombre, en secondes, donné aux serveurs de noms pour dire combien de temps les enregistrements de ressources de la zone resteront valides. Un enregistrement de ressources peut contenir sa propre valeur TTL, qui le cas échéant aura la priorité sur la présente directive.

    Lorsque vous décidez d'accroître cette valeur, les serveurs de noms distants mettent en cache ces informations de zone pendant plus longtemps. Cela réduit le nombre de requêtes effectuées au sujet de cette zone, mais rallonge aussi le temps nécessaire pour proliférer les changements des enregistrements de ressources.

Enregistrements de ressources de fichiers de zone

Les enregistrements de ressources de fichiers de zone contiennent des colonnes de données, séparées par le caractère Espace, qui définissent ces enregistrements. Tous les enregistrements de ressources de fichier de zone se voient assigner un type qui désigne le motif de l'enregistrement. Les types d'enregistrements de ressources les plus couramment utilisés sont les suivants :

  • A — Enregistrement d'adresse qui spécifie une adresse IP à assigner à un nom.

    <host>     IN     A     <IP-address>

    Figure 14-7. Exemple de configuration de l'enregistrement A

    Si la valeur <host> est omise, alors un enregistrement A désigne une adresse IP par défaut pour le haut de l'espace de nom. Ce système sera la cible de toutes les requêtes non-FQDN.

    Examinons les exemples d'enregistrement A suivants pour le fichier de zone domain.com:

                 IN     A       10.0.1.3
    server1      IN     A       10.0.1.5

    Figure 14-8. Exemples d'enregistrements A

    Les requêtes pour domain.com sont orientées vers 10.0.1.3, alors que les requêtes pour server1.domain.com sont orientées vers 10.0.1.5.

  • CNAME — Enregistrement de nom canonique qui dit au serveur de noms qu'un nom donné est aussi connu qu'un autre.

    <alias-name>     IN     CNAME       <real-name>

    Figure 14-9. Exemple de configuration de l'enregistrement CNAME

    Dans la Figure 14-9, toute requête envoyée à <alias-name> se dirigera vers l'hôte appelé <real-name>. Les enregistrements CNAME sont le plus souvent utilisés pour orienter vers les services qui utilisent un procédé commun de nommage pour les hôtes appropriés.

    Examinons l'exemple dans la Figure 14-10, où un enregistrement A fixe un nom d'hôte à une adresse IP et un enregistrement CNAME y oriente les noms d'hôte www les plus courrament utilisés.

    server1      IN     A       10.0.1.5
    www          IN     CNAME   server1

    Figure 14-10. Exemple d'enregistrement CNAME

  • MX — Enregistrement Mail eXchange, qui dit où doit se diriger le courrier envoyé à un nom d'espace particulier contrôlé par cette zone.

          IN     MX     <preference-value>  <email-server-name>

    Figure 14-11. Exemple d'enregistrement MX configuration

    Dans Figure 14-11, l'option <preference-value> vous permet de lister numériquement les serveurs de mail que vous sélectionnez pour recevoir les messages pour cet espace de nom, donnant une préférence à certains systèmes de courrier sur d'autres. L'enregistrement de ressource MX à la <preference-value> la plus basse est préféré aux autres, mais vous pouvez régler de multiples serveurs de courrier avec la même valeur pour distribuer le trafic des mails entre eux.

    L'option <email-server-name> peut être un nom d'hôte ou un FQDN, du moment qu'il oriente vers le système approprié.

          IN     MX     10     mail.domain.com.
          IN     MX     20     mail2.domain.com.

    Figure 14-12. Exemple d'enregistrement MX

    Dans cet exemple, le premier serveur de courrier mail.domain.com est préféré au serveur de courrier mail2.domain.com pour recevoir les mails destinés au domaine domain.com.

  • NS — Enregistrement de serveur de noms (NameServer) qui annonce les serveurs de noms faisant autorité pour une zone particulière.

          IN     NS     <nameserver-name>

    Figure 14-13. Exemple de configuration de l'enregistrement NS

    L'option <nameserver-name> doit être un FQDN.

    Dans la Figure 14-14, deux serveurs de noms autorisé sont listés pour un domaine. Le fait que ces serveurs de noms soient esclaves ou maîtres n'a pas d'importance. Ils sont tous les deux considérés comme faisant autorisés.

          IN     NS     dns1.domain.com.
          IN     NS     dns2.domain.com.

    Figure 14-14. Exemple d'enregistrement NS

  • PTR — Enregistrement PoinTeR record, conçu pour orienter vers une autre partie de l'espace de nom.

    Les enregistrements PTR servent surtout à la résolution inverse des noms, puisqu'ils ré-orientent les adresses IP vers un nom particulier. Consultez les la section intitulée Fichiers de résolution de noms inversée pour obtenir plus d'exemples d'utilisations d'enregistrements PTR.

  • SOA — Enregistrement "Start Of Authority", qui proclame des informations importantes faisant autorité à propos des espaces de nom pour les serveurs de noms.

    Situé après les directives, un enregistrement SOA est le premier enregistrement de ressources dans un fichier de zone.

    @     IN     SOA    <primary-name-server>     <hostmaster-email> (
                        <serial-number>
                        <time-to-refresh>
    		    <time-to-retry>
    		    <time-to-expire>
    		    <minimum-TTL> )

    Figure 14-15. Exemple de configuration d'enregistrement SOA

    Le symbole @ place la directive $ORIGIN (ou le nom de zone, si la directive $ORIGIN n'est pas installée) en tant qu'espace de nom défini par le présent enregistrement de ressources SOA. Le serveur de nom primaire autorisé pour ce domaine est utilisé pour la <primary-name-server> et l'adresse e-mail de la personne à contacter à propos de cet espace de nom est substituée au <hostmaster-email>.

    L'option <serial-number> est incrémentée chaque fois que vous changez le fichier de zone afin que named sache qu'il doit recharger cette zone. <time-to-refresh> dit à tout serveur esclave combien de temps attendre avant de demander au serveur de noms maître si des changements ont été effectués dans la zone. La valeur <serial-number> est utilisée par le serveur esclave pour déterminer s'il est en train d'utiliser des données périmées ou s'il doit les rafraîchir.

    L'option <time-to-retry> informe le serveur de noms esclave de l'intervalle à attendre avant d'émettre une autre requête de rafraîchissement, au cas où le serveur de noms maître ne répondrait pas. Si le serveur maître n'a pas répondu à une requête de rafraîchissement avant que <time-to-expire> ne soit écoulée, alors le serveur esclave cesse de répondre en se présentant comme faisant autorité pour les requêtes au sujet de cet espace de nom.

    L'option <minimum-TTL> demande que d'autres serveurs de noms placent en cache les informations pour cette zone pendant au moins cette période.

    Dans BIND, tous les temps sont exprimés en secondes. Toutefois, vous pouvez aussi utiliser des abbréviations pour des unités de temps autres que des secondes, comme les minutes (M), heures (H), jours (D) et semaines (W). Le tableau de la Tableau 14-1 montre la quantité de temps en secondes et la période équivalente dans un autre format.

    Tableau 14-1. Les secondes comparées à d'autres unités de temps

    Les secondesAutres unités de temps
    601M
    180030M
    36001H
    108003H
    216006H
    4320012H
    864001D
    2592003D
    6048001W

    L'exemple suivant montre à quoi l'enregistrement d'une ressource de base SOA peut ressembler.

    @     IN     SOA    dns1.domain.com.     hostmaster.domain.com. (
                        2001062501 ; serial
                        21600      ; refresh after 6 hours
                        3600       ; retry after 1 hour
                        604800     ; expires after 1 week
                        86400 )    ; minimum TTL of 1 day

    Figure 14-16. Exemples d'enregistrements SOA

Exemples de fichiers de zone

Si on les observe individuellement, les directives et enregistrements de ressources peuvent être difficiles à comprendre. Toutefois, tout devient bien plus limpide lorsqu'on peut les observer ensemble dans un fichier commun.

Dans Figure 14-17 un exemple de fichier de zone très classique est montré.

$ORIGIN domain.com
$TTL 86400
@     IN     SOA    dns1.domain.com.     hostmaster.domain.com. (
                    2001062501 ; serial
                    21600      ; refresh after 6 hours
                    3600       ; retry after 1 hour
                    604800     ; expires after 1 week
                    86400 )    ; minimum TTL of 1 day

      IN     NS     dns1.domain.com.
      IN     NS     dns2.domain.com.

      IN     MX     10     mail.domain.com.
      IN     MX     20     mail2.domain.com.

             IN     A       10.0.1.5

server1      IN     A       10.0.1.5
server2      IN     A       10.0.1.7
dns1         IN     A       10.0.1.2
dns2         IN     A       10.0.1.3

ftp          IN     CNAME   server1
mail         IN     CNAME   server1
mail2        IN     CNAME   server2
www          IN     CNAME   server2

Figure 14-17. Exemple de fichier de zone de base

Dans cet exemple sont utilisées les directives standard et les valeurs SOA. On décide que les serveurs de noms autorisés seront dns1.domain.com et dns2.domain.com, qui ont des enregistrements A les liant respectivement à 10.0.1.2 et 10.0.1.3.

Les serveurs de courrier configurés par les enregistrements MX orientent vers le server1 et le server2 grâce aux enregistrements CNAME. Puisque les noms du server1 et du server2 ne finissent pas par un point (.), le domaine $ORIGIN est placé à leur suite, ce qui les étend à server1.domain.com et server2.domain.com. Grâce aux enregistrements de ressources A concernés, leurs adresses IP peuvent être déterminées.

Les services ftp et Web populaires, disponibles aux noms standards ftp.domain.com et www.domain.com, sont orientés vers des machines qui fournissent les services appropriés pour ces noms, en utilisant les enregistrements CNAME.

Fichiers de résolution de noms inversée

Une résolution de nom inversée sert à traduire une adresse IP dans un espace de nom particulier en un FQDN. Cela ressemble beaucoup à un fichier de zone standard, si ce n'est que les enregistrements de ressources PTR servent à lier les adresses IP au nom d'un certain système.

L'écriture d'un enregistrement PTR se fera comme dans la Figure 14-18.

<last-IP-digit>      IN     PTR    <FQDN-of-system>

Figure 14-18. Exemple de configuration d'enregistrement PTR

<last-IP-digit> fait référence au dernier nombre dans une adresse IP qui doit orienter le FQDN d'un système particulier.

Dans la Figure 14-19, les adresses IP de 10.0.1.20 à 10.0.1.25 orientent vers les FQDN correspondants.

$ORIGIN 1.0.10.in-addr.arpa
$TTL 86400
@     IN     SOA    dns1.domain.com.     hostmaster.domain.com. (
                    2001062501 ; serial
                    21600      ; refresh after 6 hours
                    3600       ; retry after 1 hour
                    604800     ; expire after 1 week
                    86400 )    ; minimum TTL of 1 day

      IN     NS     dns1.domain.com.
      IN     NS     dns2.domain.com.

20    IN     PTR    alice.domain.com.
21    IN     PTR    betty.domain.com.
22    IN     PTR    charlie.domain.com.
23    IN     PTR    doug.domain.com.
24    IN     PTR    ernest.domain.com.
25    IN     PTR    fanny.domain.com.

Figure 14-19. Un exemple de fichier basique de résolution inversée de zone

Ce fichier de zone doit être mis en service avec une déclaration zone dans le fichier /etc/named.conf semblable à Figure 14-20.

zone "1.0.10.in-addr.arpa" IN {
  type master;
  file "domain.com.rr.zone";
  allow-update { none; };
};

Figure 14-20. Un exemple de déclaration zone de résolution inversée

Il existe peu de différences entre cet exemple et une déclaration zone standard, si ce n'est dans la manière de nommer l'hôte. Notez qu'une zone de résolution de nom inversée nécessite que les trois premiers blocs de l'adresse IP soient inversés et que ".in-addr.arpa" soit inclu à leur suite. Cela permet d'attacher correctement à cette zone le bloc unique de nombres utilisé dans le fichier de zone de résolution de nom inversée.