Le système de noms de domaine, ou DNS, est l’un des éléments fondamentaux de l’Internet. C’est la base de données d’informations sur les hôtes globales, hiérarchiques et distribuées qui est chargée de la traduction des noms en adresses et inversement. BIND pour Berkeley Internet Name Domain est une implémentation des protocoles DNS et fournit une implémentation de référence ouvertement redistribuable des principaux composants du système de noms de domaine.
Installer Bind9
Directement sur votre machine :
# apt install bind9-doc |
Fichiers de configuration
Le dossier /etc/bind
contient :
# ls -l /etc/bind/ |
Fichiers concernant la sécurité :
- bind.keys : utilisé pour DNSSEC
- rndc.key : utilisé pour les clés RNDC permettant de commander le serveur à distance
Fichiers concernant la définitions des zones de bases :
- db.0 : zone reverse locale de broadcast
- db.127 : zone reverse locale
- db.255 : zone reverse locale de broadcast
- db.empty : zone “vide” utilisé pour ce qui n’existe pas (cas des réseaux locaux inexistant)
- db.local : zone directe locale
- db.root : références vers les serveurs DNS racine
Fichiers concernant le fonctionnement de Bind :
- named.conf : configuration globale qui définit les fichiers à prendre en compte
- named.conf.default-zones : configuration qui définit les fichiers de zones à prendre en compte par défaut
- named.conf.local : configuration pour les zones de type réseau local
- named.conf.options : les options de Bind
- zones.rfc1918 : la liste des réseaux à considérer comme non existant (liste selon RFC1918)
Nous allons voir plus loin le détail de chaque fichier
Ressources Records
Bind contient les fichiers hosts de chaque site qu’il gère dans le dossier /var/lib/bind
. Selon la configuration, Bind peut utiliser un autre dossier pour ces RRS (Ressources Records) :
# vi /var/lib/bind/ |
-rw-r--r-- 1 root root 285 12 janv. 2012 monsite1.com.hosts |
Le dossier cible est à définir dans le named.conf.options
Fichiers de configuration – Détails
Le fichier named.conf
Ce fichier contient la configuration générale de BIND, il en inclut 3 autres :
# vi /etc/bind/named.conf |
// This is the primary configuration file for the BIND DNS server named. |
Les fichiers de configurations inclus dans named.conf
sont :
- /etc/bind/named.conf.options
- /etc/bind/named.conf.local
- /etc/bind/named.conf.default-zones
Le fichier named.conf.options
Ce fichier contient les options de Bind :
# vi /etc/bind/named.conf.options |
options { |
options { Définie les options globales de Bind. Cette déclaration doit apparaître qu’une seule fois par fichier de configuration.
directory path_name; Indique à Bind où se situent les RRs (Ressources Records)
auth-nxdomain yes_or_no;
- Si la valeur est à yes : Le bit AA sera toujours fixé à NXDOMAIN responses, même si le serveur ne fait pas autorité. A utiliser également dans le cas de l’utilisation d’un très vieux logiciel DNS
- Si la valeur est à no : Modification depuis la version 8 de Bind.
listen-on [port ip_port] {address_match_list}; / listen-on-v6 [port ip_port] {address_match_list }; Interfaces et ports sur lesquels le serveur échanges les requêtes. Le port est optionnel, par défaut le serveur écoutera le port 53. Si aucune interface n’est spécifiée le serveur les écoutera toutes en utilisant le port 53.
allow-recursion { address_match_list }; Indique quels hôtes sont autorisés à envoyer des requêtes via le serveur. (Évitera au serveur de devenir un serveur DNS relais)
allow-recursion-on { address_match_list }; Détermine quelle adresse locale peut accepter les requêtes récursives. Si rien n’est spécifié BIND acceptera toutes les requêtes récursives.
- Liste des options (Chapitre 6 du manuel) : Manuel Bind9
Le fichier named.conf.default-zones
Ce fichier contient toutes les zones à prendre en compte par défaut.
# vi /etc/bind/named.conf.default-zones |
// prime the server with knowledge of the root servers |
Une zone peut-être de type master, slave, forward ou stub.
- hint : Désigne un serveur racine
- master : Bind fait autorité sur la zone
- slave : Bind ne fait pas autorité sur la zone
- forward : Bind redirige les requêtes de la zone vers un autre serveur DNS
- stub : Bind ne fait pas autorité sur la zone et réplique uniquement les serveurs de noms
- delegation-only : Zone de délégation
Ici nous avons 5 zones prédéfinies :
**zone “.“ ** qui appelle
/etc/bind/db.root
qui contient les RRs pour les serveurs racineszone “localhost“ qui appelle
/etc/bind/db.local
qui contient l’enregistrement pour le loopbackzone “127.in-addr.arpa“ qui appelle
/etc/bind/db.127
qui contient le pointer recordzone “0.in-addr.arpa“ qui appelle
/etc/bind/db.0
et contient un RR pour le localhostzone “255.in-addr.arpa“ qui appelle
/etc/bind/db.255
qui contient et contient un RR pour le localhost
Le fichier /etc/bind/db.root
Le fichier /etc/bind/db.root
est appelé par la zone “.” (zone racine) et contient les RRs pour les serveurs racines (de A à M) :
# vi /etc/bind/bd.root |
[...] |
Soit 13 serveurs racines.
Le fichier /etc/bind/db.local
Le fichier /etc/bind/db.local
est appelé par la zone localhost
et contient l’enregistrement pour le loopback, pour que l’hôte puisse communiquer avec lui-même. L’adresse est toujours 127.0.0.1
avec pour nom localhost.
# vi /etc/bind/db.local |
// |
Chaque serveur de noms est responsable de lui même. Si db.local
et db.127.0.0
n’existent pas, une recherche vers localhost
ou 127.0.0.1
échouera : le serveur de la racine contacté ne trouvera pas l’adresse de localhost ni faire correspondre 127.0.0.1
.
Le fichier /etc/bind/db.127
Le fichier /etc/bind/db.127
est appelé par la zone 127.in-addr.arpa
(désigne la zone locale reverse) et contient le pointer record :
# vi /etc/bind/db.127/ |
// |
PTR record ou pointer record : associe une adresse IP à un enregistrement de nom de domaine, aussi dit « reverse » puisqu’il fait exactement le contraire du A record.
Chaque serveur de noms est responsable de lui même. Si db.local
et db.127.0.0
n’existent pas, une recherche vers localhost
ou 127.0.0.1
échouera : le serveur de la racine contacté ne trouvera pas l’adresse de localhost ni faire correspondre 127.0.0.1
.
Le fichier /etc/bind/db.0
Le fichier /etc/bind/db.0
est appelé par la zone 0.in-addr.arpa
(désigne la zone locale broadcast) et contient un RR :
# vi /etc/bind/db.0 |
// |
Le fichier /etc/bind/db.255
Le fichier /etc/bind/db.255
est appelé par la zone 255.in-addr.arpa
(désigne la zone locale broadcast) et contient un RR :
# vi /etc/bind/db.255 |
// |
Le fichier named.conf.local
Le fichier named.conf.local
contient les détails de chaque zone.
# vi /etc/bind/named.conf |
// Do any local configuration here |
C’est ici qu’on rajoute une zone.
Le fichier zones.rfc1918
Correspond aux définitions des réseaux privés de classes A, B et C et fait appel à /etc/bind/db.empty
# vi /etc/bind/zones.rfc1918 |
zone "10.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; |
(Obligatoire pour respecter une norme RFC1918)
Le fichier db.empty
Est appelé par zones.rfc1918
# vi /etc/bind/db.empty |
// BIND reverse data file for empty rfc1918 zone |
(Obligatoire pour respecter une norme RFC1918)
Le fichier rndc.key
Ce fichier défini la clé RNDC du serveur pour filtrer l’accès au serveur.
# vi /etc/bind/rndc.key |
key "rndc-key" { |
BIND contient l’utilitaire rndc permettant d’administrer en ligne de commandes le démon named à partir de l’hôte local ou d’un hôte distant. BIND utilise une méthode d’authentification à clé secrète pour empêcher l’accès non-autorisé à named depuis un hôte.
Le fichier bind.keys
Ce fichier est utilisé dans le cadre des DNSSEC
# vi /etc/bind/bind.keys |
/* #Id: bind.keys,v 1.5.42.2 2011-01-04 19:14:48 each Exp # */ |
DNSSEC : DNS Secure
Ajouter des commentaires dans BIND
Il existe 3 façons pour mettre du commentaire dans les fichiers de BIND et peuvent être écrit n’importe où.
Commentaire semblable au langade C (avec /* et */)
/* Commentaire dans BIND semblable au langage C */ |
Commentaire semblable au langage C++ (avec //)
// Commentaire dans BIND semblable au langage C++ |
Commentaire semblable au langage Shell (avec #)
# Commentaire dans BIND semblable au langage Shell |
Il existe aussi le “;” notamment utilisé dans les RRs
Création d’un nouvel enregistrement DNS
Création d’une nouvelle zone DNS
Il suffit d’éditer le fichier /etc/bind/named.conf.local
et de rajouter une zone :
# vi /etc/bind/named.conf.local |
zone "monsite42.com" { |
Et de créer le fichier hosts correspondant
Créations de fichier hosts
Il faut créer un fichier dans /var/lib/bind/
que nous appellerons monsite42.com.hosts par exemple.
Celui-ci doit contenir des informations pour les serveurs DNS (entre autres).
# vi /var/lib/bind/monsite42.com.hosts |
#ttl 86400 |
- ttl : Durée de validité d’un enregistrement. (Par défaut : 86400 sec.)
- IN : Classe correspondant aux protocoles d’Internet
- SOA (Start Of Authority) : Permet de décrire le serveur de nom ayant autorité sur la zone et l’adresse électronique du contact technique.
- postmaster : E-mail de l’administrateur du domaine (sans @)
- Serial : Numéro de série, permet au serveur secondaire de se mettre à jour si nécessaire. Par convention yyyymmdd + numéro de la modification
- Refresh : Fréquence à laquelle le serveur secondaire va consulter le serveur primaire. (Par défaut : 21600 sec.)
- Retry : Délai au bout duquel il consulte une deuxième fois le serveur primaire si ce dernier n’a pas répondu au refresh. (Par défaut : 3600 sec.)
- Expire : Durée après laquelle il considérera que le serveur primaire n’est plus accessible
- Minimum TTL : Durée de vie minimum du cache. (Par défaut : 86400 sec.)
- NS : Serveur de noms ( primaire, secondaire,…)
- A : Adresse IP
- MX : Le serveur de messagerie
- CNAME : (Canonical name) Pour ajouter des alias
Documentation
http://www.isc.org/software/bind
http://www.bind9.net/manuals
http://wiki.goldzoneweb.info/configuration_et_optimisations_de_bind
http://www.afnic.fr/fr/produits-et-services/services/zonecheck
http://centosadmin.net/dns-primaire-bind-fichiers-zones
https://guides.web4all.fr/display/GDDA/Installation+d%27un+serveur+DNS+Bind