DHCP
Infrastructure
DHCPD en Maître
Installation d'un serveur bind sur Debian.
Prérequis installation de OS Debian de façon PASS et configuration service réseaux.
Caractéristique de la machine:
Serveur: DELL Poweredge 745
Processeur Intel(R) Xeon(TM) CPU 3.20GHz
RAM : 2 Go
2 Carte réseaux Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 11)
eth0 192.168.168.130 (requête serveur/serveur)
eth1 192.168.1.18 (requête client/serveur).
Assurer que les outils de compilation sont bien installer
Avoir les accès root est indispensable.
Pour debian apt-get update et apt-get install build-essential vous permet de les installer.
Phases
- Compilation des sources DHCPD
- Configuration global du serveur
- Configuration des réseaux par zone
Compilation des sources DHCPD
Acquisition de source sur le site officiel www.isc.org (la version actuelle)
Décompression de l'archive de un dossier temporaire.
A la racine de dossier désarchiver faire configure -h pour lister toute les options de configuration préinstallation
Configuration de package dans de le répertoire /opt/dhcp/ différent des chemins par défaut. L'avantage est que l'installation est propre et l'application sera plus sécurisé (la sécurité du service sera abordée plus loin).
Compilation proprement dite
Installation du package dans le dossier /opt/dhcp
Afin de pouvoir avoir de l'aisance dans les commandes rajouter de la profile utilisateur le chemin de binaire
éditer le fichier profile et rajouter /opt/dhcp/bin pour l'utilisateur et /opt/dhcp/bin:/opt/dhcp/sbin pour root
Configuration global du serveur
Démarrage/Arrêt du serveur
Démarrer DHCP
Pour démarrer le serveur DHCP, il suffit de rentrer la commande suivante :
- -cf : spécifie le fichier de configuration
- -pf : indique le chemin du fichier contenant le pid du processus dhcp
Démarrage en mode Debug
Il est possible de démarrer le serveur dhcp en mode debug, pour ce faire , il faut utiliser la commande suivante :
- -f : force le service dhcpd à tourner au premier plan
- -d : envoie des messages du journal dans le descripteur d'erreurs standard.
Arrêt du serveur DHCP
Pour arrêter le serveur DHCP, la commande suivante doit être utilisée :
Script d'automatisation
#! /bin/bash
# Auteur : Devleeschauwer Denis
# DHCP start script
#
# Juillet 2012
#
#GLOBAL VARIABLES
DIRECTORY=/opt/dhcp
APPLICATION=DHCP
PID=/opt/dhcp/etc/dhcpd.pid
######################################################################
##########################Function####################################
######################################################################
start () {
#Commande pour demmarer ProFTPD
cd $DIRECTORY/sbin
./dhcpd -cf $DIRECTORY/etc/dhcpd.conf -pf $PID > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "Start $APPLICATION Instance [OK]"
else
echo "Start $APPLICATION Instance [KO]"
fi
}
stop () {
#Commande pour arreter ProFTPD
kill -INT `cat $PID` > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "Stop $APPLICATION Instance [OK]"
rm -f $PID
else
echo "Stop $APPLICATION Instance [KO]"
fi
}
restart () {
stop
sleep 5
start
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
restart
;;
'status')
cat $PID > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "$APPLICATION Instance Running"
else
echo "$APPLICATION Instance Stop"
fi
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
exit 1
;;
esac
exit 0
DHCP Slave
Configuration DHCP Master
Pour mettre en place un système de failover pour le service DHCP, il est nécessaire de réaliser quelques modifications sur la configuration de notre serveur DHCP Master
Section FailOver
Avant la première définition d'un subnet, il faut rajouter toute une section qui permet de configurer le failover :
failover peer "dhcp_failover" {
primary;
address 192.168.1.18;
port 647;
peer address 192.168.1.25;
peer port 647;
max-response-delay 120;
max-unacked-updates 30;
mclt 3600;
split 128;
load balance max seconds 8;
}
- primary : Indique qu'il s'agit de notre serveur DHCP Master
- address 192.168.1.18 : Adresse du DHCP Master
- port 647 : Port d'écoute de notre DHCP concernant le mécanisme de failover
- peer address 192.168.1.25 : Adresse de notre DHCP slave
- peer port 647 : Port d'écoute de notre serveur DHCP slave
- max-response-delay : Indique le temps en secondes sans recevoir de message de l'autre serveur faisant partie de la paire
- ma-unacked-updates : Indique le nombre de message BNDUPD que le serveur distant peux envoyer avant de recevoir un BNDACJ du système local
- mclt : Définit le temps maximum d'un client. Il doit être précisé sur le primaire, et ne peut pas être spécifié sur le secondaire.
- split : Chaque fois qu'un client fait une requête DHCP, le serveur DHCP exécute un hachage sur l'identification des clients, résultant de la valeur de 0 à 255. Il est utilisé comme un index dans un champ de 256 bits. Si le bit à cet index est défini, le principal est responsable. Si le bit à cet index n'est pas réglé, le secondaire est responsable. 128 semble être une valeur raisonnable.
- load balance max seconds : Permet d’éviter l’état ou un serveur repond aux messages de failover mais plus aux requêtes
Configuration subnet
Failover
Pour configurer le failover sur un subnet, il suffit de rajouter la ligne suivante :
failover peer "dhcp_failover";
dhcp_failover correspond au nom indiqué dans la section failover définie au début de notre fichier
MAJ des zones
Vu que notre serveur DHCP réalise également la mise à jour des zones dans notre DNS, il est nécessaire de le spécifier également. Pour cela, il faut que l'on rajoute dasn notre définition de sone à l'intérieur de nos subnets, l'adresse IP de notre serveur DHCP Slave.
zone 1.168.192.in-addr.arpa. {
primary 192.168.1.18;
secondary 192.168.1.25;
key rndc-key1;
}
zone admin.pass.be. {
primary 192.168.1.18;
secondary 192.168.1.25;
key rndc-key1;
}
- 192.168.1.18 : Adresse IP du serveur Primaire
- 192.168.1.25 : Adresse IP du serveur secondaire
Configuration DHCP Slave
Une fois que notre serveur DHCP Master est configuré, il faut passer à la configuration du serveur Slave.
FailOver
Comme pour notre serveur DHCP Master, il faut rajouter avant la première définition de subnet une section consacré au failover :
failover peer "dhcp_failover" {
secondary;
address 192.168.1.25;
port 647;
peer address 192.168.1.18;
peer port 647;
max-response-delay 120;
max-unacked-updates 30;
load balance max seconds 3;
}
MAJ de zones
Comme pour notre serveur Master, il faut configurer la mise à jour des zones :
zone 1.168.192.in-addr.arpa. {
primary 192.168.1.18;
secondary 192.168.1.25;
key rndc-key1;
{
zone admin.pass.be. {
primary 192.168.1.18;
secondary 192.168.1.25;
key rndc-key1;
}
Backup/Restore
Script Backup
#!/bin/sh
#Script pour réaliser un backup du service DHCP
#Susceptible d'etre ajouter dans une tache cron
# Auteur : Devleeschauwer Denis
# Date : Juillet 2012
#Variables
DIRECTORY_DHCP=/opt/dhcp
DATE=`date +"%d%m%Y"`
NAME_FILE=dhcp_slave-$DATE.tar.bz2
DESTINATION_BACKUP=/mnt/backup_server/backup_dhcp/Dhcp_Slave/
#Recuperation du nom de l'ancien backup
OLD_FILE=$(ssh root@192.168.1.7 ls /mnt/backup_server/backup_dhcp/Dhcp_Slave/)
#echo "\nOLD FILE : $OLD_FILE"
#Creation de l'archive
cp -R $DIRECTORY_DHCP /tmp/
cd /tmp
tar -cjf $NAME_FILE dhcp
#Copie du nouveau Backup sur le serveur distant
scp $NAME_FILE root@192.168.1.7:$DESTINATION_BACKUP
#Suppression du backup local et distant
ssh root@192.168.1.7 rm -f $OLD_FILE
rm -Rf dhcp/
rm -f $NAME_FILERestore
Pour restaurer le serveur DHCP, il faut récupérer l'archive de backup qui se trouve sur le serveur 192.168.1.7 :
- /mnt/backup_server/backup_dhcp/Dhcp_Master/dhcp_master-*******.tar.bz2 pour le DHCP Master
- /mnt/backup_server/backup_dhcp/Dhcp_Slave/dhcp_slave-*******.tar.bz2 pour le DHCP Slave
et la transférer sur le serveur DHCP à restaurer :
On suppose qu'on se trouve dans le dossier contenant le backup afin de réaliser le transfert
Une fois l'archive rapatrié sur le serveur à restaurer, il ne reste plus qu'a désarchiver l'archive
Quand cela est réalisé, on peux (re)lancer le service dhcp via le script /etc/init.d/dhcpd
Pour s'assurer que le service dhcp soit correctement lancé, on peux vérifier que le process tourne :
root@dnsmaster:~# ps -ef | grep dhcp root 4536 4477 0 15:48 pts/0 00:00:00 dhcpd -d -f -cf /opt/dhcp/etc/dhcpd.conf -pf /opt/dhcp/etc/dhcpd.pid root 4609 4539 0 16:09 pts/1 00:00:00 grep dhcp
Si ce n'est pas le cas, regarder dans le fichier de log la ou les erreurs qui y sont précisé
