DHCP – Dynamic Host Configuration Protocol – L’affectation et la mise à jour d’adresses IP peuvent être
facilitées par le protocole DHCP qui offre une configuration dynamique des adresses IP et des informations
associées. L’administrateur de réseau contrôle le mode d’attribution des adresses IP en spécifiant une durée
de bail qui indique combien de temps l’ordinateur peut utiliser une adresse IP attribuée, avant de devoir
renouveler le bail auprès du serveur DHCP.
Standard IETF (Internet Engineering Task Force), il s’agit d’un protocole qui permet à un ordinateur qui se
connecte sur un réseau local d’obtenir dynamiquement et automatiquement sa configuration IP. Le but
principal étant la simplification de l’administration d’un réseau. On voit généralement le protocole DHCP
distribuant des adresses IP, mais il a été conçu au départ comme complément au protocole BOOTP
(Bootstrap Protocol) qui était utilisé par exemple lorsque l’on installait une machine à travers un réseau.
Les versions actuelles des serveurs DHCP fonctionnent pour IPv4 (adresses IP sur 4 octets) et IPv6.
DHCP fournit les paramètres de configuration pour des machines à connecter sur un réseau.
DHCP est constitué de 2 parties : Un protocole pour la livraison de paramètres de configuration de machines
spécifiques à partir d’un serveur DHCP et un mécanisme d’allocation d’adresses réseaux à des machines.
DHCP est bâti sur le modèle client -> serveur, où la machine désignée serveur DHCP alloue des adresses
réseaux et délivre des paramètres de configuration à des machines configurées dynamiquement. Le terme
« serveur » se réfère à une machine fournissant des paramètres d’initialisation au travers du DHCP. Le terme
« client » se réfère à une machine qui demande des paramètres d’initialisation au serveur DHCP.
DHCP supporte 3 mécanismes pour l’allocation des adresses IP :
- L’allocation automatique (ou allocation dynamique statique), DHCP assigne une adresse IP permanente à
un client.
- L’allocation dynamique, DHCP assigne une adresse IP à un client pour une durée déterminée (ou jusqu’à
ce que le client renonce à son adresse, notion de bail).
- L’allocation manuelle, une adresse IP est assignée par l’administrateur réseau, et DHCP est simplement
utilisé pour convoyer les adresses désignées jusqu’au client.
Un réseau spécifique utilisera un ou plusieurs de ces mécanismes, cela dépend de la stratégie de
l’administrateur réseau.
L’allocation dynamique est la seule des 3 mécanismes qui réutilise automatiquement une adresse qui n’est
plus utilisée par un client. De plus, l’allocation dynamique est particulièrement utile pour assigner une
adresse à un client qui se connectera au réseau de manière temporaire, ou pour partager une liste limitée
d’adresses IP entre un groupe de clients qui ne nécessitent pas une adresse permanente. L’allocation
dynamique est aussi un bon choix pour assigner une adresse IP à un nouveau client qui se connectera de
manière permanente au réseau où les adresses IP sont suffisamment rares pour qu’il soit important de les
récupérer quand les anciens clients sont hors connexion. L’allocation manuelle permet à DHCP d’être utilisé
pour éliminer les processus enclins à l’erreur de configuration manuelle de machines avec une adresse IP
dans des environnements où (pour diverses raisons) il est préférable de gérer l’attribution des adresses IP en
dehors des mécanismes de DHCP.
Fonctionnement du protocole DHCP :
Lorsque l’on connecte une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner
correctement, doit disposer :
- D’une adresse IP unique dans le réseau et appartenant au même réseau logique que toutes les autres
machines du réseau en question,
- D’un masque de sous réseau, le même pour tous les hôtes du réseau,
- D’une adresse de DNS, pour pouvoir résoudre les noms des hôtes.
- De l’adresse de la passerelle qui permet d’accéder sur un réseau complexe à l’un des multiples sousréseaux.
Il faut dans un premier temps un serveur DHCP qui distribue des adresses IP. Cette machine va servir de
base pour toutes les requêtes DHCP. Dans un réseau, on peut donc n’avoir aucune machine avec adresse
IP fixe.
Le mécanisme de base de la communication est BOOTP (avec trame UDP). Quand une machine est
démarrée, elle n’a aucune information sur sa configuration réseau, et surtout, l’utilisateur ne doit rien faire de
particulier pour trouver une adresse IP. Pour faire cela, la technique utilisée est le broadcast. Pour trouver et
dialoguer avec un serveur DHCP, la machine va simplement émettre un paquet spécial de broadcast
(broadcast sur 255.255.255.255 avec d’autres informations comme le type de requête, les ports de
connexion…) sur le réseau local.
Lorsque le serveur DHCP recevra le paquet de broadcast, il renverra un autre paquet de broadcast (le client
n’a pas forcement son adresse IP et que donc il n’est pas joignable directement) contenant toutes les
informations requises pour le client.
On pourrait croire qu’un seul paquet peut suffire à la bonne marche du protocole. En fait, il existe plusieurs
types de paquets DHCP susceptibles d’être émis soit par le client pour le ou les serveurs, soit par le serveur
vers un client :
Le premier paquet émis par le client est un paquet de type DHCPDISCOVER. Le serveur répond par un
paquet DHCPOFFER, en particulier pour soumettre une adresse IP au client. Le client établit sa
configuration, puis fait un DHCPREQUEST pour valider son adresse IP (requête en broadcast car
DHCPOFFER ne contient par son adresse IP). Le serveur répond simplement par un DHCPACK avec
l’adresse IP pour confirmation de l’attribution. Normalement, c’est suffisant pour qu’un client obtienne une
configuration réseau efficace, mais cela peut être plus ou moins long selon que le client accepte ou non
l’adresse IP.
Les adresses utilisées lors de cet échange sont les adresses MAC ainsi que des adresses de « broadcast » IP.
Message Utilisation
DHCP DISCOVER: Requête de diffusion du client pour localiser les serveurs DHCP disponibles
DHCP OFFER: Réponse du serveur au client pour répondre au DHCPDISCOVER avec les
paramètres de configuration.
DHCP REQUEST: Message client aux serveurs soit (a) qui demande les paramètres à un serveur et
décline implicitement les offres de tous les autres, (b) qui confirme la validité des
adresses précédemment allouées, par ex : un redémarrage système, ou (c) qui étend
le bail sur une adresse réseau en particulier.
DHCP ACK: Réponse du serveur au client avec les paramètres de configuration et qui inclut
l’adresse réseau déjà attribuée.
DHCP NAK: Réponse du serveur au client indiquant que la notion d’un client pour les adresses
réseau est incorrecte. (par ex : si un client est déplacé sur un nouveau sous réseau)
ou que le bail du client a expiré.
DHCP DECLINE: Requête du client vers le serveur indiquant que l’adresse réseau est déjà utilisée.
DHCP RELEASE: Requête du client vers le serveur libérant l’adresse réseau et annulant le bail.
DHCP INFORM: Requête du client vers le serveur, demandant seulement les paramètres de
configuration locaux ; le client possède déjà une adresse IP.
Lorsque le client DHCP démarre sur le client DHCP, il n’a aucune connaissance du réseau (du moins en
principe). Il envoie donc une trame « DHCPDISCOVER », destinée à trouver un serveur DHCP. Cette trame est
un broadcast envoyé à l’adresse 255.255.255.255 port source (UDP 67) / port destination (UDP 68). N’ayant
pas encore d’adresse IP, il adopte provisoirement l’adresse 0.0.0.0. Comme ce n’est pas avec cette adresse
que le DHCP va l’identifier, il fournit aussi sa MAC Address.
Chaque serveur DHCP peut répondre avec un message DHCPOFFER qui inclut une adresse réseau IP
valide (et d’autres paramètres de configuration des options DHCP). Cette trame est elle aussi en broadcast
car il n’est pas encore possible d’atteindre le client nommément (il n’a pas encore d’adresse IP valide).
Le client reçoit un ou plusieurs messages DHCPOFFER d’un ou plusieurs serveurs. Le client peut choisir
d’attendre des réponses multiples. Le client choisit un serveur pour ses paramètres de configuration, basé
sur la configuration présente dans le DHCPOFFER. Le client diffuse un message DHCPREQUEST à tous
les serveurs (donc toujours en « Broadcast ») pour indiquer quelle offre il accepte, il doit inclure l’option
‘identifiant serveur’ indiquant quel serveur il a sélectionné et qui peut inclure d’autres options spécifiant les
valeurs de configuration désirées. L’option « adresse IP demandée » doit être réglée sur la même valeur que
l’adresse du message DHCPOFFER provenant du serveur. Le DHCPREQUEST doit utiliser les mêmes
valeurs dans l’en-tête du champ « secs » du message DHCP et être envoyé à la même adresse IP de diffusion
que le message DHCPDISCOVER originel. Le client clôture à la fin d’un délai d’attente et retransmet le
message DHCPDISCOVER si le client ne reçoit pas de messages DHCPOFFER.
Les serveurs reçoivent les diffusions DHCPREQUEST des clients. Les serveurs qui ne sont pas sélectionnés
par le message DHCPREQUEST utilisent le message comme notification que le client décline leur offre. Le
serveur sélectionné dans le message DHCPREQUEST engage une liaison pour le client dans sa mémoire
permanente et répond avec un message DHCPACK qui contient la configuration pour le client demandeur.
La combinaison entre « identifiant client » et l’adresse réseau assignée constitue un identifiant unique pour le
bail du client et sont utilisés à la fois par le client et le serveur pour identifier un bail auquel il sera fait
référence dans tous les messages DHCP.
Détail sur le Bail :
Pour des raisons d’optimisation des ressources réseau, les adresses IP sont délivrées avec une date de
début et une date de fin de validité. C’est ce qu’on appel un bail. Un client qui voit son bail arriver à terme
peut demander au serveur une prolongation du bail par un DHCPREQUEST. De même, lorsque le serveur
verra un bail arrivé à terme, il émettra un paquet DHCPNAK pour demander au client s’il veut prolonger son
bail. Si le serveur ne reçoit pas de réponse valide, il rend disponible l’adresse IP.
C’est toute la subtilité du DHCP : on peut optimiser l’attribution des adresses IP en jouant sur la durée des
baux. Le problème est là : si aucune adresse n’est libérée au bout d’un certain temps, plus aucune requête
DHCP ne pourra être satisfaite, faute d’adresses à distribuer.
Sur un réseau où beaucoup d’ordinateurs se branchent et se débranchent souvent (réseau d’école ou de
locaux commerciaux par exemple), il est intéressant de proposer des baux de courte durée. A l’inverse, sur
un réseau constitué en majorité de machines fixes, très peu souvent « rebootées », des baux de longues
durées suffisent. Le DHCP marche principalement par broadcast, et que cela peut bloquer de la bande
passante sur des petits réseaux fortement sollicités.
Dans le bail, il y a non seulement une adresse IP pour le client, avec une durée de validité, mais également
d’autres informations de configuration :
- L’adresse d’un ou de plusieurs DNS (Résolution de noms)
- L’adresse de la passerelle par défaut (pour sortir du réseau où le DHCP vous a installé).
- L’adresse du serveur DHCP (nous allons voir pourquoi).
Cette liste est loin d’être complète, il existe en effet une grande quantité d’options qui peuvent êtres
transmises.
Lorsque le bail arrive approximativement à la moitié de son temps de vie, le client va essayer de renouveler
ce bail, en s’adressant directement au serveur qui le lui a attribué. Il n’y aura alors qu’un DHCPREQUEST et
un DHCPACK. Si, au bout des 7/8e de la durée de vie du bail en cours, ce dernier n’a pu être renouvelé, le
client essayera d’obtenir un nouveau bail auprès d’un DHCP quelconque qui voudra bien lui répondre. Il
pourra alors se faire que le client change d’adresse IP en cours de session.
Il est recommandé de ne pas créer de baux inutilement courts, ceci entraînant une augmentation significative
du taux de broadcast sur le réseau. Le compromis est à trouver entre la durée moyenne de connexion des
utilisateurs, la réserve d’adresses IP du serveur, le nombre d’abonnés…
Le serveur DHCP :
Un serveur DHCP dispose d’une plage d’adresses à distribuer à ses clients. Il tient à jour une base de
données des adresses déjà utilisées et utilisées il y a peu (C’est ce qui explique que l’on récupère souvent la
même adresse, le DHCP ayant horreur des changements. Lorsqu’il attribue une adresse, il le fait par
l’intermédiaire d’un bail. Sur un réseau d’entreprise où l’on dispose d’assez d’adresses pour le nombre de
postes et que ces derniers sont en service toute la journée, le bail peut être d’une semaine ou plus encore.
Après expiration du bail, ou résiliation par le client, les informations concernant ce bail restent mémorisées
dans la base de données du serveur pendant un certain temps. Bien que l’adresse IP soit disponible, elle ne
sera pas attribuée en priorité à une autre machine. C’est ce qui explique que l’on retrouve souvent la même
adresse d’une session à l’autre.
Le DHCP et les Réseaux Complexes :
Si le réseau physique est formé de plusieurs sous réseaux logiques, avec des routeurs entre chaque sous
réseau, le tout peut fonctionner avec un seul serveur DHCP…
Les requêtes DHCP doivent pouvoir atteindre le serveur qui est situé sur un autre réseau logique, elles
doivent donc passer les routeurs, ce qui n’est théoriquement pas possible, car un « broadcast » n’est pas
retransmis (par défaut) par les routeurs.
Il est alors nécessaire d’installer sur un ou plusieurs routeurs un agent de relais (relay DHCP) qui va
intercepter les requêtes en broadcast et les transmettre à un serveur DHCP connu de cet agent.
C’est l’agent de relais situé sur la passerelle qui va faire l’intermédiaire et le client réussira tout de même à
obtenir une adresse, donnée par un DHCP situé sur un autre réseau, mais relayé par l’agent de relais. Le
serveur DHCP sera même capable d’envoyer des paramètres différents, suivant le sous réseau du client…
Configuration des Paramètres :
Le premier service fourni par DHCP est la fourniture d’un espace de mémorisation des paramètres réseaux
pour les clients de ce réseau. Le modèle DHCP de mémoire persistante est basé sur la mémorisation,
comme point d’entrée, d’une valeur clef pour chaque client, cette clef est un identifiant unique (par exemple
un nombre IP sous réseau et un identifiant unique à l’intérieur du sous réseau) et la valeur contient les
paramètres de configuration du client.
Le second service fournit par le DHCP est l’allocation temporaire ou permanente d’adresses réseau (IP) aux
clients. Le mécanisme pour l’allocation dynamique d’adresses est simple : un client demande l’utilisation
d’une adresse pour une certaine période. Le mécanisme d’allocation (la collection des serveurs DHCP) ne
garantit pas une ré allocation de l’adresse pendant le temps demandé et tend à retourner la même adresse
réseau à chaque client qui fait la demande. Dans ce document, la période pendant laquelle une adresse
réseau est allouée à un client est nommée « bail » [11]. Le client peut étendre ce bail avec des requêtes. Le
client peut émettre un message pour libérer l’adresse quand il ne l’utilise plus. Le client peut demander une
assignation permanente en demandant un bail permanent, un serveur peut choisir de donner un bail très long
mais pas infini pour permettre la détection qu’un client s’est retiré du réseau.
Les références :
La principale documentation sur le DHCP est constituée par les RFCs :
RFC951 (BOOTP), RFC1541 (DHCP), RFC1542 (interaction entre BOOTP et DHCP), RFC2131, RFC2132.
