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:
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.
$ # /etc/NetworkManager/conf.d/00-use-dnsmasq.conf # # This enabled the dnsmasq plugin. [main] dns=dnsmasq
# /etc/NetworkManager/dnsmasq.d/00-homelab.conf # # This file directs dnsmasq to forward any request to resolve # names under the .homelab domain to 172.31.0.1, my # home DNS server. server=/homelab/172.31.0.1
# /etc/NetworkManager/dnsmasq.d/01-laplab.conf # This file sets up the local lablab domain and # defines some aliases and a wildcard. local=/laplab/ # The below defines a Wildcard DNS Entry. address=/.ose.laplab/192.168.101.125 # Below I define some host names. I also pull in address=/openshift.laplab/192.168.101.120 address=/openshift-int.laplab/192.168.101.120
# /etc/NetworkManager/dnsmasq.d/02-add-hosts.conf # By default, the plugin does not read from /etc/hosts. # This forces the plugin to slurp in the file. # # If you didn't want to write to the /etc/hosts file. This could # be pointed to another file. # addn-hosts=/etc/hosts
# /etc/hosts # # The hostnames I define in that will be brought in and resolvable # because of the config in the 02-add-hosts.conf file. # 127.0.0.1 localhost localhost.localdomain ::1 localhost localhost.localdomain # Notice that my hosts be in the .laplab domain, like as configured # in 01-laplab.conf file 192.168.101.120 ose-lap-jumphost.laplab 192.168.101.128 ose-lap-node1.laplab # Name not in .laplab will also get picked up. So be careful # defining items here. 172.31.0.88 overwrite.public.domain.com
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é.