Supposons que vous voulez tester quelque chose dans une configuration de démonstration avec 5 machines. Vous créez les machines virtuelles nécessaires dans votre environnement local, mais vous ne pouvez pas les adresser correctement par leur nom. Avec 5 machines, vous devez également noter leurs adresses IP, ce qui n’est guère pratique.
Heureusement, il existe une solution élégante : le plugin dnsmasq est un joyau caché de NetworkManager.
Avec le plugin dnsmasq, NetworkManager exécute une copie locale et personnalisable de dnsmasq.
Deux cas d'utilisation :
Domaines :
À la maison, mon serveur DNS est 172.31.0.1.
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 demandes 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 les transmettra aux serveurs DNS associés à mon réseau actuel ou VPN.
Connaître le serveur DNS utilisé :
...@...:~$ cat /etc/resolv.conf # Generated by resolvconf nameserver fd0f:ee:b0::1
C'est l'adresse IPV6 de la box
...@...:~ $ nmcli dev show |grep DNS IP4.DNS[1]: 192.168.0.254 IP6.DNS[1]: fd0f:ee:b0::1
192.168.0.254 = adresse IPv4 de la box
(Exemple pour le domaine localhost)
# Activer le plugin dnsmasq. [main] dns=dnsmasq
# Ce fichier configure le domaine (local) localhost # et définit des alias et un caractère générique. address=/localhost/127.0.0.1 # une entrée DNS générique. #address=/.localhost/127.0.0.1
# Par défaut, le plugin ne lit pas à partir de /etc/hosts. # Cela force le plugin à lire le fichier. # Cela pourrait pointer vers un autre fichier si vous ne voulez pas écrire dans le fichier /etc/hosts addn-hosts=/etc/hosts
...@...:~$ sudo systemctl restart NetworkManager
...@...:~$ cat /etc/resolv.conf # Generated by NetworkManager nameserver 127.0.0.1
la plupart des entrées DNS sont définies dans /etc/hosts. dnsmasq peut alors les récupérer.
J'ai également quelques entrées DNS supplémentaires pour un DNS générique et quelques alias. Les fichiers dans dnsmasq.d pourraient être combinés, mais sont divisés pour mieux montrer l'exemple.
# /etc/NetworkManager/dnsmasq.d/00-homelab.conf # # transmettre toute demande pour le domaine .homelab # vers le serveur DNS domestique (172.31.0.1) server=/homelab/172.31.0.1
# Les noms d'hôte définis ici seront importés grâce au fichier 02-add-hosts.conf. 127.0.0.1 localhost localhost.localdomain ::1 localhost localhost.localdomain # Les hôtes sont dans le domaine .laplab, # comme configuré dans le fichier 01-laplab.conf 192.168.101.120 ose-lap-jumphost.laplab 192.168.101.128 ose-lap-node1.laplab # Le nom qui ne figure pas dans .laplab sera également récupéré. # Soyez donc prudent en définissant les éléments ici. 172.31.0.88 overwrite.public.domain.com
...@...:~$ sudo systemctl restart NetworkManager
Si tout fonctionne correctement, 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.