On va se setup un petit serveur DHCP simple sous Debian 9.4.
D’abord on installe le serveur :
apt-get install isc-dhcp-server
On va ensuite entrer les informations réseau qui doivent être délivrées par le serveur. La configuration se passe dans le fichier dhcpd.conf. Comme d’habitude, le fichier est pré-rempli et vous pouvez décommenter et adapter les directives déjà existantes. Personnellement je préfère sauvegarder le fichier d’origine et en créer un nouveau qui sera plus clair.
cd /etc/dhcp
-Sauvegarde du fichier :
mv dhcpd.conf dhcpd.conf.ori
-Edition du nouveau fichier :
nano dhcpd.conf
Voici ce que je viens de mettre dans un serveur simple qui fonctionne chez moi (bien sûr mettez vos propres adresses !) :
#Nom du serveur DHCP
server-name « nom_de_machine_du_serveur« ;
#Domaine
option domain-name « votre_nom_de_domaine« ;
#PXE, permettre le boot reseau
allow bootp;
allow booting;
#Verifie si l’adresse est déjà attribuée
ping-check = 1;
#Mode autoritaire (indique que ce serveur dhcp est prioritaire sur d’autres)
authoritative;
#Pas de mise à jour dynamique du DNS. Activer cette option est très utile #pour maintenir à jour les enregistrements du serveur DNS, pour le faire #remplacez none par standard (voir man dhcpd.conf). Il faut que le #serveur DNS accepte les mises à jour dynamiques.
ddns-update-style none;
#deny ou allow les clients inconnus
allow unknown-clients;
#La durée du bail si le client n’en demande pas un plus long.
default-lease-time 3600;
#La durée maximum du bail même si le client demande un plus long.
max-lease-time 86400;
#IP du serveur DNS à délivrer – même principe, on peut spécifier cette #directive dans un sous-réseau précis à la place. Mettez bien l’ip et non le #nom d’hôte.
option domain-name-servers 192.168.0.199;
#Netmask à délivrer – ajoutez cette directive si le subnet est identique pour #tous les sous-reseaux. Si ce n’est pas le cas, ne la mettez pas puisque le #subnet sera indiqué dans la déclaration de sous-réseau.
option subnet-mask 255.255.255.0;
#DECLARATION D’UN SOUS-RESEAU
subnet 10.0.2.0 netmask 255.255.255.0 {
#PLAGE d’IP à délivrer
range 10.0.2.50 10.0.2.99;
#GATEWAY par défaut
option routers 10.0.2.1;
#L’adresse de broadcast du sous-réseau
option broadcast-address 10.0.2.255;
}
-Pour exemple, on aurait pu agencer le fichier de cette façon :
server-name « dcsrv.infotrucs.fr »;
ddns-update-style none ;
authoritative;
allow unknown-clients;
allow bootp;
allow booting;
ping-check = 1;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.20 192.168.0.250;
option domain-name « infotrucs.fr »;
option domain-name-servers 192.168.1.199;
option routers 192.168.0.100;
option broadcast-address 192.168.0.255;
default-lease-time 3600;
max-lease-time 86000;
}
#Declaration d’un 2eme sous-reseau
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.1 10.0.0.254;
option domain-name « compta.infotrucs.fr »;
option domain-name-servers 89.2.0.1;
option routers 10.0.0.1;
option broadcast-address 10.0.0.255;
default-lease-time 600;
max-lease-time 7200;
}
-Il faut comprendre que certaines directives peuvent être placées en dehors des déclarations de sous-réseaux si elles s’appliquent à tous les sous-réseaux du DHCP.
-Pour info, si vous utilisez certaines IP statiques qui font partie d’un des sous-réseaux déclarés, vous n’avez pas besoin de les exclure de leurs plages grâce à l’option ping-check qui va vérifier si une IP est libre avant de l’affecter à un hôte.
##################################
Ensuite on va dire au serveur sur quel carte réseau il doit écouter les requêtes.
-Éditer le fichier :
/etc/default/isc-dhcp-server
-Décommenter ou entrez la ligne DHCPDv4_CONF=/etc/dhcp/dhcpd.conf (ou DHCPD_CONF=/etc/dhcp/dhcpd.conf) en vous assurant que le chemin pointe correctement vers le fichier dhcpd.conf. Si vous utilisez aussi ipv6 décommentez la ligne se référant à ipv6.
-Trouvez la directive suivante en remplaçant le nom de la ou les interface(s) réseau du serveur :
INTERFACESv4= »eth1 eth2«
->Si vous n’utilisez qu’une interface réseau ne mettez qu’un nom bien sur. Et si vous utilisez IPv6 éditez la directive INTERFACESv6, sinon commentez-la (#).
#######################
Et voila, redémarrons le service :
systemctl restart isc-dhcp-server.service (ou /etc/init.d/isc-dhcp-server start)
Théoriquement, vous avez un serveur DHCP fonctionnel.