Le plugin dnsmasq est un joyau caché de NetworkManager.
Lors de l'utilisation du plugin, au lieu d'utiliser le serveur de noms DNS distribué par DHCP, NetworkManager configurera une copie locale de dnsmasq qui peut être personnalisée.
Vous pouvez demander : pourquoi faire cela ?
Personnellement, j'ai deux cas d'utilisation :
Le plugin dnsmasq pour NetworkManager résout ces deux problèmes.
Pour les entrées DNS locales, le plugin peut configurer des domaines locaux qui seront disponibles quel que soit le réseau auquel je suis connecté.
Pour le scénario VPN, je peux configurer dnsmasq pour transférer les demandes de mon domaine domestique vers mon serveur DNS domestique. Le DNS du VPN est configuré comme un transitaire dans dnsmasq plutôt que comme un serveur DNS principal, je peux donc résoudre à la fois les entrées DNS sur le réseau VPN et les miennes.
Voici comment le configurer dans Fedora 29 :
Dans un certain contexte, mon domaine sur mon ordinateur portable s'appelle laplab et mon domaine personnel est .cscc. Chez moi, mon serveur DNS est 172.31.0.20. Pour les entrées DNS dans laplab, la plupart d'entre elles 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 certains alias.
Voici les cinq fichiers à ajouter. NetworkManager utilise un répertoire de configuration. Vous pourriez peut-être disposer ces fichiers différemment si vous le souhaitez :
# /etc/NetworkManager/conf.d/00-use-dnsmasq.conf # # This enabled the dnsmasq plugin. [main] dns=dnsmasq
# /etc/NetworkManager/dnsmasq.d/00-cscc.conf # # This file directs dnsmasq to forward any request to resolve # names under the .cscc domain to 172.31.0.20, my home DNS server. server=/cscc/172.31.0.20
# /etc/NetworkManager/dnsmasq.d/01-laplab.conf # This file sets up the local lablab domain and # defines some aliases and a wildcard. local=/laplab/ address=/.ose.laplab/192.168.101.125 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 addn-hosts=/etc/hosts
# /etc/hosts 127.0.0.1 localhost localhost.localdomain ::1 localhost localhost.localdomain 192.168.101.120 ose-lap-jumphost ose-lap-jumphost.laplab 192.168.101.121 ose-lap-master1 ose-lap-master1.laplab 192.168.101.122 ose-lap-master2 ose-lap-master2.laplab 192.168.101.123 ose-lap-master3 ose-lap-master3.laplab 192.168.101.125 ose-lap-infnode1 ose-lap-infnode1.laplab 192.168.101.126 ose-lap-infnode2 ose-lap-infnode2.laplab 192.168.101.127 ose-lap-infnode3 ose-lap-infnode3.laplab 192.168.101.128 ose-lap-node1 ose-lap-node1.laplab 192.168.101.129 ose-lap-node2 ose-lap-node2.laplab 192.168.101.130 ose-lap-node3 ose-lap-node3.laplab
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 qu'un nouveau processus dnsmasq est généré.
...@...:~ $ 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