Mettre en place un serveur Dnsmasq sous CentOS

Logo DnsmasqCette page décrit la configuration d’un serveur Dnsmasq sous CentOS et Red Hat Enterprise Linux. Dnsmasq est un serveur léger qui fournit les services DHCP et DNS pour des réseaux locaux, même de taille importante. Il est extrêmement facile à configurer, et l’on pourra l’utiliser pour remplacer DHCPD et Bind. Ce dernier n’est pas très adapté pour les DNS de réseaux locaux, notamment à cause de sa syntaxe farfelue.

Prérequis

Ouvrir les ports suivants dans le pare-feu :

  • 53 en TCP et UDP (requêtes DNS)
  • 67 et 68 en UDP (requêtes DHCP)

Le fichier /etc/hosts du serveur local doit comporter au moins les deux lignes suivantes :

# /etc/hosts
127.0.0.1     localhost.localdomain localhost
192.168.3.1   amandine.sandbox.lan  amandine

C’est surtout la deuxième ligne qui est d’une importance capitale. Elle fait correspondre le nom de la machine locale avec l’adresse IP dans le réseau local.

Installation

Vérifier si Dnsmasq est installé :

# rpm -qa | grep dnsmasq          (RHEL 5)
dnsmasq-2.45-1.1.el5_3

# rpm -qa | grep dnsmasq          (RHEL 6)
dnsmasq-2.48-17.el6.i686
dnsmasq-utils-2.48-17.el6.i686

# rpm -qa | grep dnsmasq          (RHEL 7)
dnsmasq-utils-2.66-12.el7.x86_64
dnsmasq-2.66-12.el7.x86_64

Configuration de base

La configuration de Dnsmasq s’effectue par le biais du fichier de configuration /etc/dnsmasq.conf. Le fichier fourni par défaut comporte près de 600 lignes de commentaires et sert également de documentation. On pourrait très bien activer l’une ou l’autre option en la décommentant. Dans le cas présent, il vaut mieux effectuer une copie de sauvegarde et commencer par un fichier vide :

# cd /etc
# mv dnsmasq.conf dnsmasq.conf.orig
# touch dnsmasq.conf

Éditer une configuration minimale, par exemple :

# /etc/dnsmasq.conf
domain-needed
bogus-priv
interface=enp3s1                             
dhcp-range=192.168.3.100,192.168.3.200,24h
local=/sandbox.lan/
domain=sandbox.lan
expand-hosts
server=192.168.2.1
  • Les deux premières options domain-needed et bogus-priv évitent que Dnsmasq ne relaie les noms d’hôtes locaux à un ou plusieurs serveurs DNS en amont.
  • L’option interface spécifie l’interface réseau que l’on souhaite utiliser.
  • L’option dhcp-range définit la plage d’adresses dynamiques utilisée parle serveur DHCP. Dans le cas présent, les adresses attribuées auront une durée de validité de 24 heures. Passé ce délai, elles devront être renouvelées par les clients.
  • L’option local indique que les réponses aux requêtes pour le domaine spécifié doivent être fournies directement par Dnsmasq, et non pas par un serveur DNS en amont.
  • L’option domain attribue le nom de domaine spécifié aux clients. Pour des raisons évidentes, il doit coïncider avec le domaine défini dans l’option local.
  • L’option expand-hosts concerne les requêtes DNS sans le domaine et se charge d’ajouter celui-ci automatiquement. Concrètement, lorsqu’on essaie d’envoyer un ping sur bernadette, Dnsmasq retournera automatiquement l’adresse IP de bernadette.sandbox.lan.
  • L’option server spécifie l’adresse IP d’un ou plusieurs serveurs DNS en amont.

Démarrage et utilisation

Activer Dnsmasq :

# chkconfig dnsmasq on                  (RHEL 5/6)
# systemctl enable dnsmasq              (RHEL 7)

Gérer le lancement et l’arrêt :

# service dnsmasq start                 (RHEL 5/6)
# systemctl start|stop|restart dnsmasq  (RHEL 7)

Attribuer des adresses statiques

On pourra attribuer une adresse IP et un nom d’hôte fixe en fonction de l’adresse MAC des interfaces réseau respectives, en ajoutant une série d’entrées comme ceci :

# /etc/dnsmasq.conf
...
dhcp-host=00:1E:C9:43:A7:BF,bernadette,192.168.3.2
dhcp-host=00:1D:09:15:4A:D8,raymonde,192.168.3.3
...

On choisira les adresses IP en-dehors de la plage d’adresses dynamiques.

Si l’on souhaite attribuer une adresse IP et un nom d’hôte fixe à un portable que l’on connecte aussi bien par le wifi que par une connexion filaire, on peut utiliser la syntaxe suivante :

# /etc/dnsmasq.conf
...
dhcp-host=44:1E:A1:E6:FA:93,E4:D5:3D:BD:EA:05,buzz,192.168.3.6
dhcp-host=00:27:19:F1:BC:3A,00:19:E0:83:3A:C1,bebette,192.168.3.7
...

Ajouter des hôtes statiques

L’ajout d’hôtes statiques est extrêmement simple avec Dnsmasq. Il suffit d’ajouter l’entrée correspondante dans le fichier /etc/hosts du serveur, et celui-ci se chargera de relayer l’info :

# /etc/hosts 
...
192.168.3.254   wifi
...

Relancer Dnsmasq pour prendre en compte les modifications :

# service dnsmasq restart    (RHEL 5/6)
# systemctl restart dnsmasq  (RHEL 7)

On peut également ajouter un raccourci pour une adresse IP externe :

# /etc/hosts
...
88.191.189.120  dedibox
...

Si le serveur héberge une série de sites web sous formes d’hôtes virtuels, on peut ajouter les entrées correspondantes comme ceci :

# /etc/hosts 
...
192.168.3.1   mirror.amandine.sandbox.lan mirror.amandine
192.168.3.1   cmsms.amandine.sandbox.lan cmsms.amandine
...

Résolution des noms d’hôtes

Les postes clients sur le réseau utilisent les informations sur les noms d’hôtes fournies par Dnsmasq. Pour que le serveur lui-même puisse les prendre en compte aussi, il faudra éditer /etc/resolv.conf comme ceci :

# /etc/resolv.conf
nameserver 127.0.0.1

Vérifions :

[root@amandine:~] # host bernadette
bernadette has address 192.168.3.2
[root@amandine:~] # host raymonde
raymonde has address 192.168.3.3

Afficher en direct l’attribution des baux DHCP

Sur le serveur, on peut suivre en direct l’attribution des baux DHCP en affichant en continu le journal /var/log/messages :

# tail -f /var/log/messages
... DHCPREQUEST(enp3s1) 192.168.3.2 00:1e:c9:43:a7:bf
... DHCPACK(enp3s1) 192.168.3.2 00:1e:c9:43:a7:bf bernadette
... DHCPREQUEST(enp3s1) 192.168.3.3 00:1d:09:15:4a:d8
... DHCPACK(enp3s1) 192.168.3.3 00:1d:09:15:4a:d8 raymonde
Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *