Rappel: le protocole DHCP permet la configuration automatique des paramètres IP des machines d’un réseau (plus de littérature sur le Wiki).
Introduction
ISC DHCP est un projet open-source disponible dans une suite qui comprend les éléments suivants:
- le fameux serveur DHCPd
- le client DHCPclient
- un serveur de relais DHCPrelay
Cette suite est disponible sur la plupart des OS: Linux, BSD, Mac OS X et Windows.
La dernière version stable à la date de l’éecriture de ce billet est la 3.0.6
Installation du serveur DHCPd
Sous FreeBSD la procédure est la suivante:
# pkg_add -r isc-dhcp3-server
Pour les puristes, il est également de compiler le serveur à partir des sources.
Quelques trucs utiles à savoir avant la configuration
DHCP est un protocole servant à distribuer des configurations réseaux (c’est à dire adresse IP, masque, routes, serveurs DNS…) sur un réseau local. Il faut donc que le serveur et les clients se trouvent sur un même réseau de niveau 2. En clair, il ne doit pas y avoir de routeur IP entre le serveur et les clients. Si vous ne pouvez pas faire autrement, le serveur relais pourra vous être utile…
Si vous avez un Firewall entre votre serveur et vos clients, il faut veillez à ajouter les règles suivantes:
Autoriser les paquets UDP/67 (source UDP/68) entre l’adresse 0.0.0.0 et l’adresse 255.255.255.255
Autoriser les paquets UDP/68 (source UDP/67) entre le serveur et les clients
C’est à dire autoriser vos clients qui n’ont pas encore d’adresse IP (0.0.0.0) à envoyer sur le réseau une requête DHCP (UDP/67) vers toutes les machines du réseau (255.255.255.255) afin de chercher le serveur DHCP. Le serveur DHCP répond (UDP/68) en offrant un bail DHCP (c’est à dire une configuration IP valable un certain temps).
Sous FreeBSD, la règle IPFW correspondante est:
# ipfw add allow udp from 0.0.0.0 68 to 255.255.255.255 67 keep-state
# ipfw add allow udp from @SERVEUR 67 to any 68 keep-state
Configuration du serveur DHCP
Toute la configuration est centralisée dans le fichier dhcpd.conf. Nous allons donc commencer par archiver la configuration par défaut.
# mv /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf
Puis éditer notre fichier dhcpd.conf:
# vi /usr/local/etc/dhcpd.conf
# C’est bien le serveur DHCP principal
authoritative;
# Nom de domaine de votre réseau
option domain-name “monboreseau.com”;
# Adresses des serveurs DNS
option domain-name-servers ns1.monboreseau.com, ns2.monboreseau.com;
# Définition de la durée du bail
default-lease-time 600;
max-lease-time 7200;
# On logue les messages dans le syslog
log-facility local7;
# Définition des plages d’adresses dynamiques du LAN
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200 ;
option routers 192.168.1.1 ;
option broadcast-address 192.168.1.255 ;
}
# Définition des machines statiques (les entrées doivent exister dans le serveur DNS)
# Attention, elles doivent être en dehors du range dynamique définie ci-dessus.
host mamachine {
hardware ethernet 00:11:09:1A:-:- ;
fixed-address mamachine.alcasat.net ;
}
Les opérations de base sur votre serveur DHCP
Démarrage du serveur (sous FreeBSD):
# /usr/local/etc/rc.d/isc-dhcpd start
Arrêter le serveur DHCP (sous FreeBSD):
# /usr/local/etc/rc.d/isc-dhcpd stop
Pour connaître la liste des baux (leases) en cours:
# cat /var/db/dhcpd.leases
Exemple:
lease 192.168.1.112 {
starts 2 2008/05/13 10:22:43;
ends 2 2008/05/13 10:32:43;
binding state active;
next binding state free;
hardware ethernet 00:08:02:f4:-:-;
uid “\001\000\010\002\364o\310″;
client-hostname “port2″;
}
Et la redondance ?
Si vous souhaitez avoir deux serveurs DHCP en redondance sur votre réseau, vous pouvez suivre cette procédure.