Introduction

Le service de DNS local est assuré par Bind. Il permet de relayer les requêtes DNS vers les serveurs appropriés (service DNS de routage (DNS forwarding)). De plus, il offre un service de nommage local sur un domaine uniquement disponible sur le réseau local. Il permet d'offrir la résolution de noms à l'ensemble des clients du réseau local.

Ce service est critique car lors de son arrêt, l'accès à Internet par les mécanismes simples est rendu impossible (même si la connectivité IP est correcte).

Information Caractéristiques
Site web origine https://www.isc.org/downloads/bind/
Version installée 9.8.4
Code C
Paquet bind9

Pré-requis

  • Pour la réinstallation de Bind, une connexion à Internet est indispensable, ne serait-ce que pour télécharger les paquets d'installation.
  • Bind est destiné à être installé sur une distribution Debian Wheezy de base.

Installation des paquets

Voici la commande complète qui permet de réinstaller les paquets indispensables au fonctionnement de bind.

# aptitude install -R bind9 bind9utils

Répertoires concernés

  • L'ensemble de la configuration du service bind9 est disponible dans /etc/bind/.
  • La zone locale concerne le domaine .ici, uniquement disponible sur le LAN.
  • Il existe un répertoire de cache disponible dans /var/cache/bind/.
  • Les logs sont stockés dans /var/log/bind/. Le répertoire doit être accessible à l'utilisateur bind.
  • Bind fait appel à des fichiers de zone dont voici la description:
    • /etc/bind/db.0 : Zone locale de broadcast.
    • /etc/bind/db.127 : Zone pour la résolution inverse de l'adresse loopback des clients mal configurés.
    • /etc/bind/db.192.168.0 : zone reverse DNS locale (pour le domaine .ici)
    • /etc/bind/db.255 : Zone locale de broadcast.
    • /etc/bind/db.ici : zone DNS locale pour le domaine .ici.
    • /etc/bind/db.local : zone DNS pour les clients mal configurés qui font une résolution de nom sur localhost.
    • /etc/bind/db.root : zone DNS spéciale qui contient les adresses IP des serveurs DNS racine.

Restauration

Le seul élément à restaurer est la configuration de Bind. Se réferrer à la procédure de restauration générique pour y parvenir.

# obnam restore /etc/bind /tmp/
# mv /tmp/bind /etc/
# mkdir /var/log/bind/
# chown -R bind:bind /var/log/bind
# service bind9 restart

Configuration générale de Bind

Normalement la configuration est restaurée lors de l'opération précédente. En cas de problèmes, on pourra s'appuyer sur la suivante. Tout est concentré dans un seul fichier de configuration stocké dans /etc/bind/named.conf.

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

acl reseau_local { 192.168.0.0/24; };

controls { };

// Don't forget to add the keys for DNSSEC:
include "/etc/bind/bind.keys";

options {
        listen-on { 127.0.0.1; 192.168.0.4; };
        port 53;
        directory "/var/cache/bind";

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys                                                                                                              
        //========================================================================
        dnssec-validation auto;
        auth-nxdomain no; # conform to RFC1035
        listen-on-v6 { ::1; };
        recursion yes;
};

// Logging configuration
logging {
        channel security_warning {
                file "/var/log/bind/security.log" versions 3 size 100k;
                severity warning;
                print-severity yes;
                print-time yes;
        };

        channel client_info {
                file "/var/log/bind/requests.log" versions 2 size 10m;
                severity info;
                print-severity yes;
                print-time yes;
        };

        channel bind_log {
                file "/var/log/bind/bind.log" versions 3 size 1m;
                severity info;
                print-category yes;
                print-severity yes;
                print-time yes;
        };

        category default { bind_log; };
        category client { client_info; };
        category resolver { client_info; };
        category queries { client_info; };
        category lame-servers { null; };
        category update { null; };
        category update-security { null; };
        category security { security_warning; }; 
};

// Définitions des zones
zone "ici" {
  type master;
  file "/etc/bind/db.ici";
  allow-query { localhost; reseau_local; };
  allow-update { none; };
};

zone "0.168.192.in-addr.arpa" {
  type master;
  file "/etc/bind/db.192.168.0";
  allow-query { localhost; reseau_local; };

// prime the server with knowledge of the root servers
zone "." {
  type hint;
  file "/etc/bind/db.root";
};

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


// Include empty zones for RFC 1918 DNS queries (from fucked clients)
include "/etc/bind/zones.rfc1918";

Fichiers de zone

Voici les fichiers de zone locale. Ils sont normalement restaurés lors des précédentes opérations. Voici leur contenu juste pour rappel.

Fichier /etc/bind/db.ici:

;
; Fichier de zone du réseau local ici.
;
$TTL 1d
@ IN SOA ici. mederic.ribreux.medspx.fr. (
         201401071 ; Serial
            604800 ; Refresh
             86400 ; Retry
           2419200 ; Expire
          604800 ) ; Negative Cache TTL
;
@ IN NS debianplug.ici.
debianplug IN A 192.168.0.4
madamem IN A 192.168.0.6
medspxtower IN A 192.168.0.7
hp6840 IN A 192.168.0.5
trick IN A 192.168.0.8
goofy IN A 192.168.0.9
debianbox IN A 192.168.0.11
medeeepc IN A 192.168.0.13
martintab IN A 192.168.0.14
paulinepc IN A 192.168.0.15 

Fichier /etc/bind/db.192.168.0:

;
; Fichier de configuration de la zone DNS inverse locale
;
$TTL 3d
0.168.192.in-addr.arpa. IN SOA debianplug.ici. mederic.ribreux.medspx.fr. (
                  2014013101 ;Serial Number
                  8H ;refresh
                  2H ;retry
                  4W ;expire
                  1D)
@ IN NS debianplug.ici.

4 IN PTR debianplug.ici.
5 IN PTR hp6840.ici.
6 IN PTR madamem.ici.
7 IN PTR medspxtower.ici.
8 IN PTR trick.ici.
9 IN PTR goofy.ici.
11 IN PTR debianbox.ici.
13 IN PTR medeeepc.ici.
14 IN PTR martintab.ici.
15 IN PTR paulinepc.ici.

Procédure de vérification du service

  • Obtenir une adresse IP sur le réseau local (LAN ethernet ou Wifi).
  • Faire une résolution de noms: $ host linuxfr.org et voir si l'on a une réponse.