Skip to content

DHCP

DHCP signifie Dynamic Host Configuration Protocol. Il permet à un client qui se connecte à un nouveau réseau local (LAN) d'obtenir une adresse IP valide au sein de ce LAN, afin de pouvoir communiquer avec les autres machines du LAN.

DHCP est une brique essentielle de tout réseau LAN où des clients ne doivent/veulent pas choisir et saisir leurs informations réseau manuellement. Comme l'adresse IP, ou l'adresse de la passerelle.

DORA

I. Intro

DHCP est un protocole qui permet de proposer une IP disponible à un client qui en fait la demande.

Plus concrètement, le serveur DHCP propose aux clients du réseau :

  • une IP disponible au sein du LAN
  • (facultatif) l'adresse de la passerelle du LAN
  • (facultatif) l'adresse d'un serveur DNS utilisable

Il existe généralement un serveur DHCP dans tous les LANs du monde.
Tous les réseaux auxquels on se connecte et pour lesquels on ne saisit pas une IP manuellement, ainsi qu'une adresse de passerelle et/ou de DNS, alors il y a forcément un serveur DHCP sur le réseau.

Dans les réseaux de particuliers, chez nous, c'est la box qui porte le serveur DHCP.

II. Fonctionnement de DHCP

Tous les screens sont issus d'un échange réel entre mon PC et un serveur DHCP, le même pour tous les screens.

1. L'échange DORA

Considérons un client qui arrive dans un LAN dans lequel il ne s'est jamais connecté pour la suite.

L'échange DHCP consiste en 4 trames (DORA) :

  • Discover : permet au client de trouver le serveur DHCP au sein du LAN, s'il y en a un
  • Offer : le serveur propose une IP au client
  • Request : le client accepte cette IP, et valide l'échange
  • Acknowledge : le serveur valide à son tour l'échange

DORA

Discover

La trame Discover a pour particularité d'avoir ff:ff:ff:ff:ff pour MAC de destination : l'adresse de broadcast.
Ainsi, toutes les machines du LAN recevront cette trame Discover.
Le serveur DHCP du réseau pourra alors continuer l'échange en répondant directement au client (en utilisant la MAC du client qu'il connaît désormais) avec un Offer.

Discover

Offer

Offer est la trame que répond le serveur au client. C'est dans cette trame que le serveur propose plein d'informations au client, notamment :

  • une adresse IP disponible au sein du réseau
  • que le client peut utiliser poru configurer sa carte réseau
  • l'adresse IP d'un serveur DNS joignable depuis ce réseau
  • que le client pourra utiliser s'il a besoin de résoudre des noms
  • c'est une Option DHCP
  • l'adresse IP de la passerelle du réseau s'il y en a une
  • que le client pourra utiliser comme sa passerelle
  • c'est une Option DHCP
  • et là

Offer

Request

Request est la trame que le client répond au serveur à son tour.

➜ C'est le client qui sollicite le serveur pour lui demander si l'adresse IP qu'il a obtenue est bien disponible ().

Il peut aussi demander confirmation sur d'autres informations du réseau, ou indiquer des d'autres informations qui le concernent. Par exemple, la machine client indique dans cette trame son hostname pour que le serveur DHCP l'apprenne (ici).

Ca peut sonner comme un doublon inutile, on en parle plus bas.

Request

Acknowledge

La dernière trame de l'échange, que le serveur envoie au client, pour lui confirmer que l'adresse IP qui a été demandée dans le Request est bien disponible. C'est un message qui contient toutes les informations que le client peut bel et bien utiliser.

Le client, à la réception de cette trame, va appliquer la configuration sur son interface réseau.

ack

Si le serveur DHCP veut indiquer au client que l'adresse IP n'est pas disponible, il répond une trame NACK. Il est amené à répondre une trame NACK notamment s'il a déjà un bail DHCP¨ créé pour cette adresse IP. On parle de bail DHCP plus bas.

2. Les options DHCP

Un serveur DHCP peut aussi proposer au client, en plus d'une IP disponible au sein du LAN, d'autres informations qui pourraient lui être utiles.

Ainsi, dans la plupart des cas, le serveur DHCP donnera au moins deux autres informations aux clients :

  • l'adresse IP de la passerelle du réseau
  • l'addrese IP d'un serveur DNS joignable depuis le LAN

Ces deux informations permettront au client d'avoir un "accès internet" normal.

Ces informations supplémentaires que peut proposer le DHCP à ses clients sont appelées options DHCP.

Il est aisé de visualiser ces options DHCP dans le Offer du serveur en lançant un p'tit Wireshark.

3. Bail DHCP

Un bail DHCP est un fichier texte qui est créé sur le serveur DHCP ET sur le client qui reçoit une IP : chacun crée son bail DHCP.

Le fichier est créé juste après un échange DORA. Ce bail permet de stocker les informations obtenues par les deux parties lors de l'échange DHCP.

Le serveur DHCP stocke notamment dans son bail :

  • adresse IP donnée au client
  • adresse MAC du client
  • date à laquelle le bail a été délivré
  • durée de vie du bail

Le client stocke notamment dans son bail :

  • adresse IP du serveur DHCP de ce LAN
  • date à laquelle le bail a été délivré
  • durée de vie du bail

➜ Le bail DHCP du client contient aussi l'adresse IP du serveur DHCP, afin qu'il s'en souvienne dans le cas de connexions ultérieures.

➜ Le bail DHCP du serveur contient la MAC du client. Ainsi, si le client revient ultérieurement sur le réseau, le serveur pourra lui donner la même IP que lors de sa première connexion.

➜ Un bail DHCP a une durée de vie. A l'issue de cette durée de vie, le client effectuera de nouveau l'échange DHCP avec le serveur.

4. Un client de retour sur un réseau connu

Lorsqu'un client revient sur un réseau auquel il s'est déjà connecté, il a déjà un bail DHCP pour ce réseau.

S'il est encore valide (le bail a une date d'expiration), il va simplement ré-appliquer la configuration.

S'il n'est plus valide, il va recontacter le serveur DHCP pour refaire un échaneg et obtenir un nouveau bail DHCP valide (et donc s'assurer d'avoir une adresse IP utilisable).

Cependant il est inutile qu'il renvoie un Discover en broadcast, car son bail comporte l'adresse IP du serveur DHCP.

Ainsi, il va directement envoyer une trame Request au serveur.

II. Quelques attaques sur DHCP

1. DHCP spoofing

Il existe une attaque liée au fonctionnement du protocole DHCP appelée "DHCP spoofing".

En effet, puisque tout le monde reçoit le Discover, un hacker pourrait répondre au client à la place du serveur DHCP. Dans ce cas, c'est le hacker qui choisit quelle IP il donne au client, ainsi que les adresses IP de la passerelle et du serveur DNS que le client utilisera.

Evidemment, le hacker donnera au client sa propre IP pour IP de passerelle et de DNS. Ainsi, le client utilisera le hacker comme passerelle et serveur DNS : le hacker sera en man-in-the-middle entre le client et le reste du monde.

DHCP spoof

2. DHCP starvation

Une autre attaque (nulle mais efficace) très simple à mettre en oeuvre est appelée DHCP starvation.

Elle consiste, depuis une machine attaquante, à requêter toutes les adresses IP disponibles au sein du réseau, et ainsi épuiser la range d'adresse IP du serveur DHCP.

Si le serveur DHCP considère qu'il n'y a plus aucune adresse IP disponible au sein du réseau, prétenduement occupées, alors un nouveau client ne pourra pas recevoir une adresse IP.

Le réseau devient donc inutilisable pour tout nouveau client qui essaieraient de se connecter (DOS du réseau local).