Ceci est une ancienne révision du document !
Table des matières
DNSMasq : Utilisation du plug-in DNSMasq de NetworkManager
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 :
- sur un ordinateur portable, pour pouvoir ajouter des enregistrements DNS.
- à la maison, je veux utiliser le DNS de mon réseau domestique lorsque je suis sur VPN. De nombreux VPN sont configurés pour acheminer uniquement le trafic spécifique via le tunnel VPN et laisser en place ma route par défaut. Cela signifie que je peux accéder à mon imprimante réseau locale tout en me connectant aux ressources sur le VPN.
C'est très agréable, car cela signifie que je peux toujours accéder à mon imprimante réseau ou écouter de la musique depuis 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.
Domaines :
- sur l'ordinateur portable : laplab
- domaine personnel : .homelab.
À 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.
Pré-requis
Première étape
Connaître le serveur DNS utilisé :
- sur un Raspberry :
...@...:~$ cat /etc/resolv.conf # Generated by resolvconf nameserver fd0f:ee:b0::1
C'est l'adresse IPV6 de la box
- sous Ubuntu :
...@...:~$ nmcli dev show |grep DNS IP4.DNS[1]: 192.168.0.254 IP6.DNS[1]: fd0f:ee:b0::1 IP4.DNS[1]: 192.168.0.254 IP6.DNS[1]: fd0f:ee:b0::1
192.168.0.254 = adresse IPv4 de la box
Autres étapes
- Activez le dnsmasq de NetworkManager en éditant avec les droits d'administration le fichier /etc/NetworkManager/conf.d/00-use-dnsmasq.conf pour y écrire :
- /etc/NetworkManager/conf.d/00-use-dnsmasq.conf
# Activer le plugin dnsmasq. [main] dns=dnsmasq
- éditez avec les droits d'administration le fichier /etc/NetworkManager/dnsmasq.d/00-homelab.conf pour y écrire :
- /etc/NetworkManager/dnsmasq.d/00-homelab.conf
# Ce fichier met en place le domaine local homelab et définit des alias et un caractère générique. local=/homelab/ # Définit une entrée DNS générique. address=/.ose.homelab/192.168.101.125 # Définit quelques noms d'hôtes. address=/openshift.homelab/192.168.101.120 address=/openshift-int.homelab/192.168.101.120
- éditez avec les droits d'administration le fichier /etc/NetworkManager/dnsmasq.d/02-add-hosts.conf pour le modifier comme ceci :
la plupart des entrées DNS dans laplab 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.
- Configurer .homelab :
- /etc/NetworkManager/dnsmasq.d/00-homelab.conf
# /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
- Inclure le fichier hosts :
- /etc/NetworkManager/dnsmasq.d/02-add-hosts.conf
# /etc/NetworkManager/dnsmasq.d/02-add-hosts.conf # Force le plugin à inclure le fichier /etc/hosts. # (par défaut, le plugin ne lit pas à partir de /etc/hosts) # pourrait aussi pointer vers un autre fichier. addn-hosts=/etc/hosts
- fichier /etc/hosts :
- /etc/hosts
# 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
- Redémarrez NetworkManager :
...@...:~$ 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
Conclusion
Cette configuration survivra aux redémarrages.