serveurs-image



Dnsmasq est, à mon sens, plutôt un serveur DHCP avec fonction relais DNS.
Pourquoi "relais" ? Parcequ'il retransmet les résolutions DNS renseignées par le serveur externe indiqué dans " /etc/resolv.conf " (comme pour n'importe quelle Linux) et y ajoute les infos fournies dans " /etc/hosts " ainsi que ses propres clients DHCP.

Donc, si les DNS de "Google" (8.8.8.8) sont renseignés dans le fichier " /etc/resolv.conf " du serveur, les réponses qu'il donnera aux clients seront celles de " Google ".
Sauf pour ce qui est des adresses et/ou machines déclarées dans "/etc/hosts" et bien sûr, celles indiquées dans la configuration de Dnsmasq ( /etc/dnsmasq.conf ).

En d'autres termes, il répond à 80% des besoins en la matière et de manière assez simple. Bien loin de la complexité des références comme Bind9, même s'il ne permet pas réellement des fonctions poussées comme le " Reverse DNS ".


Installation de Dnsmasq


Rien de bien compliqué, il est sur les dépôts Base de CentOS, donc (en root) :

# yum install dnsmasq



Puis une copie du fichier original de configuration, à toutes fins utiles :

# mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.old



Et on ouvre un fichier de conf tout propre :

# vi /etc/dnsmasq.conf




Détails et options du fichier de configuration de Dnsmasq



Pour plus de clarté, je vous propose de remplir progressivement votre fichier " /etc/dnsmasq.conf ", de manière à comprendre les options importantes.
Les lignes commençant par des doubles dièse pour les commentaires.


  • Pour la première partie, les options qui conviennent à une majorité de cas. A laisser tel que présenté (Sauf cas vraiment particuliers) :
## Configuration file for dnsmasq by mgroup.fr
##
## utilisation de nom de domaine complet
## pour les requetes dns
domain-needed

## simulation de reverse dns pour les requetes locales
bogus-priv

## pour ne pas verifier systematiquement que 
## le fichier /etc/hosts a ete modifie
no-poll

## decommenter cette ligne pour
##  ignorer le fichier /etc/hosts
# no-hosts



  • Poursuivons avec la complétion automatique des noms courts. C'est à dire que pour une machine "pc-test", une requête depuis un client obtiendra une réponse sur deux noms :
## Ajouter automatiquement le domaine defini 
expand-hosts


Exemple : Pour une machine qui n'a qu'un nom court, exemple "pc-test", le serveur complètera tout seul le nom long. Si votre domaine est "duchnoc.priv", ça donnera une réponse pour les deux situations :

  1. ping pc-test
  2. ping pc-test.duchnoc.priv



  • L'interface d'écoute permet d'indiquer le (ou les) périphérique(s) réseau sur le(s)quel(s) répondra " dnsmasq " :
## interface d'ecoute 
interface=eth0



  • Le nom du domaine local au sens Linux. Evitez d'indiquer un domaine public connu (ex: fnac.com) sous peine d'avoir quelques problèmes de résolutions.

Heu.. " duchnoc.priv " c'est un exemple hein..

## domain=Domaine.lan : Definition du nom de domaine du reseau local
domain=duchnoc.priv



  • La plage d'attribution d'IP(s). Attention aux éventuels conflits (machine en " ip fixe ") sur votre réseau.
##dhcp-range :  plage IP des baux fournis aux clients et temps du jeton. ici 24 heures
dhcp-range=192.168.0.28,192.168.0.60,255.255.255.0,24h



  • La liste de déclaration des machines. Indiquez pour chacune son adresse mac, son nom court et l'ip à réserver (Dans la plage ci dessus bien sûr).
## dhcp-host : Permet d.attribuer une ip fixe a un client via sa mac_adress
## et fixer son nom machine
dhcp-host=00:BB:FF:FF:00:99,poste-test,192.168.0.28
dhcp-host=00:99:EE:FF:AA:EE,serv-freenx,192.168.0.29
dhcp-host=77:66:22:22:33:DD,iphone-x,192.168.0.41



  • Un petit plus pour la sécurité réseau, si vous dé-commentez la ligne ci dessous, les clients non déclarés de " dnsmasq.conf " (liste ci-dessus) n'aurons pas de bail DHCP, même s'il reste de la place dans la plage d'attribution (dhcp-range).
## decommenter cette ligne pour ignorer 
## les clients non declares ci dessus
#dhcp-ignore=tag:!known



  • Le serveur DNS qui sera attribué aux clients. Fort logiquement donc, l'ip de notre serveur dnsmasq :
##Option 6 : Serveur DNS pour les clients
## donc ip du serveur dnsmasq
dhcp-option=6,192.168.0.5



  • La passerelle par défaut qui sera indiquée aux clients. Un serveur ou votre routeur, selon vos besoins.
##Option 3 : Passerelle par defaut
## votre serveur passerelle 
## ou votre routeur
dhcp-option=3,192.168.0.1



  • Sauf cas particuliers, les Options 1 et 28 ne sont pas utilisées. Les commentaires sont assez explicites.
##Option 1 : Masque de sous reseau. inutile sauf si autre que 255.255.255.0
## donc rien
##Option 28 : Adresse de broadcast
## idem



  • Le " Time To Live ". Comprenez le laps de temps pendant lequel les clients garderont en cache chaque réponse du serveur dns (en secondes).
## Option 23 : TTL et sa valeur apres la virgule
## option time-to-live a fixer a 50
dhcp-option=23,50


  • Il convient de toujours fixer une limite au nombre de clients possibles, et d'indiquer à dnsmasq le fichier dans lequel il va loguer les baux dhcp.
##maximum de clients dhcp et fichier log
dhcp-lease-max=150
dhcp-leasefile=/var/lib/misc/dnsmasq.leases


  • Fixer la taille du cache utilisé par dnsmasq
## cache-size : Precise la taille (en Mo) du cache (dernieres requetes et les renvois)
cache-size=250


  • Enfin, l'enregistrement des requetes dans les logs du serveur
## requetes dns dans les logs
log-queries




Fichier " dnsmasq.conf " assemblé


Ci dessous, notre fichier assemblé et complet :

## Configuration file for dnsmasq by mgroup.fr
##
## utilisation de nom de domaine complet
## pour les requetes dns
domain-needed

## simulation de reverse dns pour les requetes locales
bogus-priv

## pour ne pas verifier systematiquement que 
## le fichier /etc/hosts a ete modifie
no-poll

## decommenter cette ligne pour
##  ignorer le fichier /etc/hosts
# no-hosts

## Ajouter automatiquement le domaine defini 
expand-hosts

## interface d'ecoute 
interface=eth0

## domain=Domaine.lan : Definition du nom de domaine du reseau local
domain=duchnoc.priv

##dhcp-range :  plage IP qui sera fournie aux clients et temps du jeton. ici 24 heures
dhcp-range=192.168.0.28,192.168.0.60,255.255.255.0,24h

## dhcp-host : Permet d.attribuer une ip fixe a un client via sa mac_adress
## et fixer son nom machine
dhcp-host=00:BB:FF:FF:00:99,poste-test,192.168.0.28
dhcp-host=00:99:EE:FF:AA:EE,serv-freenx,192.168.0.29
dhcp-host=77:66:22:22:33:DD,iphone-x,192.168.0.41

## decommenter cette ligne pour ignorer 
## les clients non declares ci dessus
#dhcp-ignore=tag:!known


## dhcp-option : Permet de definir les options envoyees aux clients
##Option 6 : Serveur DNS pour les clients
## donc ip du serveur dnsmasq
dhcp-option=6,192.168.0.5

##Option 3 : Passerelle par defaut
## votre serveur passerelle 
## ou votre routeur
dhcp-option=3,192.168.0.1

##Option 1 : Masque de sous reseau. inutile sauf si autre que 255.255.255.0
## donc rien
##Option 28 : Adresse de broadcast
## idem

## Option 23 : TTL et sa valeur apres la virgule
## option time-to-live a fixer a 50
dhcp-option=23,50

##maximum de clients dhcp et fichier log
dhcp-lease-max=150
dhcp-leasefile=/var/lib/misc/dnsmasq.leases

## cache-size : Precise la taille du cache (dernieres requetes et les renvois)
cache-size=250

## requetes dns dans les logs
log-queries



Pour ceux (ou celles) qui auraient "survolé" les descriptifs plus haut, voici un rappel des lignes de ce " dnsmasq.conf " à modifier impérativement pour l'adapter à votre situation :

  • interface=eth0 (Interface réseau à utiliser, il peut y en avoir plusieurs. Une ligne par interface)
  • domain=duchnoc.priv (Nom de domaine)
  • dhcp-range=192.168.0.28,192.168.0.60,255.255.255.0,24h (Plage d'attribution Ip pour les clients)
  • dhcp-host=00:BB:FF:FF:00:99,poste-test,192.168.0.28 (adresse mac d'un client, nom du client, ip à affecter. Une ligne par machine)
  • dhcp-option=6,192.168.0.5 (Serveur dns pour les clients. Si plusieurs, séparez par une virgule)
  • dhcp-option=3,192.168.0.1 (passerelle par défaut pour les clients. Une seule ip)



Il y a bien sûr une multitude d'autres options possibles. L'idée étant ici de donner une base de départ fonctionnelle.


  • Pour lancer dnsmasq après installation :
# service dnsmasq start


  • Pour automatiser dnsmasq au démarrage du serveur :
# chkconfig dnsmasq on


  • Pour redémarrer le service dnsmasq (exemple : après modif du fichier de configuration) :
# service dnsmasq restart





Sources et liens :




Vous pouvez commenter ou participer à l'amélioration de cet article via le topic dédié du forum.