Installer un serveur DNS avec Bind9

Installer Bind9

1
$ sudo apt-get install bind9

Fichier de configuration de Bind9

Les fichiers de configuration se trouve dans : /etc/bind/

  • named.conf.default-zone contient les zones par défaut : forward, reverse et broadcast.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // be authoritative for the localhost forward and reverse zones, and for
    // broadcast zones as per RFC 1912
    zone "localhost" {
    type master;
    file "/etc/bind/db.local";
    };
    zone "127.in-addr.arpa" {
    type master;
    file "/etc/bind/db.127";
    };
    zone "0.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0";
    };
    zone "255.in-addr.arpa" {
    type master;
    file "/etc/bind/db.255";
    };
    zone "example.domainename.net" {
    type master;
    file "/etc/bind/db.example.domainename.net";
    }
  • named.conf.option contient l’ensemble des options de configurations du serveur DNS.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    options {
    directory "/etc/bind/";

    // Port d'échange entre les serveurs DNS
    //query-source address * port *;

    // Transmettre les requêtes à 192.168.1.1 si ce serveur ne sait pas résoudre ces adresses.
    // On pourrait aussi bien renseigner les serveurs DNS du FAI plutôt que de renseigner
    // l'adresse IP du routeur (xxxbox)
    //forward only;
    //forwarders { 192.168.1.1; }; //ou 8.8.8.8 pour garder un accès à internet

    auth-nxdomain no; # conform to RFC1035

    // À partir de 9.9.5 ARM, désactiver le scan des interfaces pour éviter l'arrêt inopiné de l'écoute
    interface-interval 0;
    // Ecouter sur les interfaces locales uniquement (IPV4)
    //listen-on-v6 { none; };
    //listen-on-v6 { any; };
    //listen-on { 127.0.0.1; 192.168.0.1; };
    listen-on { any; };

    // Ne pas transférer les informations de zones aux DNS secondaires
    allow-transfer { none; };

    // Accepter les requêtes pour le réseau interne uniquement
    allow-query { internals; };

    // Autoriser les requêtes récursives pour les hôtes locaux
    allow-recursion { internals; };

    // Ne pas rendre publique la version de BIND
    version none;

    pid-file "/var/run/named.pid";

    };

    Création du fichier Ressources Records (RR)

Un DNS est constitué de plusieurs enregistrements, les RR ou Ressources Records, définissant les diverses informations relatives au domaine. Le premier enregistrement est consacré à la résolution de noms, dans notre cas, il s’agit du fichier db.example.domainename.net. Le second sera quant à lui en rapport avec la résolution de noms inverses ; il s’agit du fichier db.example.domainename.net.inv.

Créer le fichier db.example.domainename.net dans /etc/bind/ :

Zone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$TTL    3600
@ IN SOA sid.example.domainename.net. root.example.domainename.net. (
2007010401 ; Serial //date du jour
3600 ; Refresh [1h]
600 ; Retry [10m]
86400 ; Expire [1d]
600 ) ; Negative Cache TTL [1h]
;
@ IN NS sid.example.domainename.net.

sid IN A 192.168.0.1
pc IN A 192.168.0.110

// rajouter les services, exemple serveur web :
www IN CNAME sid

Quelques explications :

  • $TTL: (Time To Live) exprime la duree (en secondes) de validité, par défaut, des informations que contiennent les RRs. Une fois ce délai expiré, il est nécessaire de vérifier à nouveau les données. Les différents types :

  • SOA: permet de définir les informations relatives à la zone. En l’occurrence le nom du serveur DNS primaire "sid.example.domainename.net." et l’adresse mail du contact technique (root.example.domainename.net. ; le @ est remplace par un point). Il est compose de plusieurs champs :

    1. Serial : est un entier non signé 32 bits. C’est le numéro de série à incrémenter à chaque modification du fichier. Il permet au serveur secondaire de recharger les informations qu’ils ont. L’usage général vient à le formater de cette manière YYYYMMDDXX, soit pour la première modification du 01/04/2007 -> 2007040101, pour la seconde 2007040102.

    2. Refresh : définit la période de rafraîchissement des données.

    3. Retry : si une erreur survient au cours du dernier rafraîchissement, celle-ci sera répétée au bout du délai Retry.

    4. *Expire *: le serveur sera considéré comme non disponible au bout du délai Expire.

    5. Negative cache TTL : définit la durée de vie d’une réponse NXDOMAIN de notre part.

  • NS : renseigne le nom des serveurs de noms pour le domaine.

  • MX : renseigne sur le serveur de messagerie. Plusieurs peuvent être définis. Ainsi, il est possible de leur donner une priorité en leur affectant un numéro. Plus bas est le numéro, plus haute est la priorité.

  • A : associe une nom d’hôte à une adresse ipv4 (32 bits)

  • AAAA : associe une nom d’hôte à une adresse ipv6 (128 bits)

  • CNAME : identifie le nom canonique d’un alias (un nom pointant sur un autre nom)

  • PTR : c’est simplement la résolution inverse (le contraire du type A).

Les classes : IN determine l’association a la classe Internet. D’autres classes sont disponibles (CH et HS). Pour de plus amples informations vous pouvez consulter la RFC 1035.

Modification du fichier resolv.conf

Ce fichier indique au système le serveur DNS à utiliser.

Dans /etc/resolv.conf :

1
2
nameserver 192.168.0.1 // @IP du serveur DNS
search example.domainename.net

Vérification des configurations

1
2
3
4
root@root# named-checkconf /etc/bind/named.conf
root@root# named-checkzone example.domainename.net /etc/bind/db.example.domainename.net
zone example.domainename.net/IN: loaded serial 2007010401
OK

utiliser nslookup pour voir si le serveur DNS arrive à repondre aux requêtes et ping

Quelques infos

  • Pour connaitre le nom du pc : cat /etc/hostname
  • Attribuer des noms d’hôtes à chacune des adresses IP dans /etc/hosts
  • Activer le mode debug de bind : /usr/sbin/named -d9 -g -u bind
  • Sur Windows, ne pas oublier de vider le cache : ipconfig /flushdns
⬆︎TOP