1 Implantation
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
- Démarrez le serveur dhcp primaire avec le failover décommenté et démarrez un poste client afin de remplir la base.
- Démarrez le serveur dhcp secondaire avec le failover décommenté.
- Arrêtez le serveur primaire et commentez le failover.
- Démarrer le serveur primaire.
- Arrêtez le serveur secondaire et commentez le failover.
- Démarrer le serveur secondaire.
