Plan de reprise d'activité du service de DNS local 🔗

Posted by Médéric Ribreux 🗓 In kb/drp/debianplug/

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

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

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