DnsmasqCette page décrit la configuration d’un serveur Dnsmasq sous CentOS. 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.2.1   nestor.microlinux.lan  nestor

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

Dnsmasq est fourni par les dépôts officiels de Red Hat et CentOS.

$ sudo yum install dnsmasq

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 six cents 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
$ sudo mv dnsmasq.conf dnsmasq.conf.orig

Éditer une configuration minimale.

# /etc/dnsmasq.conf
domain-needed
bogus-priv
interface=enp3s0                            
dhcp-range=192.168.2.100,192.168.2.200,24h
local=/microlinux.lan/
domain=microlinux.lan
expand-hosts
server=1.1.1.1
server=1.0.0.1
no-resolv
log-facility=/var/log/dnsmasq.log
  • Les deux premières options domain-needed et bogus-priv évitent que Dnsmasq ne relaie les requêtes incomplètes ou locales à 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 par le 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 alphamule, Dnsmasq retournera automatiquement l’adresse IP de l’hôte alphamule.microlinux.lan.
  • L’option server spécifie l’adresse IP d’un ou plusieurs serveurs DNS en amont. Dans l’exemple ci-dessus, on utilise les deux serveurs DNS de Cloudflare. Alternativement, on pourra prendre les deux serveurs 8.8.8.8 et 8.8.4.4 de Google. Avec une LiveBox de chez Orange, c’est même obligatoire.
  • L’option no-resolv indique à Dnsmasq de ne pas prendre en compte le contenu du fichier /etc/resolv.conf.
  • Dans la configuration par défaut, Dnsmasq écrit ses logs un peu partout dans /var/log. La directive log-facility permet de centraliser les logs en un seul fichier, ce qui est bien plus propre.

Démarrage et utilisation

Activer Dnsmasq.

$ sudo systemctl enable dnsmasq

Démarrer Dnsmasq

$ sudo systemctl start dnsmasq

Vérifier l’état du service.

$ systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; 
           vendor preset: disabled)
   Active: active (running) since Thu 2019-01-03 06:31:17 CET; 4h 27min ago

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=D4:85:64:B2:B2:1B,alphamule,192.168.2.2
dhcp-host=00:1E:C9:43:A7:BF,bernadette,192.168.2.3
dhcp-host=00:1D:09:15:4A:D8,raymonde,192.168.2.4
dhcp-host=00:1E:C9:42:84:7B,amandine,192.168.2.5
...

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=B8:CA:3A:D6:5A:43,1C:3E:84:32:7E:87,buzz,192.168.2.6
dhcp-host=90:E6:BA:CF:04:8F,64:70:02:9A:AC:93,balthazar,192.168.2.7
...

Gérer les 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 propager l’info au niveau du réseau local.

# /etc/hosts
127.0.0.1     localhost.localdomain localhost
192.168.2.1   nestor.microlinux.lan nestor
192.168.2.2   alphamule
192.168.2.3   bernadette
192.168.2.4   raymonde
192.168.2.5   amandine
192.168.2.6   buzz
192.168.2.7   balthazar
192.168.2.10  centosbox
192.168.2.11  susebox
192.168.2.252 hp-officejet
192.168.2.253 nas
192.168.2.254 wifi

Une remarque importante s’impose ici. Dnsmasq lit les informations sur les hôtes statiques dans le fichier /etc/hosts, et non pas dans /etc/dnsmasq.conf. La résolution correcte des noms d’hôtes dans le réseau local se fait donc au prix d’une petite redondance.

Relancer Dnsmasq pour prendre en compte les modifications.

$ sudo systemctl restart dnsmasq

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.

[microlinux@nestor:~] $ host alphamule
alphamule has address 192.168.2.2
[microlinux@nestor:~] $ host bernadette
bernadette has address 192.168.2.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/dnsmasq.log.

$ sudo tail -f /var/log/dnsmasq.log 
Jan  3 16:12:25 ... DHCPREQUEST(enp3s0) 192.168.2.7 64:70:02:9a:ac:93 
Jan  3 16:12:25 ... DHCPACK(enp3s0) 192.168.2.7 64:70:02:9a:ac:93 balthazar
Jan  3 16:13:33 ... DHCPREQUEST(enp3s0) 192.168.2.252 10:62:e5:d4:95:60 
Jan  3 16:13:33 ... DHCPACK(enp3s0) 192.168.2.252 10:62:e5:d4:95:60 hp-officejet
Jan  3 16:13:54 ... DHCPDISCOVER(enp3s0) 00:1d:09:15:4a:d8 
Jan  3 16:13:54 ... DHCPOFFER(enp3s0) 192.168.2.4 00:1d:09:15:4a:d8 
Jan  3 16:13:54 ... DHCPREQUEST(enp3s0) 192.168.2.4 00:1d:09:15:4a:d8 
Jan  3 16:13:54 ... DHCPACK(enp3s0) 192.168.2.4 00:1d:09:15:4a:d8 raymonde
Jan  3 16:15:27 ... DHCPDISCOVER(enp3s0) 00:1e:c9:43:a7:bf 
Jan  3 16:15:27 ... DHCPOFFER(enp3s0) 192.168.2.3 00:1e:c9:43:a7:bf 
Jan  3 16:15:27 ... DHCPREQUEST(enp3s0) 192.168.2.3 00:1e:c9:43:a7:bf 
Jan  3 16:15:27 ... DHCPACK(enp3s0) 192.168.2.3 00:1e:c9:43:a7:bf bernadette
Jan  3 16:16:39 ... DHCPDISCOVER(enp3s0) 192.168.2.253 00:11:32:26:63:a5 
Jan  3 16:16:39 ... DHCPOFFER(enp3s0) 192.168.2.253 00:11:32:26:63:a5 
Jan  3 16:16:39 ... DHCPREQUEST(enp3s0) 192.168.2.253 00:11:32:26:63:a5 
Jan  3 16:16:39 ... DHCPACK(enp3s0) 192.168.2.253 00:11:32:26:63:a5 nas
Jan  3 16:16:43 ... DHCPDISCOVER(enp3s0) 192.168.2.253 00:11:32:26:63:a5 
Jan  3 16:16:43 ... DHCPOFFER(enp3s0) 192.168.2.253 00:11:32:26:63:a5 
...

Téléchargement

Un modèle de fichier de configuration pour Dnsmasq est disponible dans mon dépôt Github, dans le répertoire el7/config/dnsmasq.

$ git clone https://github.com/kikinovak/centos
$ ls centos/el7/config/dnsmasq
dnsmasq.conf

1 commentaire

Installer et configurer un serveur Dnsmasq sous CentOS 7 - My Tiny Tools · 3 janvier 2019 à 23 h 33 min

[…] (Source: Journal du hacker) […]

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.