Mémo pour créer un serveur DHCP local simple et rapidement.
Sources
https://doc.ubuntu-fr.org/isc-dhcp-server
https://www.linuxfordevices.com/tutorials/ubuntu/dhcp-server-on-ubuntu
Pré-requis
Les commandes sont sous root :
1 |
sudo -i |
Forcer l’ip fixe du serveur.
Pour un serveur Ubuntu 20.04, voir Ubuntu Server – Désactiver CloudInit sur Ubuntu Server 20.04
Installation
Installer isc-dhcp-server :
1 |
command apt install isc-dhcp-server |
Configuration
Backup des fichiers (au cas où 😉 ) :
1 2 3 |
command cp /etc/dhcp/dhclient.conf /etc/dhcp/dhclient.conf.origin command cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.origin command cp /etc/dhcp/dhcpd6.conf /etc/dhcp/dhcpd6.conf.origin |
Fichier /etc/dhcp/dhcpd.conf :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
default-lease-time 600; max-lease-time 7200; ddns-update-style none; authoritative; subnet 192.168.28.0 netmask 255.255.255.0 { range 192.168.28.10 192.168.28.50; option routers 192.168.28.1; option domain-name-servers 192.168.28.2, 1.1.1.1; option domain-name "lan.domain.ext"; } |
C’est le serveur principal. Dit autrement, il faut désactiver les serveurs DHCP des box et autres routeurs wifi du réseau.
1 |
authoritative; |
IP du routeur passerelle à internet :
1 |
option routers 192.168.28.1; |
Serveurs DNS :
1 |
option domain-name-servers 192.168.28.2, 1.1.1.1; |
Mon serveur Bind9 (adblock), avec un serveur Cloudflare en secours.
1 |
option domain-name "lan.domain.ext"; |
Pour nommer mon réseau, j’utilise lan.domain.ext. Pas besoin de le déclarer chez le gestionnaire DNS du nom de domaine.
Ex : lan.jbnet.fr
Les noms de domaines domain.lan ne sont pas utilisables avec un dns interne (sauf fichier host).
Pour rajouter une ip fixe à un équipement (PC, routeur, imprimante, etc.), rajouter la partie host dans le subnet.
Il faut saisir l’adresse MAC puis l’ip désirée.
1 2 3 4 5 6 7 8 9 10 11 |
subnet 192.168.28.0 netmask 255.255.255.0 { range 192.168.28.10 192.168.28.50; option routers 192.168.28.1; option domain-name-servers 192.168.28.2, 1.1.1.1; option domain-name "lan.domain.ext"; host ubuntuserver { hardware ethernet 08:00:27:xx:xx:xx; fixed-address 192.168.28.20; } } |
Modifier l’interface réseau sur laquelle le réseau doit répondre.
Fichier /etc/default/isc-dhcp-server.
1 |
INTERFACESv4="eth0" |
Attention au nommage de la carte réseau.
A vérifier avec la commande :
1 |
command ip a |
Relancer le serveur
1 |
command systemctl restart isc-dhcp-server |
Vérifier le status :
1 |
command systemctl status isc-dhcp-server.service |
Log
Les log sont par défaut dans /var/log/syslog
Mais on peut les renvoyer dans un fichier spécifique.
Dans le fichier /etc/dhcp/dhcpd.conf, décommenter la ligne :
1 |
log-facility local7; |
Dans le fichier /etc/rsyslog.d/50-default.conf, ajouter :
1 |
local7.* /var/log/dhcpd.log |
Créer le fichier pour l’initialiser :
1 2 3 |
command touch /var/log/dhcpd.log command chown syslog:adm /var/log/dhcpd.log command chmod 0640 /var/log/dhcpd.log |
Relancer les services :
1 2 |
command systemctl restart rsyslog command systemctl restart isc-dhcp-server |
Créer le fichier /etc/logrotate.d/dhcpd :
1 2 3 4 5 6 7 8 9 10 11 |
/var/log/dhcpd.log { weekly missingok rotate 7 notifempty sharedscripts create 0640 syslog adm postrotate systemctl restart isc-dhcp-server endscript } |