Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

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 :

  • dans /etc/NetworkManager/conf.d/ :
  • dans /etc/NetworkManager/dnsmasq.d/
    • /etc/NetworkManager/dnsmasq.d/00-cscc.conf
      # /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
      # /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
      # /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
    # /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