DnsMasq est un serveur de cache DNS intégrant un serveur DHCP, ce qui le rend spécialement adapté aux petits réseaux locaux. DnsMasq prend peu de mémoire, est très simple à configurer et ne nécessite presque aucune maintenance. Idéal non ?
Ce document s'applique aux versions 2.x de DnsMasq (testé sur la version 2.20).
DnsMasq a été créé par Simon Kelley dans le but de simplifier l'administration de réseaux locaux. DnsMasq permet en effet d'automatiser complètement la configuration du réseau et les temps de réponses aux requêtes DNS. Il dispose de deux serveurs intégrés :
Pour plus d'informations vous pouvez consulter le site de DnsMasq.
Un simple apt-get devrait suffir :
~/# apt-get install dnsmasq
~/$ wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.20.tar.gz
~/$ tar xvzf dnsmasq-2.20.tar.gz
~/$ cd dnsmasq-2.20 ~/$ make
~/# make install
La configuration de DnsMasq se déroule via le fichier /etc/dnsmasq.conf. L'exemple fournit par le paquet Debian contient de nombreux commentaires pour expliquer en détails les différents paramètres de la configuration de DnsMasq.
/etc/dnsmasq.conf - Cache DNS
domain-needed expand-hosts bogus-priv interface=eth0 domain=home.chezmoi.invalid cache-size=256
Explication des paramètres utilisés :
/etc/dnsmasq.conf - DHCP + Cache DNS
domain-needed expand-hosts bogus-priv interface=eth0 domain=home.chezmoi.invalid cache-size=256 # plage dynamique 192.168.1.10-192.168.1.100 dhcp-range=192.168.1.10,192.168.1.100,24h dhcp-option=23,64 # adresse IP fixe pour la machine 00:40:F4:6C:43:AF dhcp-host=00:40:F4:6C:43:AF,machinefixe,192.168.1.10
Explication des paramètres utilisés :
Par exemple, l'option 23 utilisée ici, permet de définir le TTL envoyé aux clients.
Resolvconf est un programme présent dans la distibution GNU/Linux Debian qui permet de faciliter la maintenance du fichier /etc/resolv.conf. Il agit comme une interface entre les programmes qui définissent l'adresse des serveurs de noms (client DCHP, démon PPP…) et les programmes qui utilisent ces informations (résolveur de noms, cache DNS…).
Ce programme évite ainsi l'édition directe du fichier /etc/resolv.conf par les programmes en question : les programmes qui ont à ajouter un serveur de nom fournissent son adresse à Resolvconf qui, selon la configuration de l'utilisateur, choisit de l'inclure ou non dans le fichier /etc/resolv.conf.
Resolvconf offre un avantage particulier avec DnsMasq : il permet de ne fournir à DnsMasq que les DNS externes. Resolvconf va générer un fichier spécifique (/var/run/dnsmasq/resolv.conf) qui contient l'ensemble des adresses des serveurs de noms sauf celle de DnsMasq. D'autre part, à chaque changement de DNS externes, l'information sera automatiquement mise à jour dans le fichier en question. DnsMasq va utiliser automatiquement ce fichier à la place du classique /etc/resolv.conf
Pour installer Resolvconf :
~/# apt-get install resolvconf
DnsMasq peut aussi être utilisé dans le cadre de réseaux multiples. Dans le schéma ci-contre, on fait fonctionner DnsMasq sur la machine Zeus (réseau LAN1). On souhaite également que les postes clients du LAN2 puissent aussi recevoir la configuration automatique du DnsMasq (avec des paramètres différents, pour s'adapter à la topologie du réseau).
Malheureusement, les requêtes DHCP ne peuvent passé d'un réseau physique à l'autre. Dans le cas de deux réseaux reliés par un VPN, il faut donc utiliser un relai DHCP qui va se charger de transférer les requêtes DHCP des clients du LAN2 vers le serveur DnsMasq. Ce dernier va répondre au relai, ce dernier se chargeant de renvoyer la réponse au bon client.
/etc/dnsmasq.conf - DHCP sur deux réseaux physiques
domain-needed expand-hosts bogus-priv interface=eth0 domain=home.chezmoi.invalid cache-size=256 # réseau local 192.168.1.0/24 dhcp-range=lan1,192.168.1.10,192.168.1.100,12h # réseau distant 192.168.0.0/24 dhcp-range=lan2,192.168.0.10,192.168.0.100,255.255.255.0,12h dhcp-option=lan2,3,192.168.0.1
Explication des paramètres utilisés :
Il faut ensuite installer le serveur relai qui va se trouver dans le même réseau physique que les machines à qui il doit fournir des adresses IP.
~/# apt-get install dhcp3-relay