Réponses:
dnsmasq
les packages sont toujours disponibles en 16.10 et 17.04.
Installer dnsmasq
et dépendances (ou au moins télécharger leurs packages) avant de désactiversystemd-resolved
:
sudo apt-get install dnsmasq
Désactivez systemd-resolved
et vérifiez que dnsmasq
s'exécute:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
systemctl status dnsmasq
Assaisonner dnsmasq
au goût. Après avoir appliqué vos paramètres, redémarrez dnsmasq
:
sudo systemctl stop dnsmasq
sudo systemctl start dnsmasq
Après l'étape 2, il se peut que vous ne disposiez pas d'un résolveur de système fonctionnel jusqu'à ce que l'étape 3 soit terminée. Vous devrez peut-être redémarrer le sous-système de mise en réseau (ou simplement redémarrer) pour dnsmasq
fonctionner avec les configurations par défaut. Lors de mes tests, l'ajout d'un serveur DNS connu /etc/dnsmasq.conf
et le redémarrage ont dnsmasq
suffi à le faire fonctionner dans un environnement liveCD.
dns=dnsmasq
config to/etc/NetworkManager/NetworkManager.conf
En plus de la réponse de @quixotic:
Assurez-vous que vous avez dans /etc/NetworkManager/NetworkManager.conf:
[main]
dns=dnsmasq
si vous devez l'ajouter, redémarrez NetworkManager comme ceci:
sudo systemctl restart NetworkManager
et /etc/resolv.conf
doit être un lien symbolique vers /var/run/NetworkManager/resolv.conf
. pourrait être fait comme ça
sudo rm /etc/resolv.conf; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf
dns=default
et cela fonctionne bien parce que j'ai les serveurs de noms définis ensuite par NetworkManager au lieu d'être définis dans dnsmasq; cela fonctionne pour moi - NM obtient les serveurs de noms à partir des paramètres définis dans la configuration NM de KDE via la barre d'état système. J'utilise l'IP fixe sur mon réseau domestique FWIW.
Selon le manuel de systemd-resolu , systemd-resolu fournit des services de résolution de noms via trois interfaces différentes:
API glibc getaddrinfo (3) telle que définie par RFC3493 et ses fonctions de résolveur associées, y compris gethostbyname (3). Cette API est largement prise en charge, y compris au-delà de la plate-forme Linux. Dans sa forme actuelle, il n'expose cependant pas les informations d'état de validation DNSSEC et est uniquement synchrone. Cette API est soutenue par le glibc Name Service Switch (nss (5)). L'utilisation du module glibc NSS nss-resolver (8) est requise afin de permettre aux fonctions de résolution NSS de glibc de résoudre les noms d'hôte via systemd-resolution.
Il semble que les deux premières interfaces n'interfèrent pas dans la résolution DNS normale et pour moi, le problème est susceptible de résider sur la troisième.
Dans le manuel de nss-resolver :
Pour activer le module NSS, ajoutez "résoudre" à la ligne commençant par "hôtes:" dans /etc/nsswitch.conf. Plus précisément, il est recommandé de placer "résoudre" au début de la ligne "hosts:" de /etc/nsswitch.conf (mais après les entrées "files" ou "mymachines"), juste avant l'entrée "dns" si elle existe, suivie de "[! UNAVAIL = return]", pour garantir que les requêtes DNS sont toujours acheminées via systemd-resolution (8) s'il est en cours d'exécution, mais sont acheminées vers nss-dns si ce service n'est pas disponible
Donc, ce qui est nécessaire est de faire "dns" précéder "résoudre" dans la ligne "host:" de /etc/nsswitch.conf . Et puis getaddrinfo
devrait simplement adhérer à /etc/resolv.conf .
Cette solution empêche uniquement systemd-resolution de gérer toutes les demandes de résolution DNS et n'est pas limitée à un gestionnaire de réseau spécifique. Et il s'assure également que le service LLMNR et mDNS fonctionnent normalement.
(Je ne suis pas assez familier avec le fonctionnement de la résolution de noms sous Linux et je ne suis pas sûr de ce que j'ai compris de ces manuels. Les plaidoyers indiquent si je me suis trompé. Thx :))
Pour (X) Ubuntu 18.04 (voir ma réponse sur stackexchange ).
En voici une copie (dois-je en faire une copie?)
Voici la solution pour (X) Ubuntu 18.04 Bionic.
Installer dnsmasq
sudo apt install dnsmasq
Désactivez l'écouteur résolu par systemd sur le port 53 (ne touchez pas /etc/systemd/resolved.conf, car il peut être remplacé lors de la mise à niveau):
$ cat /etc/systemd/resolved.conf.d/noresolved.conf
[Resolve]
DNSStubListener=no
et redémarrez-le
$ sudo systemctl restart systemd-resolved
(sinon désactivez-le complètement par $ sudo systemctl disable systemd-resolved.service
)
Supprimez /etc/resolv.conf et créez à nouveau. Ceci est important, car resolv.conf est un lien symbolique vers /run/systemd/resolve/stub-resolv.conf par défaut. Si vous ne supprimez pas le lien symbolique, le fichier sera écrasé par systemd au redémarrage (même si nous avons désactivé systemd-resolu!). NetworkManager (NM) vérifie également s'il s'agit d'un lien symbolique pour détecter la configuration résolue par le système.
$ sudo rm /etc/resolv.conf
$ sudo touch /etc/resolv.conf
Désactiver l'écrasement de /etc/resolv.conf par NM (il y a aussi une option rc-manager, mais cela ne fonctionne pas, bien qu'elle soit décrite dans un manuel):
$ cat /etc/NetworkManager/conf.d/disableresolv.conf
[main]
dns=none
et redémarrez-le:
$ sudo systemctl restart NetworkManager
Dites à dnsmasq d'utiliser resolv.conf depuis NM:
$ cat /etc/dnsmasq.d/nmresolv.conf
resolv-file=/var/run/NetworkManager/resolv.conf
et redémarrez-le:
$ sudo systemctl restart dnsmasq
Utilisez dnsmasq pour résoudre:
$ cat /etc/resolv.conf
# Use local dnsmasq for resolving
nameserver 127.0.0.1