web-dev-qa-db-fra.com

Les recherches DNS résolues par le système Ubuntu 17.04 échouent de manière aléatoire

Je suis passé à Ubuntu 17.04 et il semble qu’il existe maintenant un nouveau mécanisme de résolution DNS introduit pour la première fois dans Ubuntu 16.10.

Je reçois maintenant des erreurs de recherche DNS dans 50% des cas.Tous les deuxL'appel à nslookup échoue. La moitié des appels sont résolus avec précision et l'autre moitié donne ceci:

watch -n 1 nslookup google.com

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL

D'après ce que j'ai compris, cette adresse IP du serveur DNS est maintenant utilisée pour représenter la résolution de systemd, qui effectue une sorte de méta-recherche pour éviter les requêtes DNS plus lentes (ou quelque chose du genre ...). Je constate exactement le même comportement sur deux ordinateurs que j'ai mis à niveau vers 17.04 la semaine dernière.

Avez-vous une idée du problème et de la manière correcte de le résoudre?

Les choses fonctionnaient bien avant la mise à niveau (à partir de 16.04 ou 16.10, je ne me souviens plus lequel, désolé). Je pensais que 17.04 était une version LTS, mais maintenant je vois que j'ai sauté le pistolet et il ne sera pas considéré comme stable avant avril. Alors ... me voilà.

À noter également que les navigateurs ne semblent pas présenter de problèmes, mais que nslookup, ping, git, etc.

36
moodboom

Ubuntu 17.04 ne peut pas résoudre les serveurs DNS avec prise en charge de DNSSEC à partir du 18/04/2017. Désactivez DNSSEC avec ce démon:

Sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | Sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf

Vous pouvez éventuellement reconfigurer resolvconf si vous vous êtes planté (dites oui à "préparer /etc/resolve.conf pour les mises à jour dynamiques?"):

Sudo dpkg-reconfigure resolvconf

Redémarrez systemd résolu:

Sudo systemctl restart systemd-resolved

Votre DNS devrait commencer à fonctionner. Vous pouvez vérifier en essayant systemd-resolve www.google.com et en voyant une réponse.

44
Sajad Bahmani

J'ai alterné entre la gestion manuelle de /etc/resolv.conf, résolue par systemd, et je n'ai pas encore trouvé le mécanisme de résolution DNS systemd stable.

Il y a apparemment au moins un bogue libnss dans Ubuntu 16.10 et apparemment toujours dans 17.04. De nombreuses personnes ont des problèmes de DNS depuis qu'Ubuntu 16.10 a activé la résolution de systemd, ici est une analyse et ici est la solution de contournement d'une autre personne. Aucun d’entre eux n’a fonctionné pour moi jusqu’à ce que j’ai écrasé /etc/resolv.conf manuellement avec les serveurs DNS de Google.

nameserver 8.8.8.8   << or another if you don't trust google
nameserver 8.8.4.4

Ceci est un solution parfaitement valide }, si vous n'avez pas besoin d'une configuration DNS dynamique. Assurez-vous simplement d'arrêter et de désactiver systemd-resolu:

Sudo systemctl disable systemd-resolved.service
Sudo service systemd-resolved stop
12
moodboom

Ubuntu 17.04 et d'autres distributions englobent systemd, qui inclut la résolution systemd, ce qui soumet les utilisateurs à une résolution DNS plutôt lourde.

  • Comme indiqué dans la réponse de SjB, la prise en charge de DNSSEC peut entraîner des problèmes.
  • systemd-resolu pings tous les résolveurs DNS afin qu'il puisse utiliser le plus rapide. Cela peut causer des problèmes avec les VPN, etc. dans des environnements plus complexes.
  • Les certificats de serveur DNS sont vérifiés. Des erreurs se sont produites si mon horloge était faussée.

Je ne pense pas que ce soit nécessairement un mauvais changement, c'est juste BEAUCOUP de changement. Je vais essayer de mettre à jour et d'élargir cette réponse à mesure que j'en apprends davantage.

4
moodboom

En termes simples, vous devez simplement avoir la ligne "DNSSEC = no" dans la section [Résoudre] de /etc/systemd/resolved.conf.

https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1682499/

3
John Ball

ajoutez simplement le serveur de noms /etc/systemd/resolved.conf DNS = 194.109.xxx.xxx (sur votre routeur, serveur de noms externe)

systemctl redémarrer systemd-résolu

pas besoin de changer Rand de 3 à 2, pas besoin de changer le réglage de DNSSEC sur off

1
henk