Monter un DHCP domestique sous Linux

Petit tutorial sur la façon de monter un serveur DHCP pour distribuer des IP à un réseau local. Nous y aborderons aussi la façon de distribuer des IP de manière « fixe » par rapport au client.

Fiche corrigée le 20/10/2005 : il y avait quelques coquilles dans les extraits du fichier de configuration…
Fiche corrigée le 12/01/2011 : il n’est jamais trop tard pour toutes les autres coquilles (merci Matthieu). Il faut dire que j’ai écris cet article avant de commencer à utiliser l’excellent Antidote !

 

 

1 – Le DHCP

Le DHCP, ou Dynamic Host Configuration Protocol, est un protocole d’attribution automatique d’adresses IP aux clients du réseau. Il existe en effet deux manières de configurer les clients d’un réseau TCP/IP: soit avec de IP fixes configurées sur chacun des postes soit de manière automatique avec un serveur DCHP.

Le DHCP sous Linux est géré par un client nommé dhcp et son serveur dhcpd. Le serveur DHCP est maintenant disponible en version 3 et se nomme courament dhcpd (« d » pour « deamon » c’est à dire « service » en teminologie GNU/Linux)

2 – Installation et configuration basique

2.1 – Installation

Comme toujours, il existe plusieurs manières d’installer son logiciel sous Linux: soit en compilant les sources, soit de manière automatique en fonction de la distribution utilisée:

La suite de la documentation a été réalisée sous Debian, la procédure peut changer quelque peu en fonction de la distribution utilisée notamment pour l’emplacement des fichiers de configuration et des scripts de lancement. Le serveur DCHP doit bien sûr être configuré en IP fixe car il ne peut pas lui même s’attribuer d’adresse dynamique.

Lors de l’installation vous devrez indiquer la carte sur laquelle écoute le serveur DHCP, il s’agit de celle connectée au LAN qui demandera la distribution d’adresses. Si vous devez la modifier par la suite vous pourrez éditer le fichier /etc/default/dhcp3-server.

Une fois l’installation effectuée, éditez le fichier de configuration localisé ici: /etc/dhcp3/dhcpd.conf et renseignez dedans le detail de votre réseau.

2.2 – Configuration des options globales

La première partie du fichier de configuration regroupes des options concernant l’ensemble du serveur, comme, par exemple, les options de bail.

### OPTIONS GLOBALES ###
# Nom de votre domaine
option domain-name "throud.net";
# Adresse des serveurs DNS (c'est tout a fait optionnel)
option domain-name-servers 84.168.20.40,84.168.20.80;
# Adresse des serveurs WINS si nécessaire
# Indispensable si vous utilisez SambaEdu3
option netbios-name-server 192.168.0.100;
# Durée de bail en seconde (par défaut et maximum)
default-lease-time 3000;
max-lease-time 6000;
# Le serveur est autoritaire pour les réseau déclaré plus bas authoritative;

La mention authoritative est très importante pour deux raison:

  • Elle sert, dans le cas d’un ordinateur portable par exemple, à forcer à un client à renouveler son bail si il dépend du serveur DHCP d’un autre réseau.
  • Elle sert aussi à imposer le serveur DHCP lorsqu’il y a plusieurs serveurs DHCP sur le réseau (dans le cas de serveurs primaires et secondaire par exemple)

2.3 – Configuration des sous réseaux

Une fois les options globales définies, vous pouvez commencer à déclarer les réseaux concernés par la distribution d’adresses dans la suite du fichier de configuration.

### DECLARATION DES RESEAUX ###
# Le sous-réseau 192.168.0.0 ayant pour masque 255.255.255.0
subnet 192.168.0.0 netmask 255.255.255.0 {
     # Plage d'adresses
     range 192.168.0.2 192.168.0.30;
     # Adresse du routeur
     option routers 192.168.0.1; }

Nota: vous devez utiliser un routeur dont l’adresse IP est fixe. Dans le cas d’un serveur faisant DHCP et routeur, il va de soi que l’adresse du routeur est celle du serveur.

3 – Configuration et options avancées

3.1 – Distribuer des IP fixes

Dans certains cas, il est intéressant qu’une machine conserve toujours la même adresse IP, dans ce cas, au lieu de la lui attribuer par hasard parmi la plage d’adresses disponible, vous pouvez choisir de lui en attribuer une en fonction de son adresse MAC. L’adresse MAC d’un client se trouve avec la commande ifconfig.

 ### DECLARATION D'ADRESSE FIXES ###
# Déclaration de la machine "Melchior"
host melchior {
     # Adresse MAC du client
     hardware ethernet 00:0e:a6:41:ac:0c;
     # Adresse IP à attribuer
     fixed-address 192.168.0.31; }

Si vous attribuez de cette manière une adresse comprise dans la page d’adresse définie dans le paragraphe 2.3, cela ne posera pas de problème l’adresse IP spécifiée étant alors considérée comme jamais disponible. Vous pouvez aussi la choisir en dehors de la plage du moment qu’il s’agit du même réseau (selon la norme IP). D’un autre côté, une machine qui dispose de plusieurs cartes réseaux branchée sur le réseau pourra être configurée carte par carte puisque l’adresse MAC est pour chacune des cartes.

Maintenant que votre configuration est opérationnelle, vous pouvez lancer votre serveur:

/etc/init.d/dhcpd strat

3.2 – Surveiller son serveur DHCP

Si le serveur DHCP refuse de se lancer, vous pouver tout d’abord consulter le fichier système:

cat /var/log/syslog | grep dhcp

Vous visualiserez les baux en examinant le fichier correspondant. Par exemple, avec cat /var/lib/dhcp3/dhcpd.leases, qui retournera ce genre d’informations:

lease 192.168.220.230 {
   starts 4 2005/10/06 21:08:24;
   ends 4 2005/10/06 21:11:24;
   binding state active;
   next binding state free;
   hardware ethernet 00:30:84:73:43:2b;
   uid "\001\0000\204sC+";
   client-hostname "cdi-hall-04"; }

Vous y trouverez, entre autre, l’adresse IP, l’adresse MAC et le nom NetBios du client concerné, ainsi que toutes les informations concernant le dernier bail.

4 – Conclusion et informations connexes

Finalement, la mise en place d’un serveur DHCP et relativement simple, je vous invite à consulter les manuels des outils suivants pour plus d’informations:

  • Configuration du DHCP: dhcpd3
  • Utilitaire client de DHCP dhclient
  • Lecture des baux: dhcpd.leases

Je remercie Throud qui, après m’avoir fait réinstallé son réseau quatre fois, m’a inconsciement donnée envie de rédiger ce tutorial. Merci aussi à Dominique pour ses précisions.

 

Référence principale: Internet System Consortium.