ISC Bind9 – Configuration avancée

ISC_DNS

Bind9 est une implémentation Open Source des protocoles DNS (Domain Name System) pour l’Internet, sous licence Mozilla Public License 2.0, née au début des années 80 et destinée principalement aux systèmes UNIX. Bind9 signifie Berkeley Internet Name Domain version 9 car le projet a été initié à l’Université de Californie à Berkeley (UCB). Ce projet est actuellement développé par l’Internet Systems Consortium (ISC) et la version 9 date de 2000.

 

Objectif

 

L’objectif de cet article est l’approfondissement de la configuration d’un serveur DNS utilisant l’implémentation Bind9, sur une distribution Linux Debian Jessie 8.4 32bits.

 

Pré-requis

 

Pré-requis avant réalisation

  • Un serveur DNS primaire (master) fonctionnel et utilisant Bind9
  • Ce même serveur configuré avec une zone de recherche directe et une zone de recherche inversée
  • Un serveur DNS secondaire (slave) fonctionnel et utilisant Bind9
  • Ce même serveur configuré pour le transfert de zones depuis le master
  • Packages de base supplémentaires : sudo, resolvconf, aptitude
  • Domaine utilisé : opensharing.priv

 

Configuration réseau initiale

 

Pour le serveur DNS master

Serveur DNS Master
FQDN dns1-test.opensharing.priv
Adresse IP 192.168.1.11
Réseau 192.168.1.0/24
Passerelle 192.168.1.1
dns-nameservers 127.0.0.1
dns-search opensharing.priv

 

Pour le serveur DNS slave

Serveur DNS Slave
FQDN dns2-test.opensharing.priv
Adresse IP 192.168.1.12
Réseau 192.168.1.0/24
Passerelle 192.168.1.1
dns-nameservers 192.168.1.11 127.0.0.1
dns-search opensharing.priv

 

Configuration BIND initiale

 

Pour le serveur DNS master

Fichier /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/tsig.key";
include "/etc/bind/rndc.key";
Fichier /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";
};
Fichier /etc/bind/named.conf.local
zone "opensharing.priv" IN {
	type master;
	file "/var/cache/bind/db.opensharing.priv";
	allow-update { localhost; };
	allow-transfer { localhost; 192.168.1.12; };
	notify yes;
};

zone "1.168.192.in-addr.arpa" IN {
	type master;
	file "/var/cache/bind/db.opensharing.priv.inv";
        allow-update { localhost; };
        allow-transfer { localhost; 192.168.1.12; };
	notify yes;
};

 

Pour le serveur DNS slave

Fichier /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/tsig.key";
include "/etc/bind/rndc.key";
Fichier /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";
};
Fichier /etc/bind/named.conf.local
zone "opensharing.priv" IN {
        type slave;
        masters { 192.168.1.11; };
        file "/var/cache/bind/db.opensharing.priv.slv";
        allow-transfer { localhost; };
	notify no;
};

zone "1.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.1.11; };
        file "/var/cache/bind/db.opensharing.priv.inv.slv";
        allow-transfer { localhost; };
	notify no;
};

 

Réalisation

 

Notes générales

 

Les différents types de clauses

Dans la configuration de Bind9, on retrouve différents types de clauses :

  • options : les options globales
  • zone : les options spécifiques à une zone de résolution
  • view : les options spécifiques à un sous-réseau ou groupe d’hôtes effectuant une requête sur le serveur
  • controls : les options d’accès et d’administration distante RNDC
  • server : définition des caractéristiques liant le serveur avec un serveur distant
  • logging : gestion des logs du service Bind9
  • acl : définition d’un nom pour désigner un groupe d’hôtes (access control list)
  • key : définition d’une clef caractérisée par un algorithme de hachage et une clef partagée symétrique

La section Pour aller plus loin revient plus en détails sur les champs utilisés.

PAPL01
 

Options des clauses options, zone ou view

Plusieurs des options suivantes peuvent être définies de manière globale dans le fichier /etc/bind/named.conf.options. Ce sont les options globales (Application : options) :

options {
	[...]
	parametre valeur;
	[...]
};

Auquel cas, toutes les zones déclarées dans /etc/bind/named.conf.local seront concernées. Sauf si une zone possède sa propre option. Cette dernière, plus spécifique, l’emportera alors sur l’option globale (Application : zone) :

zone "opensharing.priv" IN {
	[...]
	parametre valeur;
	[...]
};

zone "1.168.192.in-addr.arpa" IN {
	[...]
	parametre valeur;
	[...]
};

 

Toutefois, les options globales ou de zone peuvent être regroupées au sein d’une clause plus spécifique, et donc prioritaire : la clause view (Application : view)

view "internal" {
	match-clients { 192.168.1.0/24; };
	recursion yes;
	zone "opensharing.priv" IN {
		type master;
		file "/var/cache/bind/internal/db.opensharing.priv";
		allow-update { localhost; };
		allow-transfer { localhost; 192.168.1.12; };
		notify yes;
	};
};

view "external" {
	match-clients { any; };
	recursion no;
	zone "opensharing.priv" IN {
		type master;
		file "/var/cache/bind/external/db.opensharing.priv";
		allow-update { none; };
		allow-transfer { none; };
		notify no;
      };
};

Ces deux clauses peuvent être déclarées dans le fichier /etc/bind/named.conf.local ou dans un fichier spécifique /etc/bind/named.conf.views, par exemple, à inclure dans le fichier /etc/bind/named.conf
S’il existe des options globales identiques, celles de la clause view l’emportent par leur spécificité. Par exemple ici, si l’option “recursion” est globalement à “no”, elle sera à “yes” pour les hôtes du réseau interne 192.168.1.0/24.
La clause view permet ainsi de définir des options globales ou de zone spécifiques à un groupe d’hôtes en fonction de leurs IP. La view internal définit ici les hôtes du LAN et la view external définit les hôtes du WAN. En fonction de son IP, un hôte LAN ou un hôte WAN n’aura pas accès aux mêmes informations. Certains pourront effectuer une requête récursive alors que les autres non et les requêtes itératives ne retourneront pas la même chose.
L’ordre des clauses view est important car elles sont lues de haut en bas et seule la première clause correspondant à l’hôte effectuant la requête sera prise en compte. Si, dans l’exemple ci-dessus, les clauses avaient été inversées alors la clause “internal” ne serait jamais lue car la clause “external” regroupe l’ensemble des hôtes.

 

Liste d’adresses IP

Dans la majorité des cas, une liste d’adresses IP peut être remplacée par une ACL personnelle. Mais bien souvent on utilisera des ACL prédéfinies comme :

  • “any” pour signifier tout le monde, toutes les adresses IP
  • “none” pour signifier personne, aucune adresse IP
  • “localhost” pour signifier toutes les interfaces du serveur, y compris l’adresse de loopback 127.0.0.1, mais seulement pour des requêtes internes, pas depuis l’extérieur
  • “localnets” pour signifier toutes les adresses IP du/des réseau(x) au(x)quel(s) appartient le serveur, en se basant sur son IP et son masque de sous-réseau. Pour un serveur ayant une seule interface d’adresse 192.168.1.11/24, localnets équivaut à 192.168.1.0/24, soient les adresses de 192.168.1.0 à 192.168.1.255 et l’adresse de loopback 127.0.0.1 (même si bien souvent, par souci de clarté, on ajoute localhost en plus de localnets)

 

Ordre des IP dans une liste

L’ordre des adresses IP définies dans une liste d’adresses est important car elles sont lues de gauche à droite. Par exemple, si une négation est exprimée, il faudra qu’elle soit définie avant un ensemble auquel elle appartient car la recherche est arrêtée dès qu’une correspondance est trouvée :

options{
	[...]
        parametre { !192.168.1.50; 192.168.1.0/24 };
	[...]
};

Si l’hôte possédant l’IP 192.168.1.50 se connecte au serveur, il sera rejeté puis la recherche arrêtée.
Si tout autre hôte du même réseau se connecte, il faudra parcourir la deuxième valeur pour trouver une correspondance qui ici valide l’opération.
Si l’ordre des valeurs étaient inversé alors l’hôte 192.168.1.50 validerait l’opération car la correspondance serait trouvée dès la première valeur.

 


 

allow-notify

allow-notify { IP-list };

Application : zone, view, options

  • Ne s’applique qu’aux serveurs DNS secondaires (slave).
  • Permet de préciser des serveurs autorisés à envoyer des notifications de mise à jour de zones, en plus des serveurs définis dans le paramètres masters qui ont implicitement forcément cette autorisation.
  • Prend comme valeur une liste d’adresses IP.

/etc/bind/named.conf.local

zone "opensharing.priv" IN {
	[...]
	masters { 192.168.1.11; };
	allow-notify { 192.168.1.19; };
	[...]
};

 


 

allow-query

allow-query { IP-list };

Application : zone, view, options
Voir aussi : allow-query-on

  • Définit une liste d’adresses IP autorisées à effectuer des requêtes des DNS classiques, c’est-à-dire itératives
  • Les hôtes non inclus dans la liste se verront signifier que leur requête a été rejetée, contrairement à l’option blackhole
  • Par défaut, sa valeur est any, soit toutes les adresses IP
  • Option indépendante des requêtes récursives : pour cela, voir recursion et allow-recursion

 


 

allow-query-on

allow-query-on { IP-list };

Application : zone, view, options
Voir aussi : allow-query

  • Définit les interfaces du serveur sur lesquelles les requêtes DNS itératives sont autorisées
  • Par défaut, sa valeur est any, soit toutes les interfaces

 


 

allow-query-cache

allow-query-cache { IP-list };

Application : view, options
Voir aussi : recursion, allow-recursion et allow-query-cache-on

  • L’option recursion doit être à yes.
  • Définit les adresses IP autorisées à accéder au cache local des requêtes récursives du serveur. Un serveur récursif doit autoriser les accès à son cache pour être fonctionnel.
  • Par défaut, les options allow-recursion et allow-query-cache ont comme valeur localhost et localnets.
  • Si allow-recursion a une valeur spécifiée, allow-query-cache prendra la même valeur par défaut.
options{
	[...]
	recursion yes;
	allow-recursion { localhost; localnets; }; # redondant car implicite
	allow-query-cache { localhost; localnets; }; # redondant car implicite
	[...]
};

 


 

allow-query-cache-on

allow-query-cache-on { IP-list };

Application : view, options
Voir aussi : recursion, allow-recursion et allow-query-cache

  • L’option recursion doit être à yes.
  • Définit les interfaces du serveur sur lesquelles les accès au cache sont autorisées
  • Par défaut, sa valeur est any, soit toutes les interfaces
options{
	[...]
	recursion yes;
	allow-recursion { localhost; localnets; }; # redondant car implicite
	allow-query-cache { localhost; localnets; }; # redondant car implicite
	allow-query-cache-on { any; }; # redondant car implicite
	[...]
};

 


 

allow-recursion

allow-recursion { IP-list };

Application : view, options
Voir aussi : recursion et allow-query-cache

  • L’option recursion doit être à yes.
  • Définit une liste d’adresses IP autorisées à effectuer des requêtes récursives sur le serveur. Si cette option est absente, elle a pour valeur par défaut localhost et localnets.
  • L’option allow-query-cache prend, par défaut, la même valeur que allow-recursion.
  • Option indépendante des requêtes iératives : pour cela, voir allow-query
options{
	[...]
	recursion yes;
	allow-recursion { 192.168.1.12; };
	allow-query-cache { 192.168.1.12; }; # redondant car implicite
	[...]
};

 


 

allow-recursion-on

allow-recursion-on { IP-list };

Application : view, options
Voir aussi : recursion et allow-recursion

  • L’option recursion doit être à yes
  • Définit les interfaces du serveur sur lesquelles les requêtes DNS récursives sont acceptées
  • Par défaut, la valeur de cette option est à any, soit toutes les interfaces
options{
	[...]
	recursion yes;
	allow-recursion { 192.168.1.12; };
	allow-recursion-on { any; }; # redondant car implicite
	[...]
};

 


 

allow-transfer

allow-transfer { IP-list };

Application : zone, view, options
Voir aussi : transfer-source

  • Permet de définir les hôtes autorisés à recevoir des transferts de zone.
  • Par défaut, le serveur autorise les transfert de zones depuis n’importe quel hôte (“any”), mais il s’expose à des attaques DoS. Il est donc plus prudent d’y définir les serveurs slaves des zones concernées.
  • Prend comme valeur une liste d’adresses IP.

/etc/bind/named.conf.local

zone "opensharing.priv" IN {
	[...]
	type master;
	allow-transfer { localhost; 192.168.1.12; };
	[...]
};

 


 

allow-update

allow-update { IP-list };

Application : zone, view, options

  • Définit une liste d’adresses IP autorisées à effectuer une mise à jour dynamique des zones master (DDNS)
  • Permet l’utilisation de l’utilitaire nsupdate ou encore la mise à jour dynamique des enregistrements d’une zone par un serveur DHCP
  • Les hôtes autorisés sont identifiés par leur adresse IP ou par une clef symétrique incluse dans le fichier /etc/bind/named.conf
  • Par défaut, les mises à jour dynamiques sont interdites : allow-update { none; }; est implicite
options{
	[...]
        allow-update { localhost; };
	[...]
};
options{
	[...]
        allow-update { key tsig-key; };
	[...]
};

 


 

also-notify

also-notify { IP-list };

Application : zone, view, options

  • Définit une liste d’adresses IP à qui des notifications de mises à jour des zones master seront envoyées, en plus des serveurs de noms définis dans les fichiers de zones (enregistrements NS)
  • Par défaut, cette option est à none, c’est-à-dire aucune IP supplémentaire

 


 

alt-transfer-source

transfer-source IPv4_address;

Application : zone, view, options
Voir aussi : allow-transfer, use-alt-transfer-source et transfer-source

  • Ne s’applique qu’aux serveurs DNS secondaires (slave)
  • Définit une adresse IP locale alternative utilisée pour les transferts de zones ou pour les requêtes refresh au cas où l’IP principale définie avec l’option transfer-source ne soit plus fonctionnelle
  • L’option use-alt-transfer-source doit être à yes
  • L’IP doit avoir été définie sur l’hôte distant pour l’option allow-transfer
options{
	[...]
        transfer-source 192.168.1.12;
        use-alt-transfer-source yes;
        alt-transfer-source 192.168.1.22;
	[...]
};

 


 

blackhole

blackhole { IP-list };

Application : options

  • Définit une liste d’adresses IP bannies de toute requête DNS sur le serveur (blacklist)
  • Aucune réponse ne sera envoyée à ces hôtes, il ne leur sera pas non plus signifié que leur requête a été rejetée
  • Par défaut, sa valeur est à none

 


 

directory

directory absolute-Path;

Application : view, options

  • Ce paramètre est une option globale définissant le chemin absolu utilisé par le serveur. Tout fichier mentionné ensuite par un chemin relatif le sera par rapport à cette option.
  • Par exemple, dans une déclaration de zone, le paramètre file fait référence à la localisation du fichier de zone correspondant et, si un chemin relatif est spécifié, il sera localisé en le préfixant du directory mentionné.

/etc/bind/named.conf.options

options{
	[...]
        directory "/var/cache/bind";
	[...]
};

/etc/bind/named.conf.local

zone "opensharing.priv" IN {
	[...]
	file "db.opensharing.priv";
	[...]
};

Equivalent de :

zone "opensharing.priv" IN {
	[...]
	file "/var/cache/bind/db.opensharing.priv";
	[...]
};

 


 

file

file Path/filename;

Application : zone

  • Définit le fichier où sont stockées les enregistrements de la zone
  • Le chemin peut être absolu, ou relatif à l’option globale directory
  • Option obligatoire pour un serveur master, facultative mais fortement recommandée pour un serveur slave
zone "opensharing.priv" IN {
	[...]
	file "db.opensharing.priv";
	[...]
};

 


 

forward

forward first|only;

Application : zone, view, options
Voir aussi : forwarders et recursion

  • L’option recursion doit être à yes
  • Nécessite que l’option forwarders soit définie
  • Permet de préciser le comportement des requêtes récursives :
    • first : soit elles sont envoyées en priorité aux forwarders (des serveurs DNS publics par exemple) puis, en cas d’échec, aux serveurs root
    • only : soit elles sont envoyées uniquement aux forwarders
options{
	[...]
        recursion yes;
	forwarders { 208.67.222.222; 208.67.220.220; 8.8.8.8; 8.8.4.4; };
	forward first;
	[...]
};

 


 

forwarders

forwarders { IP-list };

Application : zone, view, options
Voir aussi : forward et recursion

  • L’option recursion doit être à yes
  • Nécessite que l’option forward soit définie
  • Permet de définir les adresses IP des serveurs de noms utilisés pour les requêtes récursives à requêter avant les serveurs root
options{
	[...]
        recursion yes;
	forwarders { 208.67.222.222; 208.67.220.220; 8.8.8.8; 8.8.4.4; };
	forward first;
	[...]
};

 


 

listen-on

forwarders { IP-list };

Application : options

  • Définit les adresses IPv4 locales en écoute sur le serveur pour répondre aux requêtes DNS, qu’elles soient itératives ou récursives
  • Par défaut, cette options est à any, c’est-à-dire toutes les interfaces, y compris l’adresse de loopback 127.0.0.1

 


 

masters

masters { IP-list };

Application : zone

  • Ne s’applique qu’aux serveurs DNS secondaires (slave)
  • Définit les adresses IP (éventuellement ports) des serveurs primaires pour la zone concernée, à qui des requêtes de transfert de zones seront envoyées et dont les notifications seront acceptées

 


 

notify

notify yes|no;

Application : zone, view, options
Voir aussi : allow-notify et also-notify

  • Quand une zone a été modifiée, une notification est envoyée aux serveurs de noms (NS) définis dans la zone, sauf à l’émetteur des notifications et au serveur maître défini dans le SOA. En d’autres termes, le master envoie des notifications au slave, mais le slave n’a pas de destinataires potentiels
  • Des notifications peuvent éventuellement être envoyées aux IP définies dans le paramètre also-notify
  • Après avoir reçu une notification, le destinataire envoie une requête DNS à l’émetteur pour vérifier la valeur du SOA
  • Paramètre valable que ce soit sur le DNS master ou le DNS slave
  • Sa valeur par défaut est yes donc les notifications sont actives

 


 

notify-source

notify-source IPv4_address;

Application : zone, view, options
Voir aussi : allow-notify

  • Paramètre propre au serveur DNS master
  • Définit l’interface par laquelle le serveur master envoie ses notifications aux serveurs slaves
  • Cette interface doit apparaître sur les slaves pour le paramètre allow-notify
  • Sa valeur par défaut est *, c’est-à-dire toutes les interfaces du serveur maître

 


 

recursion

recursion yes|no;

Application : view, options
Voir aussi : allow-recursion et allow-query-cache

  • Autorise les requêtes clientes récursives sur le serveur. Auquel cas, si la réponse n’est pas connue du serveur, c’est-à-dire si le serveur n’est pas autoritaire pour la zone concernée, ce dernier agit alors comme un relais et les serveurs racines (root) seront consultés, sauf si des forwarders ont été définis et paramétrés pour être consultés en priorité (forward first ou only).
  • Si la valeur est à yes alors les requêtes sont récursives et itératives et les options allow-recursion et allow-query-cache seront définies automatiquement à localhost et localnets.
  • Si la valeur est à no alors les requêtes seront uniquement itératives et les options allow-recursion et allow-query-cache seront définies automatiquement à none. C’est d’ailleurs le choix à faire pour éviter des attaques DDoS, ou alors n’autoriser que certains réseaux et, pour cela, voir l’option allow-recursion.
  • Par défaut, ce paramètre est à yes et autorise les requêtes récursives.
zone "opensharing.priv" IN {
	[...]
	recursion yes;
	allow-recursion { localhost; localnets; }; # redondant car implicite
	allow-query-cache { localhost; localnets; }; # redondant car implicite
	[...]
};

recursif

 


 

transfer-source

transfer-source IPv4_address;

Application : zone, view, options
Voir aussi : allow-transfer, use-alt-transfer-source et alt-transfer-source

  • Ne s’applique qu’aux serveurs DNS secondaires (slave)
  • Définit l’adresse IP locale du serveur slave utilisée pour les transferts de zones (en TCP) ou pour les requêtes de type refresh (en UDP)
  • L’IP doit avoir été définie sur l’hôte distant pour l’option allow-transfer
  • Il est possible de définir une IP locale alternative, pour cela voir les options use-alt-transfer-source et alt-transfer-source
  • Par défaut, sa valeur est l’IP locale la plus proche de l’hôte distant

 


 

use-alt-transfer-source

use-alt-transfer-source yes|no;

Application : zone, view, options
Voir aussi : allow-transfer, transfer-source et alt-transfer-source

  • Ne s’applique qu’aux serveurs DNS secondaires (slave)
  • Définit si une adresse alternative pour les transferts de zone ou les requêtes refresh sera utilisée via l’option alt-transfer-source
  • Par défaut, sa valeur est à yes, sauf si des clauses view ont été définies
options{
	[...]
        transfer-source 192.168.1.12;
        use-alt-transfer-source yes;
        alt-transfer-source 192.168.1.22;
	[...]
};

 


 

Pour aller plus loin

 

PAPL01

Exemples de clauses

 

Exemple de clause options

DNS master

options {
	directory "/var/cache/bind";
	recursion no;
	allow-query { localhost; localnets; };
	listen-on { localhost; 192.168.1.11; };
};

DNS slave

options {
	directory "/var/cache/bind";
	recursion no;
	allow-query { localhost; localnets; };
	listen-on { localhost; 192.168.1.12; };
};

 

Exemple de clause zone

DNS master

zone "opensharing.priv" IN {
        type master;
        file "/var/cache/bind/db.opensharing.priv";
        allow-transfer { localhost; key "tsig-key"; };
        allow-update { localhost; key "tsig-key"; };
        notify yes;
};

DNS slave

zone "opensharing.priv" IN {
        type slave;
        masters { 192.168.1.11; };
        file "/var/cache/bind/db.opensharing.priv.slv";
        allow-transfer { localhost; };
};

 

Exemple de clause view

DNS master

view "internal" {
        match-clients { localhost; localnets; };
        include "/etc/bind/named.conf.default-zones";
        recursion yes;
	allow-recursion { localhost };
	allow-query { localhost; localnets; };

        zone "opensharing.priv" IN {
                type master;
                file "/var/cache/bind/db.opensharing.priv";
                allow-transfer { localhost; key "tsig-key"; };
                allow-update { localhost; key "tsig-key"; };
                notify yes;
        };

        zone "1.168.192.in-addr.arpa" IN {
                type master;
                file "/var/cache/bind/db.opensharing.priv.inv";
                allow-transfer { localhost; key "tsig-key"; };
                allow-update { localhost; key "tsig-key"; };
                notify yes;
        };
};

view "other" {
        match-clients { any; };
        recursion no;
        allow-query { none; };
};

DNS slave

view "internal" {
        match-clients { localhost; localnets; };
        include "/etc/bind/named.conf.default-zones";
        recursion yes;
	allow-recursion { localhost; localnets; };
	forwarders { 8.8.8.8; 8.8.4.4; };
	forward first;
	allow-query { localhost; localnets; };
	
	zone "opensharing.priv" IN {
        	type slave;
	        masters { 192.168.1.11; };
	        file "/var/cache/bind/db.opensharing.priv.slv";
	        allow-transfer { localhost; };
	};

	zone "1.168.192.in-addr.arpa" IN {
	        type slave;
        	masters { 192.168.1.11; };
	        file "/var/cache/bind/db.opensharing.priv.inv.slv";
	        allow-transfer { localhost; };
	};
};

view "other" {
        match-clients { any; };
        recursion no;
        allow-query { none; };
};  

Rmq : En mode view, donc dès lors que des clauses view ont été définies, toutes les zones doivent appartenir à des clauses view, y compris les zones par défaut comme la zone racine.

/etc/bind/named.conf.default-zones:2: when using 'view' statements, all zones must be in views

 

Exemple de clause controls

DNS master

controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };
};

DNS slave

controls {
        inet * port 953 allow { 127.0.0.1; 192.168.1.11; } keys { "rndc-key"; };
};

 

Exemple de clause server

DNS master

server 192.168.1.12 {
	keys { "tsig-key"; };
};

DNS slave

server 192.168.1.11 {
	keys { "tsig-key"; };
};

 

Exemple de clause logging

Clause implicite par défaut

logging {
	category default { default_syslog; default_debug; };
	category unmatched { null; };
};

Clause personnalisée

logging {
	channel default_file {
        file "/var/log/bind/default.log" versions 3 size 5m;
        severity dynamic;
        print-time yes;
        print-severity yes;
        print-category yes;
	};
	channel queries_file {
        file "/var/log/bind/queries.log" versions 3 size 5m;
        severity dynamic;
        print-severity yes;
        print-category yes;
        print-time yes;
	};
	category default { default_file; default_syslog; default_debug; };
	category queries { queries_file; };
	category unmatched { null; };
};
# mkdir /var/log/bind/
# chown bind:bind /var/log/bind/
# /etc/init.d/bind9 restart

 

Exemple de clause acl

acl "AUTHORIZED_SERVERS" {
	127.0.0.1; 192.168.1.12; !192.168.1.0/24;
};

 

Exemple de clause key

key "rndc-key" {
	algorithm hmac-md5;
	secret "gD3oz9/2pE+zSHLTWcWAe2tTkXyrkVsNOfZxMSU3UPtaMVGIn3KJFkxtWP6uoEjRCFZoq9SvG7G+qLIBuwN2ZA==";
};

 
On peut imaginer, par souci d’organisation et d’administration, de dispatcher les différentes clauses dans des fichiers spécifiques inclus dans le fichier /etc/bind/named.conf :

  • named.conf.options
  • named.conf.views incluant lui-même named.conf.default-zones et named.conf.zones
  • named.conf.servers
  • named.conf.controls
  • named.conf.acls
  • named.conf.loggings
  • named.conf.keys incluant par exemple les fichiers rndc.key et tsig.key

Les définitions de zones ont été déportées du fichier /etc/bind/named.conf.local (vidé) vers le fichier /etc/bind/named.conf.zones.
 
clauses

 


 

Désactiver les messages d’erreur de résolution IPv6

 
Dans les logs, on observe des messages d’erreur relatifs à la résolution de noms en IPv6 car Bind, par défaut, ne se limite pas à l’IPv4 même si les options globales se limitent, elles, à l’IPv4.

08-Jul-2016 13:25:59.086 lame-servers: info: error (network unreachable) resolving 'www.opensharing.fr/A/IN': 2001:500:1::803f:235#53

Pour remédier à cela, il faut forcer Bind à s’exécuter en IPv4.

# nano /lib/systemd/system/bind9.service 
[Unit]
Description=BIND Domain Name Server
Documentation=man:named(8)
After=network.target

[Service]
ExecStart=/usr/sbin/named -4 -f -u bind
ExecReload=/usr/sbin/rndc reload
ExecStop=/usr/sbin/rndc stop

[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# service bind9 restart

Rmq : Inutile de modifier le fichier /etc/default/bind9, il n’est plus utilisé par Bind9.

 


 

Aller encore plus loin

Pour continuer à explorer la configuration de Bind9, voir les articles suivants :

 

Annexes

PAPLxx : fait référence à un sujet développé dans la section Pour aller plus loin
 
 
 

Références

 

Fermer le menu
%d blogueurs aiment cette page :