Table des matières

Utilisation du plug-in DNSMasq de NetworkManager

FIXME Ca ne marche pas…

Le plugin dnsmasq est un joyau caché de NetworkManager.

Lors de l'utilisation du plugin, au lieu d'utiliser n'importe quel serveur de noms DNS distribué par DHCP, NetworkManager configurera une copie locale de dnsmasq qui peut être personnalisée.

Pourquoi faire cela? Pour moi personnellement, j'ai deux cas d'utilisation:

  1. Tout d'abord, sur mon ordinateur portable, j'exécute une installation complète d'OpenShift à des fins de test. Pour que cela fonctionne, j'ai vraiment besoin de pouvoir ajouter des enregistrements DNS. Je peux exécuter un dnsmasq local sans NetworkManager, mais cette configuration est plus facile que de gérer la mienne.
  2. Deuxièmement, lorsque je suis à la maison, je souhaite toujours utiliser le DNS de mon réseau domestique lorsque je suis sur VPN. De nombreux VPN sont configurés pour acheminer uniquement le trafic spécifique via le tunnel VPN et laisser ma route par défaut en place. Cela signifie que je peux accéder à l’imprimante de mon réseau local et toujours me connecter aux ressources sur le VPN.
    C'est très bien, car cela signifie que je peux toujours accéder à mon imprimante réseau ou écouter de la musique depuis mon serveur multimédia tout en travaillant. Cependant, la connexion VPN écrase mon resolv.conf avec les serveurs DNS du réseau VPN. Par conséquent, le DNS de mon réseau domestique n’est plus accessible.

Le plugin dnsmasq résout ce problème en exécutant un serveur dnsmasq local contrôlé par NetworkManager.

Mon resolv.conf pointe toujours vers localhost.

Pour les enregistrements définis localement (par exemple pour mon cluster OpenShift), dnsmasq les résout correctement.

En utilisant une configuration dnsmasq plus avancée, je peux transférer de manière sélective des requêtes pour certains domaines vers des serveurs spécifiques (par exemple, pour toujours résoudre correctement les hôtes de mon réseau domestique).

Et pour toutes les autres demandes, dnsmasq transmettra aux serveurs DNS associés à mon réseau actuel ou VPN.

Voici comment le configurer dans Fedora 29:

Pour certains contextes, mon domaine sur mon ordinateur portable s’appelle «laplab» et mon domaine personnel est «.homelab».

À la maison, mon serveur DNS est 172.31.0.1.

Pour les entrées DNS dans laplab, la plupart de celles-ci sont définies dans /etc/hosts. dnsmasq peut alors les lire.

J'ai également quelques entrées DNS supplémentaires définies pour un DNS générique et quelques alias.

Voici les cinq fichiers qui doivent être ajoutés. Les fichiers dans dnsmasq.d pourraient être combinés, mais sont divisés pour mieux montrer l'exemple.

Une fois tous ces fichiers en place, redémarrez NetworkManager avec

$ systemctl restart NetworkManager

.

Si tout fonctionne correctement, vous devriez voir que votre resolv.conf pointe vers 127.0.0.1 et un nouveau processus dnsmasq est apparu.

$ ps -ef | grep dnsmasq
dnsmasq   1835  1188  0 08:01 ?        00:00:00 /usr/sbin/dnsmasq --no-resolv 
--keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid 
--listen-address=127.0.0.1 --cache-size=400 --clear-on-reload --conf-file=/dev/null 
--proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq 
--conf-dir=/etc/NetworkManager/dnsmasq.d
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1
$ host ose-lap-jumphost.laplab
ose-lap-jumphost.laplab has address 192.168.101.120

Cette configuration survivra aux redémarrages et, lors de mes tests, fonctionne avec presque tous les réseaux et VPN avec lesquels je l'ai essayé.

Pré-requis

Installation

Configuration

Utilisation

Désinstallation

Voir aussi


Basé sur « Using the NetworkManager’s DNSMasq plugin » par Clark Hale.