Skip navigation

Configurer un serveur DHCP

Configuration d’un serveur DHCP.

Le protocole DHCP (Dynamic Host Configuration Protocol) permet aux clients d’un réseau, ordinateur portable, et les appareils mobiles de demander et d’obtenir une adresse IP ainsi que d’autres paramètres réseaux tel que : le masque de sous-réseau, la passerelle par défaut, l’adresse des serveurs DNS, le nom du domaine…

Installation du serveur DHCP

ISC DHCP est implémentation open source de DHCP le plus largement utilisé sur Internet. Ce même logiciel peut être utilisé pour un réseau local.

root@debian~#: aptitude install isc-dhcp-server

sortie

Selecting previously unselected package isc-dhcp-server.
(Reading database ... 143127 files and directories currently installed.)
Unpacking isc-dhcp-server (from .../isc-dhcp-server_4.2.2.dfsg.1-5+deb70u6_amd64.deb) ...
Processing triggers for man-db ...
Setting up isc-dhcp-server (4.2.2.dfsg.1-5+deb70u6) ...
Generating /etc/default/isc-dhcp-server...
[....] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ...
invoke-rc.d: initscript isc-dhcp-server, action "start" failed.

Configuration du serveur DHCP

Avant de commencer à configurer service DHCP, il faut l’arrêter.

root@debian~#: service isc-dhcp-server stop

La sortie devrait-être la suivante, car rien n’a encore été configuré

sortie

[FAIL] Stopping ISC DHCP server: dhcpd failed!

Sinon, s’il s’agit d’une réinstallation la sortie devrait-être la suivante.

sortie

[ ok ] Stopping ISC DHCP server: dhcpd.

Le fichier de configuration est le suivant /etc/dhcp/dhcpd.conf . Le fichier est livré avec un certain nombre d’options de configuration globale.

root@debian~#: vim /etc/dhcp/dhcpd.conf

Empêcher le serveur DHCP de recevoir des informations DNS des clients.

contenu du fichier

ddns-update-style none;

Configurer le domaine et les DNS.

contenu du fichier

# option definitions common to all supported networks...
option domain-name "domaine.local";
option domain-name-servers 8.8.8.8, 8.8.4.4;

La durée du bail. Le temps est réglée en secondes.

contenu du fichier

default-lease-time 86400;	# 24 heures
max-lease-time 604800;		# 7 jours

L’option authoritative devrait être décommentée.
Cette option indique que le serveur DHCP doit envoyer des messages DHCPNAK aux clients mal configurés. Si ce ne est pas fait, les clients ne pourront pas obtenir une adresse IP correcte après avoir changé de sous-réseaux avant l’expiration de leur ancien bail, ce qui peut être très long.

contenu du fichier

authoritative;

Configurer les plages d’adresses.

contenu du fichier

subnet 172.32.0.0 netmask 255.255.255.128 {
	range 172.32.0.10 172.32.0.20;		# dhcp start and end IP range
	option subnet-mask 255.255.255.128;	# subnet
	option broadcast-address 172.32.0.127;	# broadcast
	option routers 172.32.0.126;		# router IP
}

Configuration de l’interface de service DHCP

Par défault, toutes les interfaces peuvent répondre au requête DHCP. Ce n’est pas un comportement nécessairement voulu. Voici comment configurer l’interface devant répondre au requête DHCP.

root@debian~#: vim /etc/default/isc-dhcp-server

contenu de fichier

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"

Une fois le fichier /etc/dhcp/dhcpd.conf sauvegarder, il faut tester la syntax du fichier de configuration.

root@debian~#: dhcpd -t

Ou

root@debian~#: dhcpd -t /etc/dhcp/dhcpd.conf

sortie

Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Ensuite on démarre le service.

root@debian~#: service isc-dhcp-server start

Le serveur DHCP est maintenant opérationnel.

sortie

[ ok ] Starting ISC DHCP server: dhcpd.

Démarrage / arrêt / redémarrage / status du serveur DHCP

Démarrage.

root@debian~#: service isc-dhcp-server start

Arrêt.

root@debian~#: service isc-dhcp-server stop

Redémarrage.

root@debian~#: service isc-dhcp-server restart

Status.

root@debian~#: service isc-dhcp-server status

Vérifier que le serveur DHCP est en fonction

root@debian~#: netstat -tulpn | grep --color "dhcp"

sortie

udp        0      0 0.0.0.0:45514           0.0.0.0:*                           9679/dhcpd      
udp        0      0 0.0.0.0:67              0.0.0.0:*                           9679/dhcpd      
udp6       0      0 :::12871                :::*                                9679/dhcpd

On voit ici que le port 67 est en écoute pour le service DHCP.

root@debian~#: ps aux | grep --color "[d]hcpd"

sortie

root      7519  0.0  0.0  12896    60 ?        Ss   15:16   0:00 /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid eth1

Le service DHCP à bien un numéro de processus.

root@debian~#: pgrep dhcpd

sortie

7519

On retrouve ce même numéro de processus.

Lister les clients DHCP

root@debian~#: cat /var/lib/dhcp/dhcpd.leases

sortie

[…]
lease 172.32.0.16 {
  starts 0 2014/12/21 09:35:00;
  ends 0 2014/12/21 09:45:00;
  cltt 0 2014/12/21 09:35:00;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:50:56:39:75:93;
  client-hostname "client-02";
}
lease 172.32.0.20 {
  starts 0 2014/12/21 09:38:52;
  ends 0 2014/12/21 09:48:52;
  cltt 0 2014/12/21 09:38:52;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:50:56:2d:a9:89;
  client-hostname "client-01";
}
lease 172.32.0.16 {
  starts 0 2014/12/21 09:39:38;
  ends 0 2014/12/21 09:49:38;
  cltt 0 2014/12/21 09:39:38;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:50:56:39:75:93;
  client-hostname "client-02";
}

Dépannage du serveur DHCP

Par défaut, le dhcpd log toutes les sorties en utilisant la fonction syslog.
Voici comment lister les requêtes dhcp.

root@debian~#: grep dhcpd /var/log/syslog

sortie

Dec 20 17:38:59 dhcp-server dhcpd: DHCPACK on 172.32.0.18 to 00:50:56:32:91:6c (client-05) via eth1
Dec 20 17:41:04 dhcp-server dhcpd: DHCPREQUEST for 172.32.0.19 from 00:50:56:24:6c:f9 (client-04) via eth1
Dec 20 17:41:04 dhcp-server dhcpd: DHCPACK on 172.32.0.19 to 00:50:56:24:6c:f9 (client-04) via eth1
Dec 20 17:41:30 dhcp-server dhcpd: DHCPREQUEST for 172.32.0.15 from 00:50:56:3b:54:18 (client-03) via eth1
Dec 20 17:41:30 dhcp-server dhcpd: DHCPACK on 172.32.0.15 to 00:50:56:3b:54:18 (client-03) via eth1
Dec 20 17:41:44 dhcp-server dhcpd: DHCPREQUEST for 172.32.0.20 from 00:50:56:2d:a9:89 (client-01) via eth1
Dec 20 17:41:44 dhcp-server dhcpd: DHCPACK on 172.32.0.20 to 00:50:56:2d:a9:89 (client-01) via eth1

Sécuriser le serveur DHCP

Désactiver le DHCPDECLINE. Ceci afin d’éviter les attaque DoS. En effet, le client DHCP peut envoyer des messages DHCPDECLINE plusieurs fois causant la saturation du pool d’IP, ce qui à pour effet de foaire oublier au serveur DHCP les adresses des anciennes allocations.

root@debian~#: vim /etc/dhcp/dhcpd.conf

contenu du fichier

deny declines;

Désactiver le support les anciens clients BOOTP.

contenu du fichier

deny bootp;

by | December 19, 2014 | No Comments | Réseaux | Tags : dhcp serveur