DHCP : Mode de fonctionnement
Tout ordinateur équipé d’une carte réseau et dépourvu d’adressage IP, envoie donc, en diffusion un datagramme DHCP DISCOVER, en s’adressant au port de service UDP/67 de n’importe quel serveur écoutant sur ce port (soit l’adresse MAC ff:ff:ff:ff:ff:ff). Ce paquet contient entre autres choses, l’adresse MAC du client.
Tout serveur DHCP ayant reçu ce datagramme (s’il est en mesure de proposer une adresse sur le réseau auquel le client fait partie), émet une offre DHCP OFFER, à l’attention dudit client, sur le port UDP/68, identifié par son adresse physique. Cette proposition contient l’adresse IP du serveur, l’adresse IP et le masque de sous-réseau, proposées au client.
REMARQUE : il est possible que plusieurs offres soient ainsi distribuées au client. Il est en effet rare qu’un seul serveur DHCP soit configuré pour un même réseau.
Ce dernier retient une des offres reçues (généralement, la première qui lui est parvenue), et diffuse sur le réseau un nouveau datagramme de requête DHCP REQUEST. Celui-ci contient l’adresse IP du serveur ayant répondu ainsi que l’adresse qui lui a été fourni précédemment. Ce type de requête a pour objectif de demander au serveur sélectionné, l’assignation de cette adresse, l’envoi éventuel des valeurs des paramètres et aussi d’informer les autres serveurs DHCP, ayant également fait une offre, de ne pas donner suite.
Pour finir, le serveur prépare un paquet d’accusé de réception, aussi appelé DHCP ACK fixant l’adresse IP et son masque de sous-réseau au client ainsi que la durée du bail de cette adresse.
En l’absence de serveur DHCP, le client s’auto-attribue une adresse appelée APIPA (Automatic Private Internet Protocol Addressing) s’appuyant sur la plage 169.254.0.0./16. Sinon, le processus standard de résolution tient dans l’ordre d’exécution des requêtes. On parle de processus DORA (Discover, Offer, Request, Ack) :
1 - Le client DHCP diffuse un paquet DHCPDISCOVER. Il s’agit d’un message diffusé à l’ensemble des ordinateurs du sous-réseau. Le seul équipement à pouvoir répondre est le serveur DHCP (ou un agent relais DHCP, dans le cas où le brin réseau n’est pas le même). Dans ce dernier cas, c’est l’agent qui transfère le message au serveur DHCP auquel il est rattaché.
2 - Tout serveur DHCP présent sur le sous-réseau doit être en mesure de répondre, en émettant un paquet DHCPOFFER. Ce dernier fournit ainsi au client une adresse potentielle.
3 - Le client, après avoir reçu le paquet DHCPOFFER peut recevoir d’autres offres provenant d’autres serveurs DHCP. Dans ce cas, le client doit choisir l’adresse fournit par le serveur lui ayant répondu en premier et répond par un paquet DHCPREQUEST, contenant un identificateur du serveur. Cela permet aux serveurs DHCP recevant la diffusion de savoir quel est le serveur dont le message DHCPOFFER a été accepté par le client.
4 - Les serveurs DHCP reçoivent ainsi le paquet DHCPREQUEST, émis par un client. Les serveurs qui n’ont pas été élus par le message DHCPREQUEST, se servent de ce dernier comme notification pour signifier le refus du client. Par contre, le serveur sélectionné stocke l’adresse IP du client dans sa base de données et répond par un message DHCPACK. Lorsque le serveur DHCP ne peut fournir l’adresse promise, contenue dans le message DHCPOFFER initial, il envoie alors un datagramme DHCPNAK.
REMARQUE : et, oui, le client n’est que locataire de cette adresse IP. Il n’en n’est pas le propriétaire définitif. D’où la notion de bail sur laquelle on va revenir un peu plus loin. De plus, le client reçoit également d’autres paramètres comme :
- L’adresse IP de sa passerelle
- Les adresses des serveurs de noms DNS/BIND
- Éventuellement les adresses IP des serveurs de noms NBNS/WINS (cas d’un DHCP Windows)
IMPORTANT : les serveurs DHCP doivent systématiquement disposer d’une adresse IP statique. Il ne faut d’ailleurs pas confondre adressage IP fixe et adressage IP statique. Le serveur DHCP peut attribuer des adresses IP fixes (c’est-à-dire, toujours la même en fonction de l’adresse MAC reçue du client) alors que le serveur DHCP ne peut posséder qu’une adresse IP statique (configurée manuellement).
Il est possible de mettre en évidence, facilement ce processus DORA, en effectuant une analyse des trames réseau circulant durant les échanges entre le client et son serveur DHCP :