Dynamic Host Configuration Protocol (DHCP) est un terme anglais désignant un protocole réseau dont le rôle est d’assurer la configuration automatique des paramètres TCP/IP d’une station, notamment en lui assignant automatiquement une adresse IP et un masque de sous-réseau. DHCP peut aussi configurer l’adresse de la passerelle par défaut, des serveurs de noms DNS et des serveurs de noms NBNS (connus sous le noms de serveurs WINS sur les réseaux de la société Microsoft).
La conception initiale d’IP supposait la préconfiguration de chaque ordinateur connecté au réseau avec les paramètres TCP/IP adéquats : c’est l’adressage statique. Sur des réseaux de grandes dimensions ou étendues, où des modifications interviennent souvent, l’adressage statique engendre une lourde charge de maintenance et des risques d’erreurs. En outre les adresses assignées ne peuvent être utilisées même si l’ordinateur qui la détient n’est pas en service : un cas typique où ceci pose problème est celui des fournisseurs d’accès à internet (FAI ou ISP en anglais), qui ont en général plus de clients que d’adresses IP à leur disposition, mais dont tous les clients ne sont jamais connectés en même temps.
DHCP apporte une solution à ces deux inconvénients :
Seuls les ordinateurs en service utilisent une adresse de l’espace d’adressage ;
Toute modification des paramètres (adresse de la passerelle, des serveurs de noms) est répercutée sur les stations lors du redémarrage ;
La modification de ces paramètres est centralisée sur les serveurs DHCP.
Fonctionnement
L’ordinateur équipé de TCP/IP, mais dépourvu d’adresse IP, envoie par diffusion un datagramme (DHCP DISCOVER) qui s’adresse au port 68 de n’importe quel serveur à l’écoute sur ce port. Ce datagramme comporte entre autres l’adresse physique du client.
Tout serveur DHCP ayant reçu ce datagramme, s’il est en mesure de proposer une adresse (DHCP OFFER) sur le réseau auquel appartient le client, diffuse une offre DHCP à l’attention du client (sur son port 67), identifié par son adresse physique. Cette offre comporte l’adresse IP du serveur, ainsi que l’adresse IP et le masque de sous-réseau qu’il propose au client. Il se peut que plusieurs offres soient adressées au client.
Le client retient une des offres reçues (la première qui lui parvient), et diffuse sur le réseau un datagramme de requête DHCP (DHCP REQUEST). Ce datagramme comporte l’adresse IP du serveur et celle qui vient d’être proposée au client. Elle a pour effet de demander au serveur choisi l’assignation de cette adresse, l’envoi éventuel des valeurs des paramètres, et d’informer les autres serveurs qui ont fait une offre qu’elle n’a pas été retenue.
Le serveur DHCP choisi élabore un datagramme d’accusé de réception (DHCP ack) qui assigne au client l’adresse IP et son masque de sous-réseau, la durée du bail de cette adresse, deux valeurs T1 et T2 qui déterminent le comportement du client en fin de bail, et éventuellement les autres paramètres :
adresse IP de la passerelle par défaut
adresses IP des serveurs DNS
adresses IP des serveurs NBNS (WINS)
le fichier dhcpd.conf
# ici il s'agit du réseau 192.168.0.0
subnet 192.168.0.0 netmask 255.255.255.0 {
#La plage d'adresse disponible pour les clients
range 192.168.0.10 192.168.0.20;
# Les clients auront cette adresse comme passerelle par défaut
option routers 192.168.0.254;
# Ici c'est le serveur de noms, on peut en mettre plusieurs
option domain-name-servers 192.168.0.1;
# Enfin on leur donne le nom du domaine
option domain-name "freeduc-sup.org";
# Et l'adresse utilisée pour la diffusion
option broadcast-address 192.168.0.255;
# Le bail à une durée de 86400 s par défaut, soit 24 h
# On peut configurer les clients pour qu'ils puissent demander
# une durée de bail spécifique
default-lease-time 86400;
# On le laisse avec un maximum de 7 jours
max-lease-time 604800;
#Ici on désire réserver des adresses à des machines
group {
#use-host-decl-names indique que toutes les machines dans l'instruction « group »
# auront comme nom, celui déclaré dans l'instruction host.
use-host-decl-names true ;
# ici définir les machines
host m1 {
hardware ethernet 00:80:23:a8:a7:24;
fixed-address 192.168.0.125;
} # End m1
host m2 {
hardware ethernet a0:81:24:a8:e8:3b;
fixed-address 192.168.0.126;
} # End m2
} # End Group
} # End dhcp.conf