Introduction à DNSMASQ

Voici une brève présentation de DNSMASQ, tirée de Wikipédia :

Dnsmasq est un serveur léger conçu pour fournir les services DNS, DHCP, Bootstrap Protocol et TFTP pour un petit réseau, voire pour un poste de travail. Il permet d’offrir un service de nommage des machines du réseau interne non intégrées au service de nommage global (i.e. le service DNS d’Internet). Le service de nommage est associé au service d’adressage de telle manière que les machines dont le bail DHCP est fourni par Dnsmasq peuvent avoir automatiquement un nom DNS sur le réseau interne. Le logiciel offre un service DHCP statique ou dynamique.

En d’autres termes, DNSMASQ est un paquet complet qui permet de mettre en place un serveur DNS et DHCP.

Information

À la base, je prévoyais simplement de faire un article sur NetBoot.

Mais je me suis rendu compte qu’il fallait absolument passer par l’étape DHCP. J’ai donc écrit à la va-vite cette documentation en tant que base pour d’autres futures pages.

Procédure d’installation

Pour installer Dnsmasq, il suffit d’installer le package dnsmasq en fonction de votre distribution.

Alpine

apk add dnsmasq

Debian / Ubuntu

apt install dnsmasq

Fedora / CentOS

yum install dnsmasq

Configuration du DHCP

La première chose que l’on peut faire avec Dnsmasq est de démarrer le serveur DHCP. Le fichier de configuration est à cet emplacement : /etc/dnsmasq.conf. Par défaut, celui-ci devrait n’avoir aucune ligne décommentée en dehors de celles-ci :

local-service # ne communiquer qu'avec les machines dans notre réseau
conf-dir=/etc/dnsmasq.d/,*.conf # importer les fichiers *.conf dans le dossier /etc/dnsmasq.d/

Nous allons créer un fichier /etc/dnsmasq.d/dhcp.conf pour démarrer notre DHCP :

# dhcp.conf
listen-address=::1,127.0.0.1,192.168.1.250  # adresses d'écoutes
dhcp-range=192.168.1.50,192.168.1.150,24h   # Plage d'adresses et durée des baux
domain=thebidouilleur.xyz                   # domaine
dhcp-option=1,255.255.255.0                 # masque 
dhcp-option=3,192.168.1.1                   # passerelle

Une fois notre fichier créé, on peut vérifier la configuration avec dnsmasq --test.

Si aucune erreur n’est trouvée, nous pouvons lancer le service.

service dnsmasq start
systemctl start dnsmasq

Configuration d’un bail statique

Une fonctionnalité basique d’un serveur DHCP est de pouvoir attribuer une IP bien précise à un hôte.

Pour attribuer une IP spécifique, il est obligatoire de renseigner l’adresse MAC de la machine. On peut trouver cette adresse via la commande ip a, l’interface à choisir est bien évidemment celle qui est présente dans notre réseau.

Si l’hôte est accessible en réseau, vous pouvez utiliser la commande arp.

➜ arp 192.168.1.29 
Adresse                  TypeMap AdresseMat          Indicateurs           Iface
192.168.1.29             ether   ae:1a:60:8a:73:7a   C                     enp47s0

Cette adresse doit être référencée dans la configuration de Dnsmasq. J’ai créé le fichier /etc/dnsmasq.d/static-ip.conf.

# /etc/dnsmasq.d/static-ip.conf
dhcp-host=10:bf:48:8b:6d:cf,192.168.1.20
dhcp-host=ae:1a:60:8a:73:7a,192.168.1.29
# Ajoutez autant de ligne que d'IP à fixer
service dnsmasq restart
systemctl restart dnsmasq

Configuration du DNS

Par défaut, dès que l’instruction listen-address est définie, le serveur DNS est actif. Pour que dnsmasq soit utilisé en tant que DNS, il faut bien qu’il soit fourni par le DHCP (ex: server=192.168.1.211). Pour spécifier des serveurs DNS à interroger lorsque dnsmasq reçoit une requete à résoudre, créez un fichier /etc/dnsmasq.d/dns.conf avec le contenu suivant:

server=192.168.1.211                        
server=1.1.1.1                              

Redirection d’un domaine vers une IP spécifique

Créer un fichier /etc/dnsmasq.d/override-dns.conf

address=/test.com/127.0.0.1 # pointer test.com vers 127.0.0.1
address=/.xyz/127.0.0.1     # pointer le wildcard .xyz vers 127.0.0.1

Désactiver le DNS

Désactivation du DNS

Pour désactiver la fonctionnalité “DNS” de dnsmasq, il suffit juste de préciser à utiliser le port 0.

port=0

Mais si jamais vous désactivez le DNS, il faudra bien fournir une autre IP au DHCP (pour que les clients ne se retrouvent pas dépourvus de DNS). Dans votre fichier /etc/dnsmasq.d/dhcp.conf, rajoutez la ligne :

dhcp-option=6,192.168.1.211,192.168.1.1

Information

à noter que si vous souhaitez utiliser le serveur DHCP (dnsmasq) comme DNS, il faut paramétrer l’IP qui résoudra les domaines qui se trouve dans le fichier /etc/resolv.conf.