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

Tous les paramétrages du serveur de noms BIND sont enregistrés dans le fichier /etc/named.conf. Les données de zone, les noms des machines, les adresses IP, etc. des domaines à gérer sontenregistrées dans des fichiers séparés du répertoire /var/lib/named. Vous trouverez davantage d'informations à ce sujet plus loin.

Le fichier /etc/named.conf se divise principalement en deux parties : d'une part, la section options pour les paramètres d'ordre général et, d'autre part, les déclarations de zone des différents domaines. La section logging (journalisation) et les déclarations d'acl (contrôle d'accès) sont optionnelles. Les lignes de commentaires commencent par le signe dièse # ou par une barre de division //. L'Exemple 40.2, « Fichier /etc/named.conf minimaliste » présente un fichier /etc/named.conf minimaliste.

Exemple 40.2. Fichier /etc/named.conf minimaliste

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";
};

40.4.1. Les options de configuration importantes

directory "nom"

indique le répertoire dans lequel BIND trouve les fichiers contenant les données de zones. Il s'agit en général de /var/lib/named.

forwarders { adresse-ip; };

indique les serveurs de noms (la plupart du temps ceux du fournisseur d'accès) vers lesquels on redirige les requêtes DNS auxquelles il n'est pas possible de répondre directement. À la place d'adresse-ip vous devez mettre une adresse IP comme 10.0.0.1.

forward first;

a pour effet que les requêtes DNS sont redirigées avant même que le serveur de noms racine n'essaie de les résoudre. Vous pouvez utiliser forward only à la place de forward first pour que toutes les requêtes soient redirigées et que le serveur de noms racine ne soit plus du tout consulté. Cela peut se révéler utile pour la configuration des pare-feu.

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

indique à BIND sur quelles interfaces réseau et sur quel port il doit écouter les requêtes des clients. Vous n'êtes pas obligé de saisir 53 dans la mesure où 53 est de toute façon le port par défaut. 127.0.0.1 permet d'accepter les requêtes de la machine locale. Si vous omettez complètement cette ligne, par défaut toutes les interfaces sont utilisées.

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

indique à BIND sur quel port il doit écouter les requêtes des clients qui utilisent IPv6. Outre any, seul none est également autorisé car le serveur écoute toujours l'adresse joker IPv6.

query-source address * port 53;

Cette directive peut être utile lorsqu'un pare-feu bloque les requêtes DNS externes. Cela oblige BIND à effectuer ses requêtes vers l'extérieur à partir du port 53 et pas des ports supérieurs à 1024.

query-source-v6 address * port 53;

Cette directive doit être utilisée pour les requêtes basées sur IPv6.

allow-query { 127.0.0.1; réseau; };

précise les réseaux à partir desquels les clients ont le droit d'envoyer des requêtes DNS. Il faut mettre à la place de réseau une adresse de la forme 192.168.1/24/24 est un raccourci pour le nombre de bits dans le masque réseau, soit dans ce cas 255.255.255.0.

allow-transfer { ! *; };

détermine quels ordinateurs sont autorisés à effectuer des transferts de zone. Cet exemple les interdit complètement du fait de la présence de ! *. Sans cette directive, il est possible de réaliser des transferts de zone sans aucune limitation et depuis n'importe où.

statistics-interval 0;

Sans cette directive, BIND produit toutes les heures plusieurs lignes de messages de statistiques dans /var/log/messages. Paramétrez-la à 0 pour les supprimer complètement ou spécifiez un intervalle en minutes.

cleaning-interval 720;

Cette option définit au bout de quel intervalle BIND vide son cache. Cette action est à chaque fois consignée dans un enregistrement du fichier /var/log/messages. Le temps est indiqué ici en minutes. La valeur par défaut est de 60 minutes.

interface-interval 0;

BIND parcourt régulièrement les interfaces réseau pour détecter de nouvelles interfaces ou celles qui ne sont plus disponibles. Réglez cette valeur à 0 pour l'en empêcher et pour que BIND n'écoute que les interfaces trouvées au démarrage. Vous pouvez aussi préciser l'intervalle en minutes. La valeur par défaut est de 60 minutes.

notify no;

Le no signifie qu'aucun autre serveur de noms n'est averti en cas de modifications apportées aux données de zone ou lors du redémarrage du serveur de noms.

40.4.2. journalisation

BIND vous permet de configurer complètement ce qui est consigné dans un journal, comment et à quel endroit. Les paramétrages par défaut sont normalement suffisants. L'Exemple 40.3, « La journalisation est désactivée » montre la forme la plus simple d'une telle directive et permet d'empêcher complètement la journalisation.

Exemple 40.3. La journalisation est désactivée

logging {
        category default { null; };
};

40.4.3. Déclarations de zones

Exemple 40.4. Déclaration de zone pour mon-domaine.fr

zone "mon-domaine.fr" in {
       type master;
       file "mon-domaine.zone";
       notify no;
};

Après le mot-clé zone, on indique le nom du domaine géré (mon-domaine.fr), suivi de in puis, entre accolades, d'un bloc d'options qui s'appliquent à ce domaine comme le montre l'Exemple 40.4, « Déclaration de zone pour mon-domaine.fr ». Si vous souhaitez définir une zone esclave (slave), changez la valeur du type en slave et indiquez un serveur de noms qui gère cette zone en tant que maître (master) (qui peut à son tour être l'esclave d'un autre maître) comme le montre l'Exemple 40.5, « Déclaration de zone pour autre-domaine.fr ».

Exemple 40.5. Déclaration de zone pour autre-domaine.fr

zone "autre-domaine.fr" in {
       type slave;
       file "slave/autre-domaine.zone";
       masters { 10.0.0.1; };
};

Les options de zones :

type master;

Le mot-clé master indique que cette zone est gérée par ce serveur de noms. Cela suppose que l'on dispose d'un fichier de zone correct.

type slave;

Cette zone est transférée depuis un autre serveur de noms. Elle doit être utilisée en conjonction avec des serveurs maîtres.

type hint;

La zone . de type hint est utilisée pour indiquer le serveur de noms racine. Vous pouvez laisser cette définition de zone telle quelle.

file "mon-domaine.zone" ou file "slave/autre-domaine.zone";

Cette déclaration indique le fichier dans lequel figurent les données de zone du domaine. Dans le cas d'un esclave, ce fichier n'est pas nécessaire car son contenu est récupéré sur un autre serveur de noms. Pour bien distinguer les fichiers maîtres des fichiers esclaves, on place les fichiers esclaves dans le répertoire slave.

masters { adresse-ip-du-serveur; };

Cette directive n'est utile que pour les zones esclaves et elle indique depuis quel serveur de noms le fichier de zones doit être transféré.

allow-update { ! *; };

Cette option régit l'accès en écriture depuis l'extérieur, ce qui permettrait à des clients de s'inscrire eux-mêmes dans le DNS — ce qui, pour des raisons de sécurité, n'est normalement pas souhaitable. Lorsque cette directive n'est pas présente, les mises à jour des zones ne sont pas autorisées du tout. Dans cet exemple, cela ne changerait rien non plus dans la mesure où ! * interdit également toute action de ce type.