−Table des matières
Comment éviter les conflits entre dnsmasq et systemd-resolved ?
Le problème : si on installe dnsmasq comme serveur DNS pour un réseau local, dnsmasq écoute sur le port 53 qui est déjà utilisé par systemd-resolved.
Arrêter simplement systemd-resolved puis le redémarrer après l'exécution de dnsmasq, résout ce problème mais il revient après un redémarrage : systemd-resolved est démarré d'abord et dnsmasq ne démarre pas car le port 53 est déjà utilisé.
Comment faire comprendre à systemd-resolved qu'il ne doit pas démarrer l'écoute et donc conserver le port 53 pour une utilisation par dnsmasq ?
Il est plus intéressant de savoir comment les deux services peuvent fonctionner ensemble. Peuvent-ils travailler côte à côte ou ne sont-ils résolus que par systemd si l'on utilise dnsmasq ?
Voici la solution pour (X)Ubuntu 18.04 Bionic.
Pré-requis
Première étape
-
Installez le paquet dnsmasq ou en ligne de commande :
...@...:~$ sudo apt install dnsmasq
Autres étapes
-
Désactivez l'écoute sur le port 53 pour systemd-resolved (ne touchez pas à /etc/systemd/resolved.conf, car il peut être écrasé lors de la mise à niveau). Pour cela,
-
créez le répertoire
...@...:~$ sudo mkdir /etc/systemd/resolved.conf.d
-
créez avec les droits d'administration le fichier /etc/systemd/resolved.conf.d/noresolved.conf :
- /etc/systemd/resolved.conf.d/noresolved.conf
[Resolve] DNSStubListener=no
-
-
Redémarrez systemd-resolved :
...@...:~$ sudo systemctl restart systemd-resolved.service
-
Supprimez et recréez /etc/resolv.conf 1) :
...@...:~$ sudo rm /etc/resolv.conf ...@...:~$ sudo touch /etc/resolv.conf
-
Pour désactiver l'écrasement de /etc/resolv.conf par NM, éditez avec les droits d'administration le fichier /etc/NetworkManager/conf.d/disableresolv.conf :
- /etc/NetworkManager/conf.d/disableresolv.conf
[main] dns=none
-
Redémarrez NetworkManager :
...@...:~$ sudo systemctl restart NetworkManager.service
-
Pour que dnsmasq utilise resolv.conf de NM, éditez avec les droits d'administration le fichier /etc/dnsmasq.d/nmresolv.conf :
- /etc/dnsmasq.d/nmresolv.conf
resolv-file=/var/run/NetworkManager/resolv.conf
-
Créez avec les droits d'administration le fichier /etc/dnsmasq.d/mondns.conf pour y écrire vos réglages dnsmasq, par exemple :
- /etc/dnsmasq.d/mondomaine.conf
address=/pc1.mondomaine/192.168.0.1 address=/framboise.mondomaine/192.168.0.31 address=/framboise4.mondomaine/192.168.0.32
-
redémarrez dnsmasq :
...@...:~$ sudo systemctl restart dnsmasq
-
Pour utiliser dnsmasq pour la résolution, éditez avec les droits d'administration le fichier /etc/resolv.conf :
- /etc/resolv.conf
# Use local dnsmasq for resolving nameserver 127.0.0.1