1 Implantation

Bind9MasterSlave_implantation.png

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

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

// Déclaration de la clef TSIG utilisée pour le transfert de zone
// et la mise à jour dynamique
include "/etc/bind/ns-example-com_rndc-key";

// Définir les caractéristiques des serveurs
// Le serveur primaire fourni du IXFR et les transactions effectuées
// avec le serveur secondaire doivent utiliser la clef TSIG précédente
server 192.168.0.1 {
        provide-ixfr yes;
};
server 192.168.0.2 {
        keys { ns-example-com_rndc-key; };
};

// Configurer le canal de communication pour adminsistrer BIND9 avec rndc
// Par défaut, la clef est située dans le fichier rndc.key et utilisée 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.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";

2.1.3 Fichier named.conf.log

logging {
        channel update_debug {
                file "/var/cache/bind/update_debug.log" versions 3 size 100k;
                severity debug;
                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 à 192.168.1.1 si
        // ce serveur ne sait pas résoudre ces adresses
        forward only;
        forwarders { 192.168.1.1; };

        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.0.2
        allow-transfer { 192.168.0.2; };

        // 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.example.com

zone "example.com" {
        type master;
        file "/var/cache/bind/db.example.com";

        // Aucun forwarder pour cette zone
        forwarders {};

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

        // Autoriser le transfert de cette zone vers le DNS secondaire
        // avec utilisation de la clef TSIG
        allow-transfer { 192.168.0.2; };
        notify yes;
};

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

        // Aucun forwarder pour cette zone
        forwarders {};

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

        // Autoriser le transfert de cette zone vers le DNS secondaire
        // avec utilisation de la clef TSIG
        allow-transfer { 192.168.0.2; };
        notify yes;
};

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.2;

# 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-example-com_rndc-key";

# Gestion des classes
# -----------------------------------------------------------------------------
# La mise en place de classes permet d'identifier certaines machines
# et ainsi de leur attribuer une plage d'adresses et des options spécifiques.
# Les clients DHCPs doivent être configurés pour envoyer cet identifiant
class "level_1" {
  match if substring (option dhcp-client-identifier,0,5) = "LAN_1";
}
class "level_2" {
  match if substring (option dhcp-client-identifier,0,5) = "LAN_2";
}

# 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.2
failover peer "dhcp_failover" {
  primary;
  address 192.168.0.1;
  port 519;
  peer address 192.168.0.2;
  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 {

  # Donner le chemin pour le boot reseau
  #next-server 192.168.0.1;
  #option root-path "/var/lib/tftpboot";
  #filename "pxelinux.0";

  # Lister les options du réseau
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;

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

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

  # Définir les zones DNS que DHCP doit mettre à jour
  zone example.com. {
    primary 192.168.0.1;
    key ns-example-com_rndc-key;
  }
  zone 0.168.192.in-addr.arpa.
  {
    primary 192.168.0.1;
    key ns-example-com_rndc-key;
  }

  # Gestion de la pool "visitor"
  # ------------------------------
  # 20 clients avec une lease par défaut de 30 min et max de 1h
  # et avec failover activé
  pool {
    failover peer "dhcp_failover";
    deny dynamic bootp clients;
    deny members of "level_1";
    deny members of "level_2";
    range 192.168.0.231 192.168.0.250;
    default-lease-time 1800;
    max-lease-time 3600;
  }

  # Gestion de la pool "restricted_access"
  # 180 clients avec une lease par défaut de 5h et max de 10h
  # et avec failover activé
  pool {
    failover peer "dhcp_failover";
    deny dynamic bootp clients;
    allow members of "level_1";
    deny members of "level_2";
    range 192.168.0.21 192.168.0.200;
    default-lease-time 18000;
    max-lease-time 36000;
  }

  # Gestion de la pool "full_access"
  # -------------------------------
  # 5 clients avec une lease par défaut de 5h et max de 10h
  # et avec failover activé
  pool {
    failover peer "dhcp_failover";
    deny dynamic bootp clients;
    deny members of "level_1";
    allow members of "level_2";
    range 192.168.0.11 192.168.0.15;
    default-lease-time 18000;
    max-lease-time 36000;
  }
}

3 Configuration de ns2

3.1 Bind9

3.1.1 Fichier named.conf

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

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

// Déclaration de la clef pour autoriser l'update DNS pour example.com
// par les serveurs DHCP
include "/etc/bind/ns-example-com_rndc-key";

// Définir les caractéristiques des serveurs
// Le serveur secondaire reçoit du IXFR et les transactions effectuées
// avec le serveur primaire doivent utiliser la clef TSIG précédente
server 192.168.0.2 {
        request-ixfr yes;
};
server 192.168.0.1 {
        keys { ns-example-com_rndc-key; };
};

// Configurer le canal de communication pour adminsistrer BIND9 avec rndc
// Par défaut, la clef est située dans le fichier rndc.key et utilisée 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 debug;
                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'é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
     forward only;
     forwarders { 192.168.1.1; };

     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.2; };

     // Ne pas transférer les informations de zones
     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 locals
     allow-recursion { internals; };

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

3.1.5 Fichier zones.example.com

zone "example.com" {
        type slave;
        file "/var/cache/bind/db.example.com";
        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.example.com.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.2;

# 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-example-com_rndc-key";

# Gestion des classes
# -----------------------------------------------------------------------------
# La mise en place de classes permet d'identifier certaines machines
# et ainsi de leur attribuer une plage d'adresses et des options spécifiques.
# Les clients DHCPs doivent être configurés pour envoyer cet identifiant
class "level_1" {
  match if substring (option dhcp-client-identifier,0,5) = "LAN_1";
}
class "level_2" {
  match if substring (option dhcp-client-identifier,0,5) = "LAN_2";
}

# 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.2
failover peer "dhcp_failover" {
  secondary;
  address 192.168.0.2;
  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 {

  # Donner le chemin pour le boot reseau
  #next-server 192.168.0.1;
  #option root-path "/var/lib/tftpboot";
  #filename "pxelinux.0";

  # Lister les options du réseau
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;

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

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

  # Définir les zones DNS que DHCP doit mettre à jour
  zone example.com. {
    primary 192.168.0.1;
    key ns-example-com_rndc-key;
  }
  zone 0.168.192.in-addr.arpa.
  {
    primary 192.168.0.1;
    key ns-example-com_rndc-key;
  }

  # Gestion de la pool "visitor"
  # ------------------------------
  # 20 clients avec une lease par défaut de 30 min et max de 1h
  # avec boot réseau disponible
  pool {
    failover peer "dhcp_failover";
    deny members of "level_1";
    deny members of "level_2";
    range 192.168.0.231 192.168.0.250;
    default-lease-time 1800;
    max-lease-time 3600;
  }

  # Gestion de la pool "restricted_access"
  # --------------------------------------
  # 180 clients avec une lease par défaut de 5h et max de 10h
  # et avec failover activé
  pool {
    failover peer "dhcp_failover";
    deny dynamic bootp clients;
    allow members of "level_1";
    deny members of "level_2";
    range 192.168.0.21 192.168.0.200;
    default-lease-time 18000;
    max-lease-time 36000;
  }

  # Gestion de la pool "full_access"
  # -------------------------------
  # 5 clients avec une lease par défaut de 5h et max de 10h
  # et avec failover activé
  pool {
    failover peer "dhcp_failover";
    deny dynamic bootp clients;
    deny members of "level_1";
    allow members of "level_2";
    range 192.168.0.11 192.168.0.15;
    default-lease-time 18000;
    max-lease-time 36000;
  }
}

4 Démarrage des services

fr/Bind9MasterSlave (last edited 2009-03-16 03:31:33 by localhost)