Configuration
There are many ways to configure BIND9. Some of the most common configurations are a caching nameserver, primary master, and as a secondary master.
-
Quand il est configuré en serveur de noms en mode cache, BIND9 effectuera les résolutions de noms et se souviendra de la réponse lorsque qu'un domaine sera demandé une nouvelle fois.
-
En tant que serveur maitre primaire, BIND9 lit les données d'une zone dans un fichier sur son serveur hôte et il fait autorité pour cette zone.
-
En tant que maitre secondaire, BIND9 obtient les données de la zone depuis le serveur de noms faisant autorité pour la zone.
Aperçu
Les fichiers de configuration DNS sont situés dans le répertoire /etc/bind. Le fichier de configuration de base est /etc/bind/named.conf.
La ligne include spécifie le nom du fichier contenant les options DNS. La ligne directory dans le fichier /etc/bind/named.conf.options indique au DNS où chercher les fichiers. Tous les fichiers utilisés par BIND seront relatifs à ce répertoire.
Le fichier /etc/bind/db.root décrit les serveurs DNS racines mondiaux. Les serveurs changeant de temps à autre, il est nécessaire de mettre à jour ce fichier de temps en temps. Ceci est généralement effectué par des mises à jour du paquet bind9. La section zone définit le serveur maitre, et est stockée dans le fichier spécifié par l'option file.
Il est possible de configurer un unique serveur comme serveur de noms en mode cache, maitre primaire et maitre secondaire. Un serveur peut faire autorité sur une zone (Start of Authority, SOA), tout en fournissant un service secondaire pour une autre zone, et en fournissant des services de cache pour les hôtes sur le LAN local.
Serveur de noms de cache
La configuration par défaut alloue un rôle de serveur cache. Il vous suffit d'ajouter les adresses IP des DNS de votre FAI. Dé-commentez simplement et modifiez ce qui suit dans /etc/bind/named.conf.options :
forwarders { 1.2.3.4; 5.6.7.8; };
Remplacez 1.2.3.4 et 5.6.7.8 par les adresses IP des véritables serveurs de noms.
Redémarrez à présent le serveur DNS pour appliquer les changements. Saisissez dans un terminal :
sudo systemctl restart bind9.service
Consultez dig pour plus d'informations à propos d'un serveur DNS cache.
Maitre primaire
Dans cette section, BIND9 sera configuré comme serveur primaire du domaine example.com. Remplacez example.com par votre FQDN (Fully Qualified Domain Name).
Fichier zone de recherche directe (Forward zone)
Pour ajouter une zone DNS à BIND9 afin de le transformer en serveur maitre primaire, il faut tout d'abord modifier /etc/bind/named.conf.local :
zone "example.com" { type master; file "/etc/bind/db.example.com"; };
(Note, if bind will be receiving automatic updates to the file as with DDNS, then use /var/lib/bind/db.example.com rather than /etc/bind/db.example.com both here and in the copy command below.)
Nous utiliserons un fichier zone existant comme modèle pour la création du fichier /etc/bind/db.example.com :
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Edit the new zone file /etc/bind/db.example.com change localhost. to the FQDN of your server, leaving the additional "." at the end. Change 127.0.0.1 to the nameserver's IP Address and root.localhost to a valid email address, but with a "." instead of the usual "@" symbol, again leaving the "." at the end. Change the comment to indicate the domain that this file is for.
Créer un enregistrement A pour le domaine de base, exemple.com. Également, créer un enregistrement A pour ns.exemple.com, le serveur de noms dans cet exemple :
; ; BIND data file for example.com ; $TTL 604800 @ IN SOA example.com. root.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL IN A 192.168.1.10 ; @ IN NS ns.example.com. @ IN A 192.168.1.10 @ IN AAAA ::1 ns IN A 192.168.1.10
Vous devez incrémenter le numéro de série (Serial Number) à chaque fois que vous modifiez le fichier de zone. Si vous faites de multiples modifications en seule fois, n'incrémentez le numéro qu'une seule fois.
Vous pouvez ajouter maintenant les enregistrements DNS à la fin du fichier de zone. Consultez Types d'enregistrement communs pour plus de détails.
Many admins like to use the last date edited as the serial of a zone, such as 2012010100 which is yyyymmddss (where ss is the Serial Number)
Une fois les modifications apportées au fichier de zone, BIND9 doit être redémarré pour que les changements soient pris en compte :
sudo systemctl restart bind9.service
Fichier zone de recherche inverse
Maintenant que la zone est configurée pour résoudre les noms en adresses IP, il est nécessaire de paramétrer la zone de recherche inverse (Reverse zone). Celle-ci permet de résoudre les adresses IP en noms.
Modifiez /etc/bind/named.conf.local et ajoutez ce qui suit :
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; };
Remplacez 1.168.192 par les trois premiers octets du réseau que vous utilisez. Nommez également le fichier de zone /etc/bind/db.192 en conséquence. Il devrait correspondre au premier octet de votre réseau.
Créez maintenant le fichier /etc/bind/db.192 :
sudo cp /etc/bind/db.127 /etc/bind/db.192
Modifiez ensuite /etc/bind/db.192 en changeant les mêmes options que dans /etc/bind/db.example.com :
; ; BIND reverse data file for local 192.168.1.XXX net ; $TTL 604800 @ IN SOA ns.example.com. root.example.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns. 10 IN PTR ns.example.com.
The Serial Number in the Reverse zone needs to be incremented on each change as well. For each A record you configure in /etc/bind/db.example.com, that is for a different address, you need to create a PTR record in /etc/bind/db.192.
Après avoir créé le fichier de zone de recherche inverse, redémarrez BIND9 :
sudo systemctl restart bind9.service
Maitre secondaire
Une fois que le maitre primaire est paramétré il faut configurer un maitre secondaire afin de maintenir la disponibilité du domaine en cas d'indisponibilité du serveur primaire.
Nous devons tout d'abord autoriser le transfert de zone sur le serveur maitre primaire. Ajoutez l'option allow-transfer dans les exemples de définitions de zone de recherche directe et inverse du fichier /etc/bind/named.conf.local :
zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 192.168.1.11; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; allow-transfer { 192.168.1.11; }; };
Remplacez 192.168.1.11 par l'adresse IP de votre serveur de noms secondaire.
Restart BIND9 on the Primary Master:
sudo systemctl restart bind9.service
Installez ensuite le paquet bind9 sur votre serveur maitre secondaire de la même manière que pour le serveur primaire. Puis modifiez le fichier /etc/bind/named.conf.local et ajoutez les déclarations suivantes pour les zones de recherche directe et inverse :
zone "example.com" { type slave; file "db.example.com"; masters { 192.168.1.10; }; }; zone "1.168.192.in-addr.arpa" { type slave; file "db.192"; masters { 192.168.1.10; }; };
Remplacez 192.168.1.10 par l'adresse IP de votre serveur de noms primaire.
Redémarrez BIND9 sur votre serveur maître secondaire :
sudo systemctl restart bind9.service
Dans /var/log/syslog, vous devriez voir quelque chose de semblable à (certaines lignes ont été scindées afin de les adapter au format du document) :
client 192.168.1.10#39448: received notify for zone '1.168.192.in-addr.arpa' zone 1.168.192.in-addr.arpa/IN: Transfer started. transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53: connected using 192.168.1.11#37531 zone 1.168.192.in-addr.arpa/IN: transferred serial 5 transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53: Transfer completed: 1 messages, 6 records, 212 bytes, 0.002 secs (106000 bytes/sec) zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 5) client 192.168.1.10#20329: received notify for zone 'example.com' zone example.com/IN: Transfer started. transfer of 'example.com/IN' from 192.168.1.10#53: connected using 192.168.1.11#38577 zone example.com/IN: transferred serial 5 transfer of 'example.com/IN' from 192.168.1.10#53: Transfer completed: 1 messages, 8 records, 225 bytes, 0.002 secs (112500 bytes/sec)
Note: A zone is only transferred if the Serial Number on the Primary is larger than the one on the Secondary. If you want to have your Primary Master DNS notifying Secondary DNS Servers of zone changes, you can add also-notify { ipaddress; }; in to /etc/bind/named.conf.local as shown in the example below:
zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 192.168.1.11; }; also-notify { 192.168.1.11; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; allow-transfer { 192.168.1.11; }; also-notify { 192.168.1.11; }; };
The default directory for non-authoritative zone files is /var/cache/bind/. This directory is also configured in AppArmor to allow the named daemon to write to it. For more information on AppArmor see AppArmor.