Configuration basique d’un serveur DHCP, sous CentOS
Pour faire suite au premier chapitre sur l'installation du package DHCP sur une distribution CentOS, passons maintenant à la configuration de base du serveur DHCP.
Dans le cas où l’on utilise un pare-feu local à la machine hébergeant le service DHCP, il faut également autoriser le port UDP/67 au niveau de firewalld (ou anciennement iptables) :
# firewall-cmd --zone=public --add-port=67/udp
On peut rendre le service automatique au démarrage du systeme via la commande suivante:
# systemctl enable dhcpd
On a vu dans le premier module, qu’il fallait commencer par déclarer une étendue d’adresses, définissant un sous-réseau et une plage d’adresses de 192.168.1.100 à 192.168.1.199 :
default-lease-time 86400; # Bail de 24H
max-lease-time 172800; # Bail maxi de 48H
# Déclaration d'un réseau
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.199; # Plage IP
option domain-name-servers 192.168.1.11; # DNS
option routers 192.168.1.1; # Passerelle
}
REMARQUE : concernant l’adresse du serveur de noms DNS/BIND, si l’on ne possède aucun service de ce type sur son infrastructure, on peut déclarer l’adresse IP d’un serveur de noms public, comme celui de Google : 8.8.8.8. Parmi les options à configurer on peut également mentionner l’adresse de diffusion du sous-réseau concerné : option broadcast-address 192.168.255.255
Enfin, on peut également déclarer plusieurs étendues dans ce même fichier de configuration dhcpd.conf. Par exemple, si l’on souhaite aussi disposer d’une plage d’adresses comprises entre 172.16.10.0/24, on devra alors déclarer aussi la section ci-dessous :
subnet 172.16.10.0 netmask 255.255.255.0 {
range 172.16.10.100 172.16.10.199; # Plage IP
option routers 172.16.10.1; # Passerelle
}
Les options concernant le serveur de noms, sont généralement déclarées avant les zones de réservation d’adresses. On peut donc remonter la ligne ci-dessous, au niveau des déclarations des délais concernant les baux :
option domain-name-servers 192.168.1.11; # DNS
On peut d’ailleurs ajouter le nom du domaine administratif :
option domain-name-servers 192.168.1.11; # DNS
option-domain-name "mydmn.org" ;
Si l’on souhaite effectuer des mises à jour automatiques, des enregistrements stockés dans le serveur de noms DNS/BIND, il faut également préciser les options suivantes, dans le fichier dhcpd.conf :
option domain-name "mydmn.org"
ddns-updates on ;
ddns-update-style interim ;
ignore client-updates;
update-static-leases on;
Il existe de nombreuses options concernant la commande dhcpd, prenant en considération les différents cas de figure:
- -D : pour autoriser la modification du nom de domaine DNS/BIND.
- -H : pour autoriser également la modification du nom d’hôte.
- -R : pour éviter l’écrasement du fichier de résolution /etc/resolv.conf.
- -L pour permettre la modification du leasetime (exprimé en secondes).
Exemple : # dhcpd –D –H –L 86400 eth0
Si l’on souhaite effectuer une réservation d’adresse au sein de la plage précédemment définie, pour une adresse MAC spécifique, il suffit de déclarer un hôte et son adresse MAC, directement dans le sous-réseau :
default-lease-time 86400; # Bail de 24H
max-lease-time 172800; # Bail maxi de 48H
option domain-name-servers 192.168.1.11; #DNS
# Plage DHCP
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.199;
option routers 192.168.1.1;
# Réservations DHCP
host superlinux-eth {
hardware ethernet 00:bc:a0:77:e0:12;
fixed-address 192.168.1.101;
}
host superlinux-wlan {
hardware ethernet 00:bc:a0:77:e0:14;
fixed-address 192.168.1.121;
}
}
ASTUCE : lorsque l’on souhaite empêcher la distribution d’une adresse IP pour un poste spécifique, il faut le faire en mentionnant l’adresse MAC à bloquer :
host blocked {
hardware ethernet 00:bc:a0:77:e0:24;
deny booting;
}
Seulement lorsque que la configuration du serveur DHCP est complétée, il est possible de démarrer le service dhpcd :
# systemctl start dhcpd
Les messages d’erreur, par défaut sont redirigés dans le fichier /var/log/messages (ou /var/log/syslog sur certaines distributions). Mais, si l’on souhaite faire en sorte de les enregistrer dans un fichier dédié, il suffit d’éditer le fichier de configuration pour y placer la directive suivante :
log-facility local7 ;
Il faut alors créer le fichier dhcpd.log dans le répertoire /var/log avec les propriétés suivantes :
# touch /var/log/dhcpd.log
# chown syslog:adm /var/log/dhcpd.log
# chmod 0640 /var/log/dhcpd.log
Puis, dans le fichier de configuration du service syslog, on peut modifier le fichier /etc/rsyslog.d/50-default.conf pour changer la ligne ci-dessous:
*.*;auth,authpriv.none -/var/log/syslog
En déclaration autorisant le sous-système local7 à être redirigé vers son fichier de logs personnalisé:
*.*;auth,authpriv.none;local7.none -/var/log/syslog
Il ne reste plus qu’à redémarrer les différents services associés :
# systemctl restart rsyslogd
# systemctl restart dhcpd
Par défaut, l’ensemble des traces et des logs sont redirigés vers le fichier /var/log/messages. Mais, on peut aussi scruter le fichier /var/log/daemon.log. On peut aussi consulter le fichier des baux. Le prochain chapitre se consacre à la gestion des baux DHCP.