CentOS Serveur - 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" ? 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 :
- ping pc-test
- 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.