DHCP

De DiouxX's Wiki
Aller à : navigation, rechercher

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

  1. Compilation des sources DHCPD
  2. Configuration global du serveur
  3. Configuration des réseaux par zone


Compilation des sources DHCPD

Acquisition de source sur le site officiel www.isc.org (la version actuelle)

Konsole.png


Décompression de l'archive de un dossier temporaire.


Konsole.png
[root@ordi ~]# tar xvzf dhcp-4.2.3-P2.tar.gz && cd dhcp-4.2.3-P2


A la racine de dossier désarchiver faire configure -h pour lister toute les options de configuration préinstallation

Konsole.png
[root@ordi ~]# ./configure -h


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).

Konsole.png
[root@ordi ~]# ./configure --prefix=/opt/dhcp


Compilation proprement dite

Konsole.png
[root@ordi ~]# make


Installation du package dans le dossier /opt/dhcp

Konsole.png
[root@ordi ~]# make install


BlocNotes.png
À noter !
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 :

Konsole.png
[root@ordi ~]# dhcpd -cf /opt/dhcp/etc/dhcpd.conf -pf /opt/dhcp/etc/dhcpd.pid


  • -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 :

Konsole.png
[root@ordi ~]# dhcpd -d -f -cf /opt/dhcp/etc/dhcpd.conf -pf /opt/dhcp/etc/dhcpd.pid


  • -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 :

Konsole.png
[root@ordi ~]# kill -INT `cat /opt/dhcp/etc/dhcpd.pid`


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


BlocNotes.png
À noter !
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;
}


BlocNotes.png
À noter !
Certaines options de configuration ne sont pas présente sur le serveur Slave


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_FILE

Restore

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 :

Konsole.png
[root@ordi ~]# scp dhcp_master-********.tar.bz2 root@192.168.1.18:/opt


BlocNotes.png
À noter !
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

Konsole.png
[root@ordi ~]# cd /opt && tar -cjvf dhcp_master-*******.tar.bz2


Quand cela est réalisé, on peux (re)lancer le service dhcp via le script /etc/init.d/dhcpd

Konsole.png
[user@ordi ~]$ /etc/init.d/dhcpd start


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é

Konsole.png
[user@ordi ~]$ tail -f /var/log/syslog