Serveur DHCP sous Linux

I. Présentation

Un serveur DHCP permet de fournir automatiquement une configuration IP à une machine, par exemple à des ordinateurs, des smartphones, des imprimantes réseau, en gros tous ceux qui peut être connecté à un réseau. Cette configuration IP est composée :


  • d’une adresse IP
  • d’un masque de réseau
  • d’une passerelle
  • d’une adresse de DNS

Lorsqu’une machine sans configuration IP se connecte au réseau, celle-ci émet un DHCP DISCOVER en broadcast afin de demander si un serveur DHCP existe. Le serveur DHCP répond par un DHCP OFFER et commence à donner des premiers paramètres, la machine envois une demande DHCP REQUEST puis le serveur DHCP envois un DHCP ACK afin de fournir la configuration IP.

La configuration IP peut être fournie avec un bail. Ce bail indique que tel machine aura tel IP pour une durée de 7 jours par exemple. À la date limite, si la machine est toujours sur le réseau, elle garde la même IP pour un nouveau bail de 7 jours. Si au bout de 2 jours la machine quitte le réseau, l’IP qu’elle utilisait sera disponible pour les autres machines à la fin du bail.

Un seul serveur DHCP peut fournir des configurations IP à plusieurs réseaux différents, pour cela il faut utiliser le relais DHCP, nous mettrons en place ce système en seconde partie du tutoriel.

Le serveur DHCP fournit des IP qui sont dans une plage d’IP disponibles, par exemple de 192.168.1.50 jusque 192.168.1.100.

Prérequis :

  • une machine Debian avec une IP fixe.
  • Aucun autre serveur DHCP actif afin d’éviter les conflits.
  • Une machine cliente (par exemple Debian) sans configuration IP afin de tester.
  • Une connexion Internet.

II. Installation du serveur DHCP

On commence par une mise à jour des paquets du système :

apt-get update

Nous allons maintenant installer le paquet suivant :

apt-get install dhcp3-server

A. Configuration du serveur DHCP

Comme vous vous en doutez, installer le paquet ne suffit pas à faire fonctionner notre serveur DHCP, il y a des petites configurations à faire. On va se rendre dans le fichier suivant :

nano /etc/default/isc-dhcp-server

À la fin de ce fichier ce trouve la ligne suivante :

INTERFACES=""

On va indiquer quelle interface réseau nous utiliserons, si votre serveur DHCP n’est pas sur un routeur, il y a alors normalement qu’une seule carte réseau qui est eth0 :

INTERFACES="eth0"

On enregistre et on ferme ce fichier. Nous avons maintenant un dernier fichier à configurer, c’est dans celui-là que nous indiquerons les configurations IP à fournir :

nano /etc/dhcp/dhcpd.conf

Dans ce fichier on peut trouver beaucoup d’explications et des exemples en anglais. On copie le texte ci-dessous tout à la fin du fichier :

# Notre configuration pour le réseau 172.18.0.0
subnet 172.18.0.0 netmask 255.255.0.0 {
range 172.18.0.20 172.18.0.30;
option domain-name-servers 8.8.8.8;
option domain-name "reseau.lan";
option routers 172.18.0.1;
option broadcast-address 172.18.255.255;
default-lease-time 600;
max-lease-time 7200;
}

Alors pour les explications :

  • La première ligne est un commentaire, elle ne sert donc à rien à part pour indiquer sur quel réseau on va paramétrer.
  • La seconde ligne, on indique le réseau ainsi que le masque de réseau.
  • La troisième ligne, on indique le rang d’adresses IP fournit.
  • La quatrième ligne, on indique le DNS. Ici n’ayant pas de DNS, j’ai mis l’adresse d’un DNS de Google.
  • La cinquième ligne, on indique le nom de notre domaine.
  • La sixième ligne, on indique l’adresse de notre passerelle.
  • La septième ligne, on indique l’adresse broadcast du réseau.
  • Et enfin les 2 dernières lignes, sont pour le bail. On indique le bail par défaut et le bail maximum. Ce bail est exprimé en secondes.

On sauvegarde ce fichier et on le quitte puis on redémarre le service serveur DHCP :

service isc-dhcp-server restart

La configuration est maintenant terminée, on va pouvoir passer à la phase de test.

B. Test du DHCP

Pour le test, on va simplement démarrer une machine Debian. On va ensuite dire à la machine de se mettre en DHCP plutôt que d’utiliser une IP fixe.
Pour cela on va dans le fichier de configuration des cartes réseaux :

nano /etc/network/interfaces

On modifie ce fichier afin d’avoir les lignes suivantes :

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
On enregistre et on quitte.
On tape ensuite les commandes suivantes :
ifdown eth0
ifup eth0

On fait un ifconfig afin d’avoir les informations sur les cartes. On voit maintenant qu’on a bien dans eth0 :

  • Une adresse IP dans le rang qu’on a défini (logiquement la première adresse, donc dans mon cas : 172.18.0.20).
  • Une adresse de broadcast en 172.18.255.255.
  • Un masque en 255.255.0.0.

On peut pinger la passerelle qui est en 172.18.0.1.Et pour finir, on peut également pinger le site www.it-connect.fr.

III. Adressage fixe avec les adresses mac

On peut avoir besoin d’indiquer au serveur DHCP que telle machine aura toujours telle adresse IP.

Prérequis :

  • un serveur DHCP fonctionnel.
  • une machine cliente.

A. Configuration

Pour réaliser cela, il suffit juste d’aller dans le fichier de configuration du serveur DHCP :

nano /etc/dhcp/dhcpd.conf

Tout à la fin on rajoute les lignes suivantes :

host client1_debian {
hardware ethernet 08:00:27:bb:40:6b;
fixed-address 172.18.0.26;
}

Les explications:

  • la première ligne, on indique le nom de la machine cliente.
  • La seconde ligne, on indique son adresse mac.
  • La dernière ligne, on indique quelle adresse IP elle aura en permanence.

On sauvegarde ce fichier et on le quitte puis on redémarre le service serveur DHCP :

service isc-dhcp-server restart

B. Test de l'adressage fixe

Pour le test, on va simplement démarrer une machine Debian. On va ensuite dire à la machine de se mettre en DHCP plutôt que d’utiliser une IP fixe.
Pour cela on va dans le fichier de configuration des cartes réseaux.

nano /etc/network/interfaces

On modifie ce fichier afin d’avoir les lignes suivantes :

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

On enregistre et on quitte puis on tape ensuite les commandes suivantes :

ifdown eth0
ifup eth0

On fait un ifconfig afin d’avoir les informations sur les cartes.

On voit maintenant qu’on a bien dans eth0 :

  • une adresse qui est celle que l’on a définie (172.18.0.26).
  • Une adresse de broadcast en 172.18.255.255.
  • Un masque en 255.255.0.0.
  • On peut pinger la passerelle qui est en 172.18.0.1.

Et pour finir, on peut également pinger le site www.it-connect.fr .

IV. DHCP Relais

Le DHCP Relais permet au serveur DHCP de fournir des configurations IP à des machines situées dans un réseau différent du sien. En fonction du réseau où la machine cliente se trouve, celle-ci aura telle configuration IP ou tel autre.

Prérequis :

  • un serveur DHCP fonctionnel.
  • Un routeur afin de lier les réseaux.
  • Minimum 2 réseaux : un pour le serveur DHCP, un pour la machine cliente.
  • Une connexion Internet.
  • 2 machines clientes.

A. Installation du DHCP relais

Sur le routeur on installe le paquet suivant :

apt-get install dhcp3-relay

Lors de l’installation, on indique l’adresse IP du serveur DHCP :

172.18.0.2

On indique également l’interface où le relais DHCP écoutera :

10.0.0.1

Pour les options supplémentaires on laisse vide.

B. Configuration du relais DHCP

On modifie notre fichier de configuration sur le serveur DHCP. On indique notre réseau où nous voulons fournir des configurations IP :

nano /etc/dhcp/dhcpd.conf

À la fin, on rajoute les lignes suivantes :

# Notre configuration pour le réseau 10.0.0.0
subnet 10.0.0.0 netmask 255.0.0.0 {
range 10.0.0.40 10.0.0.60;
option domain-name-servers 8.8.8.8;
option domain-name "reseau.lan";
option routers 10.0.0.1;
option broadcast-address 10.255.255.255;
default-lease-time 600;
max-lease-time 7200;
}

On enregistre et on quitte. Puis pour finir, on relance le service de serveur DHCP :

service isc-dhcp-server restart

Sur le routeur, on relance le service de DHCP relais :

service isc-dhcp-relay restart

C. Test du DHCP Relais

Pour le test, on va simplement démarrer une machine Debian qu’on aura déjà connectée à notre routeur, dans le bon vlan. On va ensuite dire à la machine de se mettre en DHCP plutôt que d’utiliser une IP fixe. Pour cela on va dans le fichier de configuration des cartes réseaux :

nano /etc/network/interfaces

On modifie ce fichier afin d’avoir les lignes suivantes :

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

On enregistre et on quitte. On tape ensuite les commandes suivantes :

ifdown eth0
ifup eth0

On fait un ifconfig afin d’avoir les informations sur les cartes.

On voit maintenant qu’on a bien dans eth0 :

  • ne adresse IP dans le rang qu’on a défini (logiquement la première adresse, donc dans mon cas : 10.0.0.40).
  • Une adresse de broadcast en 10.255.255.255.
  • Un masque en 255.0.0.0.
  • On peut pinger la passerelle qui est en 10.0.0.1. Et pour finir, on peut également pinger le site www.it-connect.fr .

Pour conclure, dans ce tutoriel nous avons vu :

  • Qu’un serveur DHCP sert à fournir une configuration IP à une machine qui se branche sur le réseau.
  • Cette configuration IP fonctionne avec un système de bail.
  • Qu’un serveur DHCP peut fournir toujours la même adresse IP à une machine grâce à son adresse mac.
  • Qu’un serveur DHCP peut fournir des configurations IP à des machines qui sont dans des réseaux différents du serveur.

Pour apprendre comment mettre en redondance deux serveurs DHCP sur Linux, c’est ici : redondance de serveurs DHCP sous Linux

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Bastien Champain

Etudiant en BTS Services Informatiques aux Organisations, je souhaite partager mes connaissances avec d'autres passionnés.

    bc has 2 posts and counting.See all posts by bc

    6 pensées sur “Serveur DHCP sous Linux

    • bonjour monsiour je fais configurer un serveur dhcp ipv6 sous lunix vous éte idée

      Répondre
    • Salut,

      Merci pour ton tuto, cependant il n’est pas fonctionnel pour ma part lorsque l’on suit tes explications.
      En ayant tout suivi à la lettre, je me suis retrouvé des le départ avec l’erreur suivante :
      Job failed to start

      Le problème vient de ton fichier de conf : nano /etc/dhcp/dhcpd.conf
      Je te propose ma config :

      ddns-update-style none;
      default-lease-time 600;
      max-lease-time 7200;
      authoritative;
      logfacility local7;
      option broadcast-address 192.168.1.255;
      option routers 192.168.1.254;
      option domain-name-servers 192.168.1.2;
      option domain-name « gsb.com »;
      subnet 192.168.1.0 netmask 255.255.255.0 {
      range 192.168.1.3 192.168.1.20;
      }

      Ensuite je te conseil de rajouter quelques informations dans la configuration de ta carte réseau : nano /etc/network/interfaces
      auto eth0
      iface eth0 inet static
      address 192.168.1.1
      netmask 255.255.255.0
      gateway 192.168.1.254
      broadcast 192.168.1.255
      dns-nameservers 192.168.1.2
      dns-search gsb.com

      Tout est opérationnel pour moi. La suite de ton tuto fonctionne très bien, bravo pour l’investissement.

      Cordialement,

      Malcolm

      Répondre
    • Merci et bonjour à tous,
      Quelqu’un connaitrait une commande pour voir les baux Actif ?

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

     

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.