27/07/2024

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.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail 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.