Gestionnaire de réseau et plug-in DNSmasq

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 :

  1. Sur mon ordinateur portable, j'exécute une installation complète d'OpenShift.
    Pour que cela fonctionne, je dois pouvoir ajouter des entrées DNS.
    • Je pourrais créer une machine virtuelle pour exécuter un serveur DNS ou exécuter un serveur DNS localement, mais je dois ensuite modifier mon resolv.conf à chaque fois que je change de réseau (et parfois plus souvent).
  2. Quand je suis à la maison, je veux toujours pouvoir accéder aux entrées DNS de mon réseau domestique pendant que je suis sur VPN.
    • De nombreux VPN sont configurés de telle sorte que seul le trafic destiné au réseau VPN soit envoyé via le tunnel. Je peux toujours accéder à tout mon réseau local et la plupart du trafic sort par la passerelle par défaut.
    • C'est très bien car je peux toujours accéder à mon imprimante réseau ou écouter de la musique à partir de 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 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 :

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