Dynamic Host Configuration Protocol DHCP [RFC 2131 - 1997 ] IUT d'Orsay réseaux IUT d'Orsay réseaux DHCP Dynamic Host Configuration Protocol DHCP [RFC 2131 - 1997 ]
BUT Permet à un ordinateur qui se connecte sur un réseau local d'obtenir et de configurer dynamiquement et automatiquement : Son adresse IP masque de son sous-réseau passerelle par défaut adresse IP du serveur DNS nom de son domaine
Fonctionnement Lorsque vous connectez un ordinateur sur le réseau il n’a aucune connaissance de son adresse IP Par contre il connait: son adresse Mac L’adresse de broadcast
Demande d’adresse IP
Demande de bail/adresse IP Le poste client vient de se connecter, il n’a pas d’adresse IP En DHCP une adresse IP n’est fournit que pour un temps donné : Le bail. C’est pourquoi on parle de demande de bail plutôt que d’adresse IP Un bail a une durée : lease-time
Demande de bail - UN serveur DHCP time DHCPDiscover 2 DHCPOffer 1 DHCPRequest 3 4 DHCPAck client serveur t0 C’est SEULEMENT après t0 que le client peut utiliser l’adresse IP communiquée par le serveur jusqu’à t0 + lease-time
Trames DHCP DHCPDISCOVER :Permet de trouver un serveur DHCP. La trame est une trame de « broadcast », elle est envoyée à l’adresse 255.255.255.255. Le client n’ayant pas d’adresse prend l’adresse 0.0.0.0 DHCPOFFER : contient une proposition de bail, l’adresse IP du serveur et l’adresse Mac du client. DHCPREQUEST : indique à tous les serveurs quel bail il a accepté et/ou demande de renouvellement de bail DHCPACK : le serveur confirme le bail.
Renouvellement de bail A la moitié du bail, le client demande le renouvellement (prolongation de son bail), il n’y aura alors que les trames DHCPREQUEST et DHCPACK qui seront échangées. Si au bout des 7/8 du bail pas de réponse du serveur (ie pas de DHCPACK) alors le client essayera de joindre un serveur DHCP quelconque sur le réseau. Lors du renouvellement, le client utilise l’adresse IP donnée précédemment par le serveur Un renouvellement est donc beaucoup plus simple
Demande de renouvellement de bail time client 3 DHCPRequest serveur DHCPAck 4 t1 Le client peut utiliser l’adresse IP communiquée par le serveur jusqu’à t1+lease-time
Les paquets IP échangés Lors d’un renouvellement de bail Source Destination Protocol Info 192.168.0.9 192.168.0.253 DHCPRequest 192.168.0.253 192.168.0.9 DHCPAck
Message DHCP
Message DHCP Envoyé par le Client DHCPDISCOVER demande de localisation des serveurs DHCP DHCPREQUEST demande de bail DHCPDECLINE refus d’adresse IP, elle est déjà utilisée DHCPRELEASE libération son bail DHCPINFORM demande de paramètres locaux (autre qu’une adresse IP)
Message DHCP Envoyé par le Serveur DHCPOFFER réponse à un DHCPDISCOVER DHCPACK contient des paramètres et l'adresse IP du client DHCPNAK refus de bail
Problème de l’œuf et de la poule Encapsulation d’un message DHCP
Encapsulation d’un message DHCP BOOTP DHCP Trame contenant un message « DHCP » UDP Message DHCP Eth IP UDP IP par exemple Ethernet
Trame contenant un message DHCP Adresse physique de l’émetteur Adresse physique du destinataire de la trame Ethernet Adresse IP source Adresse IP destinataire du paquet IP IP Port source Port destination du datagramme UDP Message DHCP
Le Problème de l’oeuf et la poule Niveau physique A moment de la demande de bail, Est-ce que le client connaît son adresse physique ? Est-ce que le client connaît l’adresse physique du serveur DHCP ? QUE FAIRE ???
Le Problème de l’oeuf et la poule Niveau réseau A moment de la demande de bail, Est-ce que le client connaît l’adresse IP du serveur DHCP ? Est-ce que le client connaît son adresse IP ? Est-ce que le serveur DHCP connaît l’adresse IP du client? QUE FAIRE ???
DIFFUSION niveau physique Diffusion (broadcast) distribution de la requête DHCP à tous les postes connectés Client DHCP Adresse de diffusion: ff:ff:ff:ff:ff:ff
DIFFUSION niveau réseau Diffusion (broadcast) distribution de la requête DHCP à tous les postes connectés Client DHCP Utilsation de l’adresse IP de diffusion générique 255.255.255.255
Niveau Transport - requêtes Le client DHCP envoie la requête sur le port 67. Le serveur DHCP écoute sur le port 67. Client DHCP Serveur DHCP 67
Niveau Transport - réponses Le serveur DHCP envoie la requête sur le port 68. Le client DHCP écoute sur le port 68. Client DHCP Serveur DHCP 68
DHCP : le client utilise un port réservé Port serveur DHCP 67 Port Client DHCP 68 Client DHCP ServeurDHCP 65 66 67 68 69 65 66 67 68 69 L'en-tête UDP contient les numéros de port source et destination. Le protocole BOOTP utilise deux numéros de ports réservés, « client BOOTP » (n° de port 68) et « serveur BOOTP » (n° de port 67). Le client envoie ses requêtes en utilisant « serveur BOOTP » comme port de destination, habituellement à l'adresse de diffusion. Le serveur envoie ses réponses en utilisant « client BOOTP » comme port de destination ; en fonction des facilités offertes par le noyau ou le pilote du serveur, cela peut être envoyé ou non à l'adresse de diffusion (voir les explication plus loin dans la section intitulée « Problème de l'Oeuf et de la Poule » plus bas). La raison pour laquelle deux ports réservés sont utilisés, est que l'on veut éviter de « réveiller » et de programmer les démons serveurs BOOTP, quand une réponse d'amorçage doit être diffusée vers un client. Puisque le serveur et les autres hôtes n'écouteront pas le port « client BOOTP », de telles diffusions entrantes seront filtrées au niveau du noyau. Nous ne pourrions pas simplement permettre au client de choisir un numéro de port « aléatoire » pour le champ de port source UDP, puisque étant donné que la réponse du serveur peut être diffusée, un numéro de port choisi aléatoirement pourrait troubler les autres hôtes qui sont justement en train d'écouter sur ce port.
Trame contenant un DHCPDiscover 00:20.8f:b9:49:37 ff:ff:ff:ff:ff:ff Ethernet 0.0.0.0 255.255.255.255 IP 68 67 UDP Message DHCPDiscover
Trame contenant DHCPDiscover Adresse physique du client DHCP Trame contenant DHCPDiscover 00:20.8f:b9:49:37 ff:ff:ff:ff:ff:ff adresse physique de diffusion Adresse IP « neutre » 0.0.0.0 255.255.255.255 Adresse IP de diffusion générique 68 67 Port source datagamme Message DHCPDiscover
Trame contenant un DHCPOffer 00.00.b4:bb:7d:ee 00:20.8f:b9:49:37 Ethernet 192.168.0.253 IP 67 68 UDP Message DHCPDiscover
DHCPOffer adresse physique du client 00.00.b4:bb:7d:ee Adresse physique du serveur DHCP 00.00.b4:bb:7d:ee 00:20.8f:b9:49:37 Adresse IP serveur DHCP 192.168.0.253 67 68 Port source datagamme Message DHCPDiscover
Trame contenant un DHCPRequest 00:20.8f:b9:49:37 ff:ff:ff:ff:ff:ff Ethernet 0.0.0.0 255.255.255.255 IP 68 67 UDP Message DHCPRequest
Demande de baux DES serveurs DHCP client DHCPDiscover DHCPDiscover DHCPOffer DHCPOffer DHCPRequest DHCPRequest DHCPAck Le client refuse mon offre time
Bilan des échanges lors d’une demande de bail
Les paquets IP échangés Source Destination Protocol Info 0.0.0.0 255.255.255.255 DHCPDiscover # le serveur DHCP vérifie que l’adresse IP qu’il veut offrir n’est pas utilisée Serveur DHCP Broadcast ARP 192.168.0.9? 192.168.0.253 DHCPOffer 0.0.0.0 255.255.255.255 DHCPRequest 192.168.0.253 192.168.0.9 DHCPACK # le client vérifie via ARP que personne n’utilisa sa nouvelle adresse Client DHCP Broadcast ARP 192.168.0.9?
Format d’un message DHCP
Dynamic Host Configuration Protocol DHCP a été conçu comme complément de BOOTP- Bootstrap Protocol – BOOTP: [RFC 951 - 1985] Protocole de démarrage Une station récupère les informations pour s’amorcer (« booter ») sur un serveur « d’amorçage » distant
Format d’un message BOOTP HTYPE OP HLEN HOPS identifiant session secs flags adresse IP client (écrit par le client) adresse IP client (proposée par le serveur) serveur adresse IP gaterway adresse IP adresse physique du client nom du serveur Fichier d’amorçage OPTION
Format d’un message DHCP HTYPE OP HLEN HOPS identifiant session secs flags adresse IP client (écrit par le client) adresse IP client (proposée par le serveur) serveur adresse IP gaterway adresse IP adresse physique du client nom du serveur Fichier d’amorçage OPTIONS définies dans DHCP
Sous Unix/Linux
Sous Unix/Linux Client DHCP : dhclient Serveur DHCP : dhcpd Fichier de configuration du serveur : /etc/dhcpd.conf
Exemple de fichier dhcpd.conf # option definitions common to all supported networks... option domain-name "voip.u-psud.fr"; option domain-name-servers 129.175.34.35, 129.175.36.37; option option-150 code 150 = ip-address; option option-150 192.168.200.10; default-lease-time 600; max-lease-time 7200; subnet 172.16.2.0 netmask 255.255.255.128 { #VOIP IPN bat 106 - vlan 1201 range 172.16.2.4 172.16.2.126; option routers 172.16.2.1; } subnet 172.16.2.128 netmask 255.255.255.128 { #VOIP CSNSM bat 104 - vlan 1204 range 172.16.2.132 172.16.2.254; option routers 172.16.2.129;
Remerciement http://christian.caleca.free.fr/dhcp/ http://www.frameip.com/dhcp/ RFC en Français : http://abcdrfc.free.fr/ Manuel de dhcpd, de dhclient, et de dhcpd.conf