20.4. Le fichier de configuration /etc/named.conf

Tous les paramètres du serveur de noms BIND lui-même sont stockés dans le fichier /etc/named.conf. En revanche, les données de zone pour les domaines à gérer, constituées des noms d'hôte, adresses IP, etc., sont stockées dans des fichiers séparés du répertoire /var/lib/named. Cela sera décrit en détail ultérieurement.

/etc/named.conf est divisé approximativement en deux parties. L'une est la section options pour les paramètres généraux et l'autre est constituée d'entrées zone pour les domaines individuels. La section logging et les entrées acl (liste de contrôle d'accès) sont facultatives. Les lignes de commentaires commencent par le signe # ou //. Un /etc/named.conf minimal est illustré dans l'Exemple 20.2, « Un /etc/named.conf de base ».

Exemple 20.2. Un /etc/named.conf de base

options { 
        directory "/var/lib/named"; 
        forwarders { 10.0.0.1; };
        notify no;
};

zone "localhost" in {
       type master;
       file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
};

zone "." in {
        type hint;
        file "root.hint";
};

20.4.1. Options de configuration importantes

directory "filename";

Spécifie le répertoire dans lequel BIND peut trouver les fichiers contenant les données de zone. Il s'agit généralement de /var/lib/named.

forwarders { ip-address; };

Spécifie les serveurs de noms (principalement du fournisseur) auxquels les requêtes DNS doivent être envoyées si elles ne peuvent être résolues directement. Remplacez adresse-ip par une adresse IP telle que 10.0.0.1.

forward first;

Provoque le transfert des requêtes DNS avant qu'une tentative ne soit faite de les résoudre via les serveurs de noms racine. Plutôt que forward first, on peut écrire forward only pour que toutes les requêtes soient transférées et qu'aucune ne soit envoyée aux serveurs de noms racine. Cela est judicieux dans la configuration des pare-feu.

listen-on port 53 { 127.0.0.1; ip-address; };

Indique à BIND sur quelles interfaces réseau et port les requêtes du client doivent être acceptées. Il n'est pas nécessaire de spécifier le port 53 de façon explicite, car 53 est le port par défaut. Entrez 127.0.0.1 pour autoriser les requêtes à partir de l'hôte local. Si vous omettez entièrement cette entrée, toutes les interfaces sont utilisées par défaut.

listen-on-v6 port 53 {any; };

Indique à BIND sur quel port il doit écouter pour les requêtes de client IPv6. La seule alternative à any est none. En ce qui concerne IPv6, le serveur n'accepte qu'une adresse générique.

query-source address * port 53;

Cette entrée est nécessaire si un pare-feu bloque les requêtes DNS sortantes. Cela indique à BIND de publier des requêtes de façon externe à partir du port 53 et non à partir de l'un des ports plus élevés que 1024.

query-source-v6 address * port 53;

Indique à BIND quel port utiliser pour les requêtes IPv6.

allow-query { 127.0.0.1; net; };

Définit les réseaux à partir desquels les clients peuvent publier des requêtes DNS. Remplacez réseau par les informations d'adresse telles que 192.168.1/24. Le /24 de la fin est une expression abrégée du masque de réseau, dans ce cas, 255.255.255.0.

allow-transfer ! *;;

Contrôle les hôtes pouvant demander des transferts de zones. Dans cet exemple, les requêtes sont complètement refusées avec ! *. Sans cette entrée, les transferts de zones peuvent être demandés de n'importe où sans restriction.

statistics-interval 0;

Lorsque cette entrée est absente, BIND génère plusieurs lignes d'informations statistiques par heure dans /var/log/messages. Définissez-la à 0 pour supprimer complètement ces statistiques ou définissez un intervalle en minutes.

cleaning-interval 720;

Cette option définit à quels intervalles BIND nettoie son cache. Elle déclenche une entrée dans /var/log/messages chaque fois que cela se produit. La spécification du temps s'exprime en minutes. La valeur par défaut est de 60 minutes.

interface-interval 0;

BIND recherche régulièrement pour vérifier la présence ou l'absence de nouvelles interfaces. Si cette valeur est définie sur 0, cela ne s'effectue pas et BIND n'écoute que les interfaces détectées lors du démarrage. Sinon, l'intervalle peut être défini en minutes. La valeur par défaut est de soixante minutes.

notify no;

no empêche les autres serveurs de noms d'être informés lorsque des changements sont apportés aux données de zone ou lors du redémarrage du serveur de noms.

20.4.2. Journalisation

Dans BIND, il est possible de configurer en détail où s'effectue la journalisation, comment elle s'effectue et ce qu'elle contient. Normalement, les paramètres par défaut doivent suffire. L'Exemple 20.3, « Entrée de désactivation de la journalisation » montre la forme la plus simple d'une telle entrée et supprime complètement toute journalisation.

Exemple 20.3. Entrée de désactivation de la journalisation

logging {
        category default { null; };
};

20.4.3. Entrées de la zone

Exemple 20.4. Entrée de zone pour my-domain.de

zone "my-domain.de" in {
      type master;
      file "my-domain.zone";
      notify no;
};

Après zone, spécifiez le nom du domaine à administrer (my-domain.de) suivi de in et d'un bloc d'options pertinentes entre accolades, comme illustré dans l'Exemple 20.4, « Entrée de zone pour my-domain.de ». Pour définir une zone esclave, changez le type à slave et spécifiez un serveur de noms qui administre cette zone en tant que master (qui, à son tour, peut être l'esclave d'un autre maître), comme le montre l'Exemple 20.5, « Entrée de la zone pour other-domain.de ».

Exemple 20.5. Entrée de la zone pour other-domain.de

zone "other-domain.de" in {
      type slave;
      file "slave/other-domain.zone";
      masters { 10.0.0.1; }; 
};

Les options de zone :

type master;

En spécifiant master, indiquez à BIND que la zone est gérée par le serveur de noms local. Cela suppose qu'un fichier de zone a été créé dans le format correct.

type slave;

Cette zone est transférée à partir d'un autre serveur de noms. Elle doit s'utiliser avec masters.

type hint;

La zone . de type hint est utilisée pour définir les serveurs de noms racine. Cette définition de zone peut être laissée telle quelle.

file my-domain.zone or file « slave/other-domain.zone »;

Cette entrée spécifie le fichier dans lequel se trouvent les données de zone du domaine. Ce fichier n'est pas requis pour un esclave, car ces données sont extraites d'un autre serveur de noms. Pour différencier les fichiers maître et esclave, utilisez le répertoire slave pour les fichiers esclave.

masters { adresse-ip-serveur; };

Cette entrée n'est nécessaire qu'aux zones esclaves. Elle spécifie depuis quel serveur de noms le fichier de zone doit être transféré.

allow-update {! *; };

Cette option contrôle l'accès en écriture externe, qui autoriserait les clients à effectuer une entrée DNS, ce qui n'est normalement pas souhaitable pour des raisons de sécurité. Sans cette entrée, les mises à jour de zone ne sont pas autorisées du tout. L'entrée ci-dessus effectue la même chose car ! * interdit effectivement ce type d'activité.