1 Implantation

Bind9MasterSlave_implantation.png

/!\ TODO Mettre à jour l'implantation réseau

L'implantation du schéma ci-dessus se fait dans le cadre d'un réseau local. Elle ne fait que reprendre les points abordés dans les pages suivantes:

2 Configuration de ns1

2.1 Bind9

2.1.1 Fichier named.conf

// Gérer les acls
acl internals { 127.0.0.0/8; 192.168.0.0/24; 192.168.10.0/24; };

// Charger les options générales
include "/etc/bind/named.conf.options";

// Déclaration de la clef pour autoriser l'update DNS pour apcb.lan
// par les serveurs DHCPs, et aussi utiliser pour les requetes de transaction
// de zones sur le domaine local
include "/etc/bind/ns-apcb-lan_rndc-key";

// Déclaration de la clef pour les requetes de transaction de zones de
// estar.lan
include "/etc/bind/ns-estar-lan_rndc-key";

// Configurer le canal de communication pour administrer BIND9 avec rndc
// Par défaut, la clef est situé dans le fichier rndc.key et utiliser par
// rndc et bind9 sur localhost
controls {
         inet 127.0.0.1 port 953 allow { 127.0.0.1; };
};

// Le serveur primaire 192.168.0.1 -> ns1.apcb.lan
// fourni du transfert de zone incremental (IXFR)
// Toute transactions avec le serveur 192.168.0.253
// -> ns2.apcb.lan se fait avec l'utilisation de la
// clef ns-apcb-lan_rndc-key
server 192.168.0.1 {
       provide-ixfr yes;
       request-ixfr yes;
};

server 192.168.0.253 {
        keys { ns-apcb-lan_rndc-key; };
};

// Les mises à jour du domaine estar.lan se font par transactions signés via la clef
// ns-estar-lan_rndc-key en provenance de 192.168.10.4 (ns1.estar.lan)
server 192.168.10.4 {
        keys { ns-estar-lan_rndc-key; };
};

// Configurer le canal de communication pour administrer BIND9 avec rndc
// utilisé par rndc et bind9 sur localhost
controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } ; };

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

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

include "/etc/bind/named.conf.local";

2.1.3 Fichier named.conf.log

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

        category default { bind_log; };
        category lame-servers { null; };
        category update { update_debug; };
        category update-security { update_debug; };
        category security { security_info; };
}

2.1.4 Fichier named.conf.options

 options {
        directory "/var/cache/bind";

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

        // Transmettre les requêtes aux DNS orange
        // dans le cas où ce serveur ne sait pas résoudre ces adresses
        forward only;
        forwarders { 194.2.0.20; 194.2.0.50; };

        auth-nxdomain no;    # conform to RFC1035

        // Ecouter sur les interfaces locales uniquement (IPV4)
        listen-on-v6 { none; };
        listen-on { 127.0.0.1; 192.168.0.1; };

        // Transférer les zones aux DNS secondaires 192.168.10.253
        allow-transfer { 192.168.0.253; };

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

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

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

2.1.5 Fichier zones.apcb.lan

zone "apcb.lan" {
        type master;
        file "/var/cache/bind/db.apcb.lan";

        // Aucun forwarder pour cette zone
        forwarders {};

        // Autoriser la mise à jour dynamique si authentifié
        allow-update { key ns-apcb-lan_rndc-key; };

        // Autoriser le transfert de cette zone vers le DNS secondaire
       allow-transfer { 192.168.0.253; };

        notify yes;
};

zone "0.168.192.in-addr.arpa" {
        type master;
        file "/var/cache/bind/db.apcb.lan.inv";

        // Aucun forwarder pour cette zone
        forwarders {};

        // Autoriser la mise à jour dynamique si authentifié
        allow-update { key ns-apcb-lan_rndc-key; };

        // Autoriser le transfert de cette zone vers le DNS secondaire
        allow-transfer { 192.168.0.253; };

        notify yes;
};

2.1.6 Fichier zones.estar.lan

zone "estar.lan" {
        type slave;
        file "/var/cache/bind/db.estar.lan";

        forwarders {};

        masters { 192.168.10.4; };
        allow-notify { 192.168.10.4; };
};

zone "10.168.192.in-addr.arpa" {
        type slave;
        file "/var/cache/bind/db.estar.lan.inv";

        forwarders {};

        masters { 192.168.10.4; };
        allow-notify { 192.168.10.4; };
};

2.2 DCHP3 - dhcpd.conf

# Options diverses
# -----------------------------------------------------------------------------
# Déclarer le serveur DHCP en tant que master
authoritative;

# Refuser les adressses mac en double
deny duplicates;

# Refuser les messages DHCPDECLINE indiquant un conflit réseau.
ignore declines;

# Enregistrer uniquement le nom d'hôte si le FQDN n'est pas géré par le
# serveur
ignore client-updates;

# Définir le serveur de temps local
option ntp-servers 192.168.0.1;

# Gestion DNS
# -----------------------------------------------------------------------------
# Lister les serveurs DNS pour le réseau
option domain-name-servers 192.168.0.1, 192.168.0.253;

# Mettre à jour les DNS à l'aide de DHCP
ddns-update-style interim;
ddns-updates on;

# Charger la signature (TSIG) pour pouvoir autoriser les transactions avec BIND
include "/etc/bind/ns-apcb-lan_rndc-key";

# Gestion du failover
# -----------------------------------------------------------------------------
# La mise en place du failover permet de définir deux serveurs DHCPs afin de
# gérer la continuité de services et l'équilibrage de charge
# Ici, le serveur primaire est 192.168.0.1 et le secondaire 192.168.0.253
failover peer "dhcp_failover" {
  primary;
  address 192.168.0.1;
  port 519;
  peer address 192.168.0.253;
  peer port 519;
  max-response-delay 30;
  max-unacked-updates 10;
  load balance max seconds 3;
  mclt 1800;
  split 128;
}

# Déclaration à utiliser pour initialiser le failover
# failover peer "dhcp_failover" state {
#   my state partner-down;
# }

# Définition des sous réseaux
# -----------------------------------------------------------------------------
subnet 192.168.0.0 netmask 255.255.255.0 {

  # Lister les options du réseau
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.253;
  option netbios-name-servers 192.168.0.1;
  option netbios-node-type 8;

  # Gestion de la zone DNS "apcb.lan"
  # -----------------------------------
  # Associer un nom de domaine pour la zone
  option domain-name "apcb.lan";

  # Gérer l'update DNS (le reverse est fait par défaut)
  ddns-domainname "apcb.lan";

  # Définir les zones DNS que DHCP doit mettre à jour
  zone apcb.lan. {
    primary 192.168.0.1;
    key ns-apcb-lan_rndc-key;
  }

  zone 0.168.192.in-addr.arpa.
  {
    primary 192.168.0.1;
    key ns-apcb-lan_rndc-key;
  }

  # Gestion de la pool
  # ------------------------------
  pool {
    failover peer "dhcp_failover";
    deny dynamic bootp clients;

    range 192.168.0.80 192.168.0.160;

    default-lease-time 43200;
    max-lease-time 86400;
  }
}

3 Configuration de ns2

3.1 Bind9

3.1.1 Fichier named.conf

// Gér les ACLs
acl internals { 127.0.0.1/8; 192.168.0.0/24; };

// Charger les options
include "/etc/bind/named.conf.options";

// Declaration de la clef pour autoriser l'update DNS pour apcb.lan
// par les servers DHCP
include "/etc/bind/ns-apcb-lan_rndc-key";

// Dénir les caractéstiques des serveurs
// Le serveur secondaire reçt du IXFR et les transactions effectué
// avec le serveur primaire doivent utiliser la clef TSIG précédente
server 192.168.0.253 {
        request-ixfr yes;
};
server 192.168.0.1 {
        keys { ns-apcb-lan_rndc-key; };
};

// Configurer le canal de communication pour adminsistrer BIND9 avec rndc
// Par déut, la clef est situéda dans le fichier rndc.key et utilisépar
// rndc et bind9 sur localhost
controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1; };
};


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

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

include "/etc/bind/named.conf.local";

3.1.2 Fichier named.conf.local

// Gérer les fichiers de logs
include "/etc/bind/named.conf.log";

// Gérer le domaine example.com (zone de recherche et de recherche inversée)
include "/etc/bind/zones.example.com";

// Consider adding the 1918 zones here, if they are not used in your
// organization
include "/etc/bind/zones.rfc1918";

3.1.3 Fichier named.conf.log

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

        category default { bind_log; };
        category lame-servers { null; };
        category update { update_debug; };
        category update-security { update_debug; };
        category security { security_info; };
};

3.1.4 Fichier named.conf.options

options {
     directory "/var/cache/bind";

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

     // Transmettre les requêtes aux DNS orange
     // dans le cas où ce serveur ne sait pas résoudre ces adresses
     forward only;
     forwarders { 194.2.0.20; 194.2.0.50; };

     auth-nxdomain no;    # conform to RFC1035

     // Ecouter sur les interfaces locales uniquement (IPV4)
     listen-on-v6 { none; };
     listen-on { 127.0.0.1; 192.168.0.253; };

     // Ne pas transfér les informations de zones
     allow-transfer { none; };

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

     // Autoriser les requês rérsives pour les hô locals
     allow-recursion { internals; };

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

3.1.5 Fichier zones.apcb.lan

zone "apcb.lan" {
        type slave;
        file "/var/cache/bind/db.apcb.lan";

        masters { 192.168.0.1; };

        // Aucun forwarder pour cette zone
        forwarders {};
};

zone "0.168.192.in-addr.arpa" {
        type slave;
        file "/var/cache/bind/db.apcb.lan.inv";

        masters { 192.168.0.1; };

        // Aucun forwarder pour cette zone
        forwarders {};
};

3.2 DCHP3 - dhcpd.conf

# Options diverses
# -----------------------------------------------------------------------------
# Déclarer le serveur DHCP en tant que master
authoritative;

# Refuser les adressses mac en double
deny duplicates;

# Refuser les messages DHCPDECLINE indiquant un conflit réseau.
ignore declines;

# Enregistrer uniquement le nom d'hôte si le FQDN n'est pas géré par le
# serveur
ignore client-updates;

# Définir le serveur de temps local
option ntp-servers 192.168.0.1;

# Gestion DNS
# -----------------------------------------------------------------------------
# Lister les serveurs DNS pour le réseau
option domain-name-servers 192.168.0.1, 192.168.0.253;

# Mettre à jour les DNS à l'aide de DHCP
ddns-update-style interim;
ddns-updates on;

# Charger la signature (TSIG) pour pouvoir autoriser les transactions avec BIND
include "/etc/bind/ns-apcb-lan_rndc-key";

# Gestion du failover
# -----------------------------------------------------------------------------
# La mise en place du failover permet de définir deux serveurs DHCPs afin de
# gérer la continuité de services et l'équilibrage de charge
# Ici, le serveur primaire est 192.168.0.1 et le secondaire 192.168.0.253
failover peer "dhcp_failover" {
  secondary;
  address 192.168.0.253;
  port 519;
  peer address 192.168.0.1;
  peer port 519;
  max-response-delay 30;
  max-unacked-updates 10;
  load balance max seconds 3;
}

# Déclaration à utiliser pour initialiser le failover
# failover peer "dhcp_failover" state {
#   my state partner-down;
# }

# Définition des sous réseaux
# -----------------------------------------------------------------------------
subnet 192.168.0.0 netmask 255.255.255.0 {

  # Lister les options du réseau
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.253;
  option netbios-name-servers 192.168.0.1;
  option netbios-node-type 8;

  # Gestion de la zone DNS "apcb.lan"
  # -----------------------------------
  # Associer un nom de domaine pour la zone
  option domain-name "apcb.lan";

  # Gérer l'update DNS (le reverse est fait par défaut)
  ddns-domainname "apcb.lan";

  # Définir les zones DNS que DHCP doit mettre à jour
  zone apcb.lan. {
    primary 192.168.0.1;
    key ns-apcb-lan_rndc-key;
  }

  zone 0.168.192.in-addr.arpa.
  {
    primary 192.168.0.1;
    key ns-apcb-lan_rndc-key;
  }

  # Gestion de la pool
  # ------------------------------
  pool {
    failover peer "dhcp_failover";
    deny dynamic bootp clients;

    range 192.168.0.80 192.168.0.160;

    default-lease-time 43200;
    max-lease-time 86400;
  }
}

4 Démarrage des services