Dnsmasq - Installer et
configurer facilement un serveur DNS / DHCP
Plus modeste que les habituels Bind ou Bind9, Dnsmasq n'en
offre pas moins une multitude d'options.
Relais DNS, il s'acquitte
également de la charge de Serveur DHCP pour le réseau local.
Voici en quelques lignes, les
paramètres indispensables à une configuration de base, et.. quelques extras..
Dnsmasq est, à mon sens, plutôt un serveur DHCP avec fonction relais DNS.
Pourquoi "relais" ? Parce qu’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.
Installation de Dnsmasq
Rien de bien compliqué, il est sur les dépôts, donc (en root) :
# aptitude
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 :
# nano
/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èses 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
##
## 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
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
##
## 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 :
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 rechargerr le service dnsmasq (après
modification du fichier de configuration) :
# service
dnsmasq reload
·
Pour redémarrer le service dnsmasq :
# service
dnsmasq restart
·
Pour visualiser les logs :
# journalctl
Sources et liens :