samedi 25 septembre 2010

DHCP "Dynamic Host Configuration Protocol"

 DHCP:
Il s'agit d'un protocole qui permet dynamiquement d'attribuer une adresse IP à un système informatique qui se connecte au réseau.

Le serveur DHCP fournit également d'autres informations, comme la passerelle par défaut et le DNS (et éventuellement bien d'autres choses encore).

Ce système, bien pratique lorsqu'il fonctionne correctement, évite à l'utilisateur d'avoir à configurer manuellement sa pile IP. Il permet également à l'administrateur du réseau de modifier son architecture sans avoir à prévenir tous ses clients, ni à se déplacer de poste en poste.

Toutes nos « machin-box » dès lors qu'elles sont utilisées en mode routeur fournissent cette fonctionnalité, de façon plus ou moins élaborée. Nous verrons cependant ce protocole à travers le serveur DHCP d'ISC installé, comme d'habitude, sur une Debian (Lenny).

La bonne compréhension de ce protocole implique un minimum de connaissances de TCP/IP. Si vous ne les avez pas, lisez d'abord le chapitre « TCP/IP(v4) ».

Nous allons dans un premier temps construire un serveur DHCP et le tester avec des clients sour GNU/Linux et même aussi sous Windows, ne soyons pas plus sectaires que de raison.

La dernière page du chapitre permettra d'analyser dans le détail ce qu'il se passe dans l'obscurité d'un réseau IP et qui fait que « ça marche » le plus souvent.

Fonctionnement du protocole DHCP:
 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, aussi elle doit avoir une adresse IP fixe. Dans un réseau, on peut donc n'avoir qu'une seule machine avec adresse IP fixe, le serveur DHCP.

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 ça, 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 (n'oubliez pas que 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 :

    * 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)

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...




Aucun commentaire:

Enregistrer un commentaire