Aller au contenu principal

dnsmasq — DNS / DHCP léger

dnsmasq combine un serveur DNS cache/forwarder, un serveur DHCP et un serveur TFTP en un seul démon léger. Très utilisé sur les petits réseaux (LAN domestique, labo, routeurs embarqués/OpenWRT) là où BIND/ISC-DHCP seraient surdimensionnés.

Installation

sudo apt install dnsmasq # Debian/Ubuntu
sudo dnf install dnsmasq # RHEL/Fedora
sudo systemctl enable --now dnsmasq

Sur une machine avec NetworkManager, dnsmasq entre souvent en conflit avec le port 53 déjà tenu par systemd-resolved — désactiver le stub resolver (DNSStubListener=no dans /etc/systemd/resolved.conf) si besoin.

Fichiers de configuration

FichierRôle
/etc/dnsmasq.confConfiguration principale
/etc/dnsmasq.d/*.confFragments de config additionnels
/etc/hostsRésolution DNS locale statique (utilisée par défaut)
/etc/dnsmasq-leases ou /var/lib/misc/dnsmasq.leasesBail DHCP actifs

Commandes utiles

CommandeFonction
systemctl status/restart dnsmasqGérer le service
dnsmasq --testValider la config
cat /var/lib/misc/dnsmasq.leasesVoir les baux DHCP en cours
dig @127.0.0.1 exemple.frTester la résolution

Exemple de configuration

# DNS : forwarders + cache
server=1.1.1.1
server=9.9.9.9
cache-size=1000

# DHCP : plage d'adresses sur eth0
interface=eth0
dhcp-range=192.168.1.100,192.168.1.200,12h
dhcp-option=option:router,192.168.1.1

Usage PXE (boot réseau)

dnsmasq peut aussi servir de serveur PXE pour démarrer des machines sans disque ou déployer un OS par le réseau, en combinant DHCP + TFTP :

enable-tftp
tftp-root=/srv/tftp
dhcp-boot=pxelinux.0 # fichier de boot envoyé aux clients PXE

Le client DHCP-PXE reçoit une IP et l'emplacement du bootloader (pxelinux.0/grubnetx64.efi) à récupérer en TFTP, ce qui permet un déploiement d'OS entièrement réseau (courant pour du provisioning de serveurs ou des images de labo).

Sécurisation

  • Restreindre interface= à l'interface voulue — par défaut dnsmasq peut écouter sur toutes les interfaces.
  • bind-interfaces pour forcer l'écoute stricte sur l'IP/interface déclarée.
  • Ne pas exposer le DNS en résolveur ouvert à Internet (mêmes risques qu'un résolveur BIND ouvert).
  • dhcp-authoritative seulement si dnsmasq est le seul serveur DHCP du segment (évite les conflits de baux).

Logs & dépannage

journalctl -u dnsmasq -f
dnsmasq --test # valide la conf avant reload
systemctl reload dnsmasq

Voir aussi