12.2. /etc/named.conf

Le fichier named.conf est une suite de déclarations utilisant des options insérées qui sont placées entre accolades, { }. Les administrateurs doivent être très prudents lorsqu'ils modifient le fichier named.conf et doivent veillez tout particulièrement à ne pas faire de fautes de syntaxe car des erreurs mineures en apparence empêcheront le démarrage du service named.

AvertissementAvertissement
 

Ne modifiez pas manuellement le fichier /etc/named.conf ou tout autre fichier dans le répertoire /var/named/ si vous n'utilisez pas l'Outil de configuration du service de noms de domaines au moment des modifications. Tout changement manuel dans ce fichier ou dans tout fichier de ce répertoire sera écrasé lors de la prochaine utilisation de l'Outil de configuration du service de noms de domaines.

Un fichier named.conf typique est organisé de manière semblable à l'extrait ci-dessous :

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

12.2.1. Types de déclarations courants

Les types de déclarations suivants sont couramment utilisés dans /etc/named.conf :

12.2.1.1. Déclaration acl

La déclaration acl (ou déclaration de contrôle d'accès) définit des groupes d'hôtes qui peuvent ensuite être autorisés ou non à accéder au serveur de noms.

Une déclaration acl se présente sous le format suivant :

acl <acl-name> {
    <match-element>;
    [<match-element>; ...]
};

Dans cette déclaration, remplacez <acl-name> par le nom de la liste du contrôle d'accès et remplacez <match-element> en séparant les adresses IP par un point virgule. La plupart du temps, une adresse IP individuelle ou la notation réseau de l'IP (comme par exemple, 10.0.1.0/24) est utilisée pour identifier les adresses IP dans la déclaration acl.

Les listes de contrôle d'accès suivantes sont déjà définies en tant que mots-clés afin de simplifier la configuration :

  • any — correspond à toutes les adresses IP.

  • localhost — correspond à toute adresse IP utilisée par le système local.

  • localnets — correspond à toute adresse IP sur tout réseau auquel le système local est connecté.

  • none — ne correspond à aucune adresse IP.

Lorsqu'elles sont utilisées avec d'autres déclarations (comme par exemple, la déclaration options), les déclarations acl peuvent se révéler très utiles pour éviter la mauvaise utilisation d'un serveur de noms BIND.

L'exemple ci-dessous établit deux listes de contrôle d'accès et utilise une déclaration options pour définir la manière dont elles seront traitées par le serveur de nom :

 acl black-hats {
    10.0.2.0/24;
    192.168.0.0/24;
 };

acl red-hats {
    10.0.1.0/24;
 };

options {
    blackhole { black-hats; };
    allow-query { red-hats; };
    allow-recursion { red-hats; };
 }
 
 

Cet exemple comporte deux listes de contôle d'accès, black-hats et red-hats. Les hôtes de la liste black-hats se voient dénier l'accès au serveur de noms, alors que ceux de la liste red-hats se voient donner un accès normal.

12.2.1.2. Déclaration include

La déclaration include permet à des fichiers de faire partie d'un fichier named.conf. Ce faisant, des données de configurations critiques (comme keys, par exemple) peuvent être placées dans un fichier séparé doté de permissions restreintes.

Une déclaration include se présente sous le format suivant :

include  "<file-name>"

Dans cette déclaration, <file-name> est remplacé par le chemin d'accès absolu vers un fichier.

12.2.1.3. Déclaration options

La déclaration options définit les options globales de configuration de serveur et établit des valeurs par défaut pour les autres déclarations. Cette déclaration peut être utilisée en autres pour spécifier l'emplacement du répertoire de travail named, ou pour déterminer les types de requêtes autorisés.

La déclaration options se présente sous le format suivant :

options { 
        <option>;
	[<option>; ...] 
};

Dans cette déclaration, les directives <option> sont remplacées par une option valide.

Ci-dessous figure une liste des options couramment utilisées :

  • allow-query — spécifie les hôtes autorisé à interroger ce serveur de noms. Par défaut, tous les hôtes sont autorisés à interroger le serveur de noms. Une liste de contrôle d'accès ou un ensemble d'adresses IP ou de réseaux peuvent être utilisés ici afin de n'autoriser que des hôtes précis à interroger le serveur de noms.

  • allow-recursion — semblable à allow-query, cette option s'applique à des demandes récursives. Par défaut, tous les hôtes sont autorisés à effectuer des demandes récursives sur le serveur de noms.

  • blackhole — spécifie les hôtes qui ne sont pas autorisés à interroger le serveur de noms.

  • directory — change le répertoire de travail named pour une valeur autre que la valeur par défaut, /var/named/.

  • forward — contrôle le comportement de retransmission d'une directive forwarders.

    Les options suivantes sont acceptées :

    • first — établit que les serveurs de noms spécifiés dans la directive forwarders soient interrogés avant que named ne tente de résoudre le nom lui-même.

    • only — spécifie que named ne doit pas tenter d'effectuer lui-même une résolution de nom dans le cas où des demandes vers les serveurs de noms spécifiés dans la directive forwarders échoueraient.

  • forwarders — spécifie une liste d'adresses IP valides correspondant aux serveurs de noms vers lesquels les requêtes devraient être envoyées pour la résolution.

  • listen-on — spécifie l'interface réseau sur laquelle named prend note des requêtes. Par défaut, toutes les interfaces sont utilisées.

    De cette manière, si le serveur DNS sert également de passerelle, BIND peut être configuré de telle sorte qu'il ne réponde qu'aux requêtes en provenance de l'un des réseaux.

    Une directive listen-on peut ressembler à l'extrait ci-dessous :

    options {
       listen-on { 10.0.1.1; };
    };

    Dans cet exemple, seules les requêtes qui proviennent de l'interface de réseau servant le réseau privé (10.0.1.1) seront acceptées.

  • notify — établit si named notifie les serveurs esclaves lorsqu'une zone est mise à jour. Les options suivantes sont acceptées :

    • yes — notifie les serveurs esclaves.

    • no — ne notifie les serveurs esclaves.

    • explicit — notifie seulement les serveurs esclaves spécifiés dans une liste also-notify à l'intérieur d'une déclaration de zone.

  • pid-file — spécifie l'emplacement du fichier de processus ID créé par named.

  • statistics-file — spécifie un autre emplacement des fichiers de statistiques. Par défaut, les named sont enregistrées dans le fichier /var/named/named.stats.

De nombreuses autres options sont également disponibles, dont beaucoup dépendent l'une de l'autre pour fonctionner correctement. Consultez le document BIND 9 Administrator Reference Manual dans la Section 12.7.1 et la page de manuel relative à bind.conf pour de plus amples détails.

12.2.1.4. Déclaration de zone

Une déclaration de zone définit les caractéristiques d'une zone tels que l'emplacement de ses fichiers de configuration et les options spécifiques à la zone. Cette déclaration peutêtre utilisée pour remplacer les déclarations globales d'options.

Une déclaration de zone se présente sous le format suivant :

zone <zone-name> <zone-class> {
     <zone-options>;
     [<zone-options>; ...]
};

Dans la déclaration, <zone-name> correspond au nom de la zone, <zone-class> à la classe optionnelle de la zone et <zone-options> représente une liste des options caractérisant la zone.

L'attribut <zone-name> de la déclaration de zone est particulièrement important, puisqu'il représente la valeur par défaut assignée à la directive $ORIGIN utilisés au sein du fichier de zone correspondant qui se trouve dans le répertoire /var/named/. Le démon named attache le nom de la zone à tout nom de domaine qui n'est pas pleinement qualifié, listé dans le fichier de zone.

Par exemple, si une déclaration de zone définit l'espace de nom pour example.com, utilisez example.com comme <zone-name> afin qu'il soit placé à la fin des noms d'hôtes au sein du fichier de zone example.com.

Pour de plus amples informations sur les fichiers de zone, reportez-vous à la Section 12.3.

Parmi les options les plus courantes de la déclaration de zone figurent :

  • allow-query — spécifie les clients qui sont autorisés à requérir des informations à propos de cette zone. Par défaut toutes les requêtes d'informations sont autorisées.

  • allow-transfer — spécifie les serveurs esclaves qui sont autorisés à requérir un transfert des informations de la zone. Par défaut toutes les requêtes de transfert sont autorisées.

  • allow-update — spécifie les hôtes qui sont autorisés à mettre à jour dynamiquement des informations dans leur zone. Par défaut aucune requête de mise à jour dynamique n'est autorisée.

    Soyez très prudent lorsque vous autorisez des hôtes à mettre à jour des informations à propos de leur zone. Ne mettez en oeuvre cette option que si vous accordez une confiance absolue à l'hôte. De manière générale, il est préférable de laisser un administrateur mettre à jour manuellement les enregistrements de la zone et recharger le service named service.

  • file — spécifie le nom du fichier qui contient les données de configuration de la zone, dans le répertoire de travail named.

  • masters — spécifie les adresses IP à partir desquelles demander des informations sur la zone faisant autorité. Cette option ne doit être utilisée que si la zone est définie en tant que type slave.

  • notify — établit si named notifie les serveurs esclaves lorsqu'une zone est mise à jour. Cette directive accepte les options suivantes :

    • yes — notifie les serveurs esclaves.

    • no — ne notifie les serveurs esclaves.

    • explicit — notifie seulement les serveurs esclaves spécifiés dans une liste also-notify à l'intérieur d'une déclaration de zone.

  • type — définit le type de zone. Les types énumérés ci-dessous peuvent être utilisés.

    Ci-après figure une liste des options valides :

    • forward — retransmet toutes les requêtes d'informations à propos de cette zone vers d'autres serveurs de noms

    • hint — un type spécial de zone utilisé pour diriger des transactions vers les serveurs de noms racines qui résolvent des requêtes lorsqu'une zone n'est pas connue autrement. Aucune configuration au-delà de la valeur par défaut n'est nécessaire avec une zone hint.

    • master — désigne le serveur de noms faisant autorité pour cette zone. Une zone devrait être configurée comme de type master (maître) si les fichiers de configuration de la zone se trouvent sur le système.

    • slave — désigne le serveur de noms comme serveur esclave pour cette zone. Cette option spécifie également l'adresse IP du serveur de noms maître pour cette zone.

  • zone-statistics — configure named pour qu'il conserve des statistiques concernant cette zone, en les écrivant soit dans l'emplacement par défaut (/var/named/named.stats), soit à l'emplacement expressément désigné par l'option statistics-file dans la déclaration server. Reportez-vous à la Section 12.2.2 pour de plus amples informations sur la déclaration server.

12.2.1.5. Exemples de déclarations zone

La plupart des changements apportés au fichier /etc/named.conf d'un serveur de noms maître ou esclave implique l'ajout, la modification ou la suppression de déclarations de zone. Alors que ces déclarations de zone peuvent contenir de nombreuses options, la plupart des noms de serveurs n'en ont besoin que de peu pour fonctionner de manière efficace. Les déclarations de zone suivantes sont des exemples très élémentaires illustrant une relation de serveurs de noms maître/esclave.

Ci-dessous se trouve un exemple de déclaration de zone pour le serveur de noms primaire hébergeant example.com (192.168.0.1) :

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

Dans cette déclaration, la zone est identifiée en tant que example.com, le type est défini comme master et le service named a comme instruction de lire le fichier /var/named/example.com.zone. Elle indique à named de refuser la mise à jour à tout autre hôte.

La déclaration de zone d'un serveur esclave pour example.com est légèrement différente de l'exemple précédent. Pour un serveur esclave, le type est slave et une directive indiquant à named l'adresse IP du serveur maître remplace la ligne allow-update.

Ci-dessous se trouve un exemple de déclaration de zone de serveur de noms pour la zone example.com :

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

Cette déclaration de zone configure named sur le serveur esclave de manière à ce qu'il cherche le serveur maître à l'adresse IP 192.168.0.1 pour y trouver les informations sur la zone appelée example.com. Les informations que le serveur esclave reçoit du serveur maître sont enregistrées dans le fichier /var/named/example.com.zone.

12.2.2. Autres types de déclarations

Ci-dessous se trouve une liste de types de déclarations disponibles au sein de named.conf mais utilisés moins fréquemment.

12.2.3. Balises de commentaire

La liste suivante regroupe les balises (ou tags) de commentaire valides utilisés dans named.conf :