Configurer un serveur DHCP sous Linux Debian

Dans ce billet nous allons voir comment configurer un serveur DHCP sous Linux debian mais avant cela un rappel sur le fonctionnement DHCP ne fait jamais de mal

Fonctionnement DHCP

Utilisé dans le but de faciliter l’administration (Ben oui mettre des IP fixe aux PC, Imprimante et autres devices quand on à un grand parc c’est jamais plaisant !)

Fonctionne en UDP sur le port 68 & 67 (Le client utilise le port source 68 pour émettre, le serveur DHCP écoute sur le port 67)

Les principaux échanges sont représentés ci-dessous

DHCPWork
  1. DHCPDISCOVER : Le client envoi une demande d’IP en broadcast (peut se traduire en YA QUELQU’UN ?! J’AI BESOIN D’UNE IP !)
  2. DHCPOFFER : Le serveur DHCP propose une adresse IP au client (peut se traduire en Tiens voila ça te va ?)
  3. DHCPREQUEST : Le client DHCP confirme que l’IP proposé lui convient (peut se traduire en OK ! Ça me va, Merci !)
  4. DHCPACK : Le serveur envoi l’accusé de réception confirmant que tout c’est bien passé (se traduit en De rien A+)

{#Aide Mémotechnique : D.O.R.A

Le client reçoit un bail limité par le temps qu’aura décidé le serveur DNS, le bail contient la durée valide de l’IP fournit, l’IP ainsi que les informations réseau (Nom de domaine, Serveur DNS, Passerelle, …)

Installation & Configuration

Installation des paquets

apt-get update && apt-get install isc-dhcp-server

L’arborescence suivante est crée :

/etc/dhcp/dhcpd.conf : Fichier de configuration du serveur dhcp
/usr/sbin/dhcpd : Service dhcp
/var/log/syslog/ : Journal d’exploitation du service
/var/lib/dhcp/dhcp.leases : Journal des baux

Pour faire les choses proprement, sauvegardez le fichier de configuration et vider celui d’origine

cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.old 
echo "" > /etc/dhcp/dhcpd.conf

Nous voila avec un beau fichier tout neuf, commençons un peu à le façonner

$vi /etc/dhcp/dhcpd.conf

authoritative; #Si ce serveur DHCP est le seul serveur DHCP du réseau (faisant autorié)
default-lease-time 14400; #Temps de bail par défault
max-lease-time 15000; #Temps de bail maximum

#Options délivré par le serveur
option domain-name-servers 192.168.1.200, 192.168.1.254; #Serveurs DNS inclus dans le bail
option domain-name "domain.local"; #Nom de domaine inclus dans le bail
option domain-search "domain.local"; #Zone DNS de recherche inclus dans le bail
option broadcast-address 192.168.1.255; #Adresse de broadcast inclus dans le bail
option subnet-mask 255.255.255.0; #Masque de sous réseau inclu dans le bail
option ntp-servers 192.168.1.254; #Serveur NTP inclus dans le bail

#Scope DHCP
subnet 192.168.1.0 netmask 255.255.255.0 { #Plage de sous réseau du DHCP
range 192.168.1.10 192.168.1.30; #Scope d'IP disponible à fournir
option routers 192.168.1.254; #Passerelle par défaut à fournir
}

#Reservation DHCP

host PC1 { #Nom de l'hôte pour la reservation DHCP
hardware ethernet 70:4e:7f:61:40:ae; #Adresse MAC à laquelle fournir l'IP
fixed-address 192.168.1.1; #Adresse IP à fournir
}

Il y a un paquet d’option possible à inclure dans le bail, plus d’info dans man dhcp-options

Démarrez le service

#ou service isc-dhcp-server start

CAS BONUS

Dans le cas ou vous auriez un serveur DNS Bind9 et que vous souhaitez avoir les enregistrements automatiques, ceci est pour vous

Dans /etc/bind9/named.conf.local, ajoutez allow-update aux zones pour autoriser les mises à jour du serveur DHCP

zone "my.domain" {
type master;
file "/var/cache/bind/db.domain";
allow-update {192.168.1.254;};
};

zone "1.168.192.in-addr.arpa" {
type master;
file "/var/cache/bind/db.inv";
allow-update {192.168.1.254;};
};

Dans dhcpd.conf ajoutez :

ddns-update-style interim; #Autorise la MAJ DNS
ignore client-updates; #Le serveur DHCP uniquement met le DNS à jours (pas les clients)
ddns-updates on; #Activer la mise à jour dynamique

zone my.domain. { #Zone DNS à mettre à jour avec les hôtes
primary 192.168.1.254; #Serveur DNS
}
zone 1.168.192.in-addr.arpa. {
primary 192.168.1.254;
}

Redémarrez les service BIND et DHCP

systemctl restart bind
systemctl restart isc-dhcp-server

J'ai écris un script en bash pour déployer un service DHCP rapidos

https://github.com/k-lfa/Linux-lan