Utilisation du plugin DNSMasq du NetworkManager

Supposons que vous voulez faire un essai dans une installation de démonstration avec 5 machines.

Vous voulez créer les machines virtuelles nécessaires dans votre environnement local, mais ne pouvez pas les adresser par leur nom.

Avec 5 machines, vous devez utiliser les adresses IP, ce qui n'est guère pratique.

Par chance, il existe une solution élégante : le plugin dnsmasq, un joyau caché de NetworkManager.

Pré-requis

Première étape

Activer le plugin dnsmasq de NetworkManager :

# Ceci active le plugin dnsmasq.
[main]
dns=dnsmasq

# Ce fichier met en place le domaine local lablab
# et définit quelques alias et un joker.
local=/homelab/
# Ce qui suit définit une entrée DNS Wildcard.
address=/.ose.homelab/192.168.101.125
# Ci-dessous, la définition de quelques noms d'hôtes.
address=/openshift.homelab/192.168.101.120
address=/openshift-int.homelab/192.168.101.120

# Par défaut, le plugin ne lit pas /etc/hosts. # Ceci force le plugin à intégrer ce fichier. # Si vous ne voulez pas écrire dans le fichier /etc/hosts, # vous pouvez le faire pointer vers un autre fichier. addn-hosts=/etc/hosts

Redémarrez NetworkManager :<cli prompt='$ '>...@...:~ $ sudo systemctl restart NetworkManager</cli>.

Si tout fonctionne correctement, vous devriez voir que resolv.conf pointe vers 127.0.0.1 et qu'un nouveau processus dnsmasq a été créé :

...@...:~ $ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1

Autres étapes

Configurer NetworkManager pour le domaine de libvirt :
Libvirt est livré avec son propre serveur DNS intégré, dnsmasq, pour servir les serveurs DHCP et DNS pour les vms.
NetworkManager peut également être configuré pour que le plugin dnsmasq fasse suivre les requêtes DNS à l'instance Libvirt si nécessaire :

server=/qxyz.intra/192.168.122.1

Configuration de libvirt
Il faut d'abord configurer libvirt. Comme le réseau “default” est attribué aux machines virtuelles concernées, la configuration devrait ressembler à ceci :

...@...:~ $ sudo virsh net-edit default
<network connections='1'>
<name>default</name>
<uuid>158880c3-9adb-4a44-ab51-d0bc1c18cddc</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:fa:cb:e5'/>
<domain name='qxyz.de' localOnly='yes'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.128' end='192.168.122.254'/>
</dhcp>
</ip>
</network>

Configuration des machines invitées :

...@...:~ $ sudo hostnamectl set-hostname neon.qxyz.intra

Conclusion

Problèmes connus

Voir aussi

(fr) https://devopstales.github.io/linux/networkmanagger-dnsmasq/

Basé sur << Using the NetworkManager’s DNSMasq plugin >> par devopstales.