====== Cours : Le protocole DHCP ====== ===== Présentation ===== Le protocole **DHCP** (Dynamic Host Configuration Protocol) permet la **configuration TCP/IP dynamique** (automatique) des hôtes d'un réseau local en fournissant au minimum les informations suivantes pour une communication sur le **réseau local et sur Internet** : * une **adresse IP**, * le **masque de sous-réseau**, * la **passerelle par défaut**, * les **serveurs de noms DNS primaire et secondaire**. Ce service est DHCP apporte une solution pour : * fournir sur le réseau une configuration aux ordinateurs quand ils sont **actifs** , * **centraliser** la gestion des informations de configuration TCP/IP et permettre de répercuter facilement toutes modifications de ces informations; * **faciliter** les tâches d'administration répétitives et fastidieuses tout en **évitant les erreurs** de configuration. ===== Quels hôtes utilise ce service ===== A priori tout hôte qui **n'est pas en permanence actif** sur le réseau ou dont l'**adresse IP peut changer** sans que cela prête à conséquence : * ordinateurs fixes et portables des utilisateurs, * smartphones, tablettes, * objets connectés. Par contre, **ne sont pas utilisateur** de ce service : * les serveurs, * les équipements d'interconnexion réseaux : routeurs, switchs administrables, point d'accès Wifi, etc. * les périphériques réseaux : imprimantes, téléphones IP, etc. ===== Fonctionnement du protocole DHCP ===== ==== Prérequis ==== * Le protocole utilisé est BOOTP et utilise des datagrammes UDP. * Le serveur DHCP doit avoir une adresse IP fixe et utilise le **port UDP 67**. * Les clients DHCP utilisent le **port UDP 68**. ==== Fonctionnement ==== Quand un hôte en configuration dynamique (DHCP) **démarre** : * il n'a **aucune configuration TCP/IP**, * il **ne connait pas le réseau** ni l'**adresse du serveur DHCP**. * l'hôte envoie en diffusion **Broadcast** (adresse destinataire 255.255.255.255) un datagramme (**DHCP DISCOVER**) qui s’adresse au port 67 de n’importe quel serveur DHCP à l’écoute sur ce port. Ce datagramme comporte entre autres l’adresse physique (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 appartient le client, envoie une offre DHCP (**DHCP OFFER**) à l’attention du client (sur son port 68), identifié par son adresse physique. Cette offre comporte : * l’adresse IP du serveur, * l’adresse IP et le masque de sous-réseau qu’il propose au client. * Plusieurs offres soient adressées au client s'il y a plusieurs serveurs DHCP. * Le client retient la première des offres reçues 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 **options de configuration** comme la **passerelle** ainsi que les noms des **serveurs DNS** * et d’informer les autres serveurs qui ont fait une offre qui n’a pas été retenue. * Le serveur DHCP élabore un datagramme d’accusé de réception (**DHCP ACK pour acknowledgement**) qui assigne au client : * l’**adresse IP** et son **masque de sous-réseau**, * la **durée du bail** de cette adresse (dont découlent deux valeurs T1 et T2 qui déterminent le comportement du client en fin de bail), et éventuellement d’autres paramètres : * adresse IP de la passerelle par défaut, * adresses IP des serveurs DNS. {{ :si2:dhcp_new.gif |}} La liste des options que le serveur DHCP peut accepter est consultable dans la RFC 2132 : Options DHCP et Extensions fournisseur BOOTP, Chapitre RFC 1497 : Extensions fournisseur. 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 : * **DHCPDISCOVER** : pour localiser les serveurs DHCP disponibles. * **DHCPOFFER** : réponse du serveur à un paquet DHCPDISCOVER, qui contient les premiers paramètres. * **DHCPREQUEST** : requête diverse du client pour par exemple prolonger son bail. * **DHCPACK** : réponse du serveur qui contient des paramètres et l'adresse IP du client. * **DHCPNAK** : réponse du serveur pour signaler au client que son bail est échu ou si le client annonce une mauvaise configuration réseau. * **DHCPDECLINE** : le client annonce au serveur que l'adresse est déjà utilisée. * **DHCPRELEASE** : le client libère son adresse IP. * **DHCPINFORM** : le client demande des paramètres locaux, il a déjà son adresse IP. ==== Renouvellement du bail ==== Les adresses IP dynamiques ont une durée limitée (durée du bail, ou lease time). Avant la fin du bail, le client va demander le **renouvellement** de celui-ci : * par défaut après **50 %** de la durée du bail (valeur T1) ) auprès du serveur qui lui a fourni sa confioguration IP transmission IP classique. * par défaut à **87,5 %** de la durée du bail (valeur T2) et que le bail n’a pas pu être renouvelé cetet fois-ci par par diffusion. Si le renouvellement n'a pas pu se faire au terme du bail, l’adresse IP est **désactivée**. ==== Configuration du serveur DHCP ==== Un serveur DHCP utilise réservoir d’adresses IP (**PPool d'adresses IP**) pour les clients. Il peut gérer : * plusieurs plages, disjointes ou contiguës. * pour plusieurs réseau IP différents Les adresses IP non gérées par le serveur DHCP peuvent servir pour de l'adressage IP statique à destination des serveurs, routeurs, switchs administrables, AP Wifi, imprimantes réseau…). Il est possible : * d’**exclure** des adresses ou blocs d’adresses comprises dans une plage (pour un usage en adressage statique par exemple). * d'effectuer des réservations d’adresses IP pour des hôtes précis en utilisant leur adresse physique MAC. Cela permet de gérer des hôtes avec des adresses IP qui doivent rester fixe en gardant le contrôle de centralisé et automatique les autres paramètres IP. **ATTENTION** : des serveurs DHCP situés sur le même LAN n’échangent aucune information relative aux baux qu’ils ont distribués. Les plages d'adresses IP gérées ne doivent pas se **recouvrir** d'avoir des dysfonctionements dans les affectations et les renouvellements d'adresses IP (adresses IP identiques pour plusieurs hôtes). ==== Client et serveur sur des LAN différents ==== Lorsque le serveur DHCP et le client ne figurent pas sur le même segment Ethernet, les diffusions émises par ce dernier ne parviennent pas au serveur parce que les routeurs ne transmettent pas les diffusions générales (broadcast). Dans ce cas, il est nécessaire d'utiliser un **agent de relais DHCP**. L'hôte qui contient l'agent relais : * est configuré avec une **adresse IP statique** et utilsie le port **UDP 67**, * connait l’adresse d’un serveur DHCP * transmet directement les messages de découverte DHCP reçus sur le port 67 au serveur DHCP. L'agent relais place sa propre adresse IP dans le champ **GIADDR** de la trame DHCP reçue du client. Le serveur DHCP : * utilise le champ **GIADDR** pour déterminer le **sous-réseau** et proposer une adresse dans la bonne étendue d'adresses IP. * répond à l'agent (adresse GIADDR) en unicast L'agent relais transmet alors la réponse en broadcast sur le segment Ethernet du client demandeur. L'agent relais peut être configuré : * sur un **routeur**, * sur un **serveur** situé dans le **LAN du client**. ===== Schéma à réaliser sur le fonctionnement de l'agent-relais DHCP ===== Réalisez le **diagramme de séquence** des échanges de messages entre l'agent relais DHCP et le serveur DHCP en utilisant la solution en ligne **PlantUML** * Site de PlantUML : https://plantuml.com/fr/ * Le guide de PlantUML : http://plantuml.com/fr/guide * Le site pour la création du diagramme en ligne de PlantUML : http://www.plantuml.com/plantuml/uml/