DHCP, le cours

Rappels S2

Le protocole

   Serveur          Client         Serveur
(non sélectionné)              (sélectionné)
    V             Début             V
    | _____________/|\_____________ |
    |/ DHCPDISCOVER | DHCPDISCOVER \|
    |               |               |
Détermine           |          Détermine
une config.         |          la config.
    |\              |  ____________/|
    | \_________    | /DHCPOFFER    |
    |  DHCPOFFER\   |/              |
    |            \  |               |
    |      Collecte les réponses    |
    |              \|               |
    |     Selectionne une config.   |
    | _____________/|\_____________ |
    |/ DHCPREQUEST  |  DHCPREQUEST \|
    |               |               |
    |               |         Enregistre 
    |               |         la config.
    |               | _____________/|
    |               |/ DHCPACK      |
    |    Configuration terminée     |
    |               |               |
    .               .               .
    .               .               .
    |               |               |
    |          Déconnexion          |
    |               |\_____________ |
    |               |  DHCPRELEASE \|
    |               |               |
    |               |      clos le bail
    v              FIN              v

Le service et serveur DHCP ont les rôles de :

  • Louer une adresse IP aux matériels qui n'ont pas d'adresse IP
  • Confier une adresse IP statique pour les matéreils qui ont une réservation

Les données fournies par le DHCP sont :

  • [toujours] une adresse IP et son masque dans une plage définie dans la config du serveur.
  • [toujours] une adresse de passerelle : le routeur de sortie du réseau.
  • [toujours] un bail de location : la durée d'autorisation d'utilisation de l'adresse.
  • [souvent] des adresses de DNS
  • un nom de domaine
  • un nom de machine dans le domaine (en cas de réservation)
  • d'autres options ?

Le protocole DHCP fonctionne sur les ports 67 et 68. Il n'est pas routable car il utilise des trames en boradcast MAC.

Le protocole DHCP fonctionne comme suit :

  1. DHCPDISCOVER : (broadcast) Le PC recherche un serveur DHCP dans le réseau connecté.
  2. DHCPOFFER : (broadcast) Les serveurs répondent au client avec une offre de configuration (IP, masque, etc...).
  3. DHCPREQUEST : (broadcast) Le PC demande aux serveurs la confirmation des paramètres reçus d'un serveur et décline implicitement les autres offres.
    Généralement, c'est le plus rapide qui est choisi. Le plus rapide est souvent le plus proche en termes de sauts entre les switchs.
  4. DHCPACK : (unicast) le serveur envoie un accusé de réception au PC. Il approuve les paramètres du client et confirme les paramètres.

  5. DHCPRELEASE : Le client informe le serveur que l'IP est libérée avant la fin du bail.
  6. DHCPINFORM : Le client effectue une demande d'information, sur la config actuelle du réseau, au serveur.

 

Durant la procédure, le serveur ou le client peuvent refuser la demande ou l'offre.

Si la demande n'est pas approuvée après dhcpRequest, le serveur envoie un DHCPNAK : refus du serveur au client demandeur (/ex. l'adresse demandée est déjà allouée depuis qu'elle a été proposée).

Si le client, après DHCPACK, trouve que l'adresse ne lui convient pas ou qu'elle est invalide selon lui (/ex. l'IP est une adresse de réseau), il envoie un refus DHCPDECLINE.

 

Au milieu du bail, le client effectue une nouvelle demande dhcpREQUEST pour prolonger le bail.
le serveur peut accepter avec un dhcpACK ou refuser par un dhcpNACK.

Sans réponse du serveur, le client refait sa demande au bout de 87% du temps et sinon, il perd son adresse à l'échéance du bail.

Conditions particulières

Réservations d'adresses

Il est possible de réserver une adresse IP particulière à un matériel spécifique en fonction de son adresse MAC. Cela est utilisé surtout pour les serveurs.

Recoupement d'étendues

Il est possible de configurer plusieurs serveurs avec la même étendue. Ils se partageront alors la distribution d'adresses.

À noter que si les étendues se recoupent ou se supperposent, cela ne soulève pas de problème. Les serveurs effectuent un ping de vérification que l'adresse soit libre avant de la proposer.

Répartir la charge avec DHCP

Répartition entre les serveurs DHCP

Lors de la réponse des serveurs (DHCPOFFER), le client choisi généralement le premier qui répond : le plus rapide ou le plus proche en termes de sauts.

Cela induit que deux cleints utiliseront chacun son serveur en fonction de la "proximité" de celui-ci.

On a donc une forme de répartition de charge entre les serveurs.

 

Répartition entre les services proposés

Cette répartition entre les serveurs DHCP peut être mise à profit pour effectuer une répartition de charge supplémentaire entre :

  • les étendues différentes
  • les routeurs et passerelle avec une option différente entre les deux serveurs (option routers)
  • les serveurs DNS avec l'inversion des serveurs DNS principal/secondaire dans l'option domain-name-servers

Voir les exemples plus loin

Configuration de isc-dhcp-server (Linux)

Le fichier de configuration type d'un serveur isc-dhcp-server est dans le dossier /etc/isc-dhcp-server/dhcpd.conf

Partie commune

Configuration globale par défaut

ici
max-lease-time 240;
default-lease-time 240;
deny unknown-clients;
option domain-name "momdomaine.com";
option domain-name-servers hote1.momdomaine.com, hote2.momdomaine.com, 192.168.1.250, 192.168.1.251;
option routers 192.168.1.254; # passerelle par défaut pour la config

Exemple d'étendue d'adresses

Configuration particulière de l'étendue : intervalle d'adresses et paramètres de la plage.

subnet 192.168.1.0 netmask 255.255.255.0 {
	range 192.168.1.10 192.168.1.20;
	range 192.168.1.110 192.168.1.120;
	option broadcast-address 192.168.1.255;
	option routers 192.168.1.253; # on peut en mettre plusieurs
}

Exemple de réservations d'adresse

Réservations individuelle

Donner une adresse fixe à un hôte sur la base de son adresse MAC. Ajout d'autres paramètres spécifiques

host hote5 {
	hardware ethernet 08:00:00:a2:5f:34;
	fixed-address 192.168.1.215;
	server-name "bootp.momdomaine.com";
}
Réservations de groupe

Un groupe permet de définir des paramètres communs aux hôtes du groupe

group {
	# définir la passerelle du groupe d'hôtes
	option routers 192.168.1.253;
 
	# donner un nom de domaine à un hôte
	host hote3 {
	  hardware ethernet 08:00:00:11:d2:3d;
	  option host-name pc_num3;
	}
 
	# donner une adresse fixe à un hôte
	host hote4 {
	  hardware ethernet 08:00:00:cc:a0:b1;
	  fixed-address 192.168.1.104;
	}
}

 

Exemple de répartition de charge avec DHCP

Extraits de configurations

# inversion des DNS
option domain-name-servers 192.168.1.251, 192.168.1.250;
# inversion des passerelles
option routers 192.168.1.253, 192.168.1.254;
# autre étendue
subnet 192.168.1.0 netmask 255.255.255.0 {
	range 192.168.1.30 192.168.1.40;
	option broadcast-address 192.168.1.255;
}
Serveur 1 Serveur 2
# répartition sur les DNS
option domain-name-servers 192.168.1.250, 192.168.1.251;
# répartition sur les passerelles
option routers 192.168.1.254, 192.168.1.253;
# répartition sur les étendues
subnet 192.168.1.0 netmask 255.255.255.0 {
	range 192.168.1.10 192.168.1.20;
	option broadcast-address 192.168.1.255;
}
 

 

Conclusion