SERVEUR DHCP SUR DEBIAN

Fonctionnement

Nous allons aujourd’hui apprendre à configurer un serveur DHCP sur Debian 9.

DHCP : Dynamic Host Configuration Protocol

C’est le protocole utilisé pour l’assignation automatique des paramètres IP à des équipements informatiques. Il permet de faciliter l’administration surtout sur les grands réseaux où l’attribution statique d’adresse à chaque poste serait très fastidieuse, cela permet aussi de limiter les risques de conflits d’adresse. Le protocole DHCP permet de transporter les informations comme : l’adresse IP de la machine, l’adresse du serveur DNS, l’adresse de la Passerelle, l’adresse de Broadcast …

Le processus fonctionne de la manière suivante :

  1. DHCP DISCOVER: Lorsqu’un client arrive sur un réseau il envoie des paquets DHCP DISCOVER en réseau en broadcast. En gros il demande s’il existe un serveur DCHP sur le réseau et si ce dernier peut lui fournir une adresse IP.
  2. DHCP OFFER: Le serveur ayant reçu la demande répond au client en broadcast avec un paquet DHCP OFFER avec l’adresse IP qu’il lui propose, le masque de sous réseau et son adresse IP (l’IP du serveur DHCP).
  3. DHCP REQUEST : Le Client ayant reçu l’IP proposé l’accepte et répond au serveur en broadcast avec un paquet DHCP REQUEST dans lequel il spécifie l’adresse demandée (l’adresse qu’il a acceptée) et l’adresse du serveur DHCP.
  4. DCHP ACK : Le Serveur ayant reçu le message de confirmation répond avec l’adresse IP assignée au client et les options de configuration supplémentaire (Gateway, DNS …)

Pour notre TP nous aurons besoin de :

–  2 machines sous Debian 9 fraîchement installé l’une servira de client et l’autre de serveur.

– 2 Cartes réseau par machines ; Une en NAT pour avoir accès a internet et l’autre sur un vSwitch local avec l’option DHCP désactivé (le même pour les 2 Vms)

Nous allons commencer par nous connecter à la machine qui va jouer le rôle de serveur DHCP.

Configuration du Serveur DHCP

On commence par changer le nom de la machine

sudo hostname  dhcp-server
sudo sh -c "echo dhcp-server > /etc/hostname"
sudo sh -c "echo 127.0.0.1 	dhcp-server >> /etc/hosts"

Lister l’ensemble des interfaces réseau disponible avec la commande: ip a

joel@dhcp-server:~$ ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group défaut qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:dc:0e:40 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:fe:ae:60 brd ff:ff:ff:ff:ff:ff

On repère la carte réseau qui est branchée sur le réseau local. Celle qui n’a normalement pas reçu une IP.  Comme vous pouvez le constater, l’interface 3 n’a pas d’adresse IP alors que la 2 en a une. Le nom de l’interface 3 est enp0s8.

Nous allons ajouter dans le fichier de configuration si ce n’est pas déjà le car une directive qui permet d’activer la carte au démarrage.

sudo sh -c "echo allow-hotplug enp0s8 >> /etc/network/interfaces"

Nous allons ensuite créer un fichier de configuration qui contiendra les configurations de notre interface et qui porte le nom de cette dernière.

sudo nano  /etc/network/interfaces.d/enp0s8.conf

éditer le fichier et mettre le contenu suivant

#Interface enp0s8
	iface enp0s8 inet static 
	address 192.168.57.2
	netmask 255.255.255.0

Rebooter le serveur pour prendre en compte les modifications.

sudo reboot 

Une fois l’interface réseau configurer nous pouvons passer à l’installation du serveur DHCP (paquet isc-dhcp-server).

sudo sh -c "apt update && apt install isc-dhcp-server"

Il faut ensuite éditer le fichier de configuration suivant pour configurer le serveur.

sudo nano  /etc/dhcp/dhcpd.conf

À moins de savoir ce que vous faites ne modifier que les lignes suivantes.

#Nom de domaine (facultatif) et liste des serveurs DNS envoyer au client
option domain-name "atomit.local"; 
option domain-name-servers  ns.atomit.local;

#Durée de vie en seconde par défaut et maximale du bail
défaut-lease-time 86400;
max-lease-time 604800;

# spécifie que notre serveur DHCP fait autorité
authoritative;

#Ensemble des configurations du pool DHCP. Ajouter des lignes avec les options souhaitez.
# This is a very basic subnet declaration.
subnet 192.168.57.0 netmask 255.255.255.0 {
range 192.168.57.100  192.168.57.150;
}

Ne pas oublier le point-virgule à la fin de chaque ligne sinon cela ne fonctionnera pas. Une fois les configurations réalisées vous pouvez vérifier si le fichier de configuration est correct avec la commande :

joel@dhcp-server:~$ sudo dhcpd -t /etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd.conf: interface name too long (is 20)

If you think you have received this message due to a bug rather
than a configuration issue please read the section on submitting
bugs on either our web page at www.isc.org or in the README file
before submitting a bug.  These pages explain the proper
process and the information we find helpful for debugging..

exiting.
joel@dhcp-server:~$ 

Si vous avez un message d’erreur, il faut le résoudre avant de continuer. Dans le résultat de la commande précédente, il vous indique l’interface sur laquelle le serveur DHCP écoute.

Vous pouvez éditer le fichier suivant pour ajouter les interfaces sur lesquelles le serveur DHCP a le droit d’écouter et de distribuer les adresses.

sudo nano /etc/default/isc-dhcp-server

Modifier la ligne suivante à la fin du document et ajouter l’interface dont nous avons fixé l’IP précédemment.

INTERFACESv4="enp0s8"
#INTERFACESv6=""

Redémarrez ensuite le service DHCP serveur :

sudo systemctl restart isc-dhcp-server.service

Si vous obtenez une erreur ouvrez le fichier de configuration de l’interface d’écoute et vérifié que :

– Vous avez bien commenté la ligne ipv6 et indiqué un nom correct d’interface pour ipv4.

– Redémarrez le serveur si nécessaire et vérifiez si le service a bien démarré.

Pour vérifier l’état de votre serveur :

joel@dhcp-server:~$ sudo systemctl status isc-dhcp-server.service 
● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated; vendor preset: enabled)
   Active: active (running) since Thu 2017-10-26 10:02:51 CEST; 3min 48s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1405 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/isc-dhcp-server.service
           └─1417 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf enp0s8

oct. 26 10:02:48 dhcp-server systemd[1]: Starting LSB: DHCP server...
oct. 26 10:02:48 dhcp-server isc-dhcp-server[1405]: Launching IPv4 server only.
oct. 26 10:02:48 dhcp-server dhcpd[1416]: Wrote 0 leases to leases file.
oct. 26 10:02:49 dhcp-server dhcpd[1417]: Server starting service.
oct. 26 10:02:51 dhcp-server isc-dhcp-server[1405]: Starting ISC DHCPv4 server: dhcpd.
oct. 26 10:02:51 dhcp-server systemd[1]: Started LSB: DHCP server.
joel@dhcp-server:~$ 

Puisque notre service est lancé et tourne sur la bonne interface, nous pouvons maintenant configurer le client.

Configuration client Linux

Connecter la 2e carte réseau du client Debian dur le même réseau que votre carte d’écoute du serveur DHCP. Nous allons commencer par nous connecter à la machine qui va jouer le rôle de serveur DHCP.

On commence par changer le nom de la machine

sudo hostname  dhcp-server
sudo sh -c "echo client1 > /etc/hostname"
sudo sh -c "echo 127.0.0.1 	client1 >> /etc/hosts" 

Lister l’ensemble des interfaces réseau disponible avec la commande : ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group défaut qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:dc:0e:40 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 noop state DOWN group default qlen 1000
    link/ether 08:00:27:29:ae:60 brd ff:ff:ff:ff:ff:ff

Nous pouvons donc constater que l’interface enp0s8 n’a pas encore d’adresse ip malgré le fait qu’elle soit connectée sur le même switch virtuelle que notre serveur DHCP. Cela est normal, car l’interface est down. Nous allons commencer pas modifier la configurer pour qu’elle soit montée automatiquement au démarrage.

sudo sh -c "echo allow-hotplug enp0s8 >> /etc/network/interfaces"

Nous allons ensuite créer un fichier de configuration qui contiendra les configurations de notre interface et qui porte le nom de cette dernière.

sudo nano  /etc/network/interfaces.d/enp0s8.conf

Placer y le contenu suivant :

#Interface enp0s8
	iface enp0s8 inet DHCP 

Ensuite nous allons monter l’interface enp0s8

ip link set dev enp0s8 up

Ensuite, lancer la commande dhclient qui appel le service client DHCP et lance le renouvellement de l’IP de la carte réseau en paramètre.

dhclient enp0s8 

Ensuite vous pouvez afficher l’IP obtenu avec la commande : ip a

joel@debian:~$ ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.57.100/24 brd 192.168.57.255 scope global enp0s8
       valid_lft forever preferred_lft forever
joel@debian:~$ 

 

fr.pdf24.org    Envoyer l'article en PDF   
Taggé , .Lien pour marque-pages : Permaliens.

2 réponses à SERVEUR DHCP SUR DEBIAN

  1. brice dit :

    merci pour cette procédure

Laisser un commentaire

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