78 votes

DNS set to systemd's 127.0.0.53 - how to change permanently? DNS défini sur 127.0.0.53 de systemd - comment changer de manière permanente ?

J'ai récemment mis à jour vers 17.10. Lorsque j'essaie d'accéder à un site Web ou de faire un ping sur un domaine, cela échoue en disant que le site ne peut pas être résolu.

network-admin montre que le contenu de /etc/resolv.conf est nameserver: 127.0.0.53

Si je change cela pour 8.8.8.8 ou 208.67.222.222 alors tout fonctionne. Jusqu'à ce que je redémarre.

Après un redémarrage ou une reprise, le serveur de noms est réinitialisé à 127.0.0.53.

Comment puis-je définir de manière permanente le serveur de noms sur quelque chose qui fonctionne?


Pour les fans de systemd, si je lance systemd-resolve --status, j'obtiens

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Si je suis les conseils de cette question - DNS keeps resetting after reboot. Ubuntu 17.10 - le DNS continue de ne pas se résoudre.

52voto

oscar1919 Points 1557

Vous pouvez installer un paquet resolvconf, qui modifiera la façon dont /etc/resolv.conf est construit au démarrage du système.

sudo apt install resolvconf

Vous pouvez ensuite créer ou modifier un fichier /etc/resolvconf/resolv.conf.d/tail. Si vous ajoutez dans ce fichier une ligne nameserver 8.8.8.8, cette ligne sera ajoutée à la fin de /run/resolvconf/resolv.conf au démarrage. /etc/resolv.conf sera maintenant un lien symbolique vers ce fichier.

Post Scriptum:

Presque deux ans après avoir posté ma réponse, j'ai découvert https://bugs.launchpad.net/ubuntu/+source/ppp/+bug/1778946 qui explique exactement pourquoi installer simplement resolvconf a résolu un problème DNS que j'avais à l'époque. Je me sens obligé de le partager ici.

Bien que ma réponse aborde la question de manière adéquate, en effet, un avertissement devrait être ajouté que, si vous voulez/devez le faire, probablement quelque chose d'autre ne va pas. Ceci a déjà été mentionné par @intelfx à l'époque, 127.0.0.53 devrait fonctionner par lui-même.

Selon ce rapport de bug, après qu'une VPN pptp est déconnectée, resolv.conf est restauré avec des droits d'accès incorrects. ping ubuntu.com ne fonctionne pas, sudo ping ubuntu.com oui. Installer resolvconf l'a résolu, car il prend en charge resolv.conf, le restaurant avec les droits corrects. Changer les paramètres de systemd-resolve n'est pas une solution dans ce cas, puisque le bug se situe dans ppp. Mais une alternative, peut-être plus simple, est sudo chmod a+r /etc/resolv.conf après la déconnexion de la VPN. Et cela peut être automatisé en plaçant un script exécutable dans /etc/NetworkManager/dispatcher.d avec le contenu suivant :

#!/bin/sh
if [[ "$1"="ppp0" && "$2"="vpn-down" ]]; then  
    /bin/chmod a+r /etc/resolv.conf
fi

Dans tous les cas, le contenu de resolv.conf ne change pas. Et, oui, je sais qu'il faut éviter pptp en raison de problèmes de sécurité, mais à l'époque, je le voyais comme un bon exercice pour un débutant ubuntu. J'imaginais que cela fonctionnerait dès le départ. Je ne savais pas que cela me donnerait mal à la tête, comme si bien diagnostiqué par @intelfx.

39voto

goroncy Points 344

La bonne solution serait de corriger systemd-resolved au lieu d'essayer de soigner une migraine avec une guillotine.

C'est un outil très pratique, vraiment, s'il est utilisé correctement.

À en juger par votre sortie systemd-resolve --status...

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

...votre outil de gestion réseau ne communique pas la configuration DNS par interface à systemd-resolved.

Les versions récentes de NetworkManager détecteront si /etc/resolv.conf est un lien symbolique vers un fichier généré par resolved (/run/systemd/resolve/*.conf ou /usr/lib/systemd/resolv.conf) et dans ce cas, communiqueront directement avec resolved.

Alternativement, les versions récentes de systemd-resolved cherchent à être compatibles avec l'interface resolvconf historique en installant un binaire resolvconf qui fait les choses correctes.

Alors que l'une de ces deux solutions serait préférable, si vous cherchez une solution rapide et sale, vous pouvez simplement configurer systemd-resolved pour utiliser vos serveurs DNS globalement :

$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>

Ensuite, redémarrez le service systemd-resolved.service ou redémarrez.

13voto

michel Points 2620

Travailler dans le paradigme systemd pour ajouter un DNS à un lien / appareil

en utilisant ubuntu 17.10+ ajouter un fichier *.network :

sudo nano /lib/systemd/network/100-somecustom.network:

100-somecustom.network ( 100 peut être n'importe quel numéro de priorité, et cela nécessite l'extension de fichier .network ):

[Match]
Name=wlo1 # le nom de l'appareil ici

[Network] # ajouter plusieurs DNS 
DNS=8.8.8.8
DNS=208.67.222.222

Puis redémarrez:

sudo service systemd-networkd restart

Regardez aussi:

netplan apply

Puis vérifiez:

systemd-resolve --status wlo1

De la page d'information info systemd.network :

En plus de /etc/systemd/network, les répertoires ".d" ajoutés peuvent être placés dans les répertoires /lib/systemd/network ou /run/systemd/network. Les fichiers ajoutés dans /etc ont la priorité sur ceux dans /run qui à leur tour ont la priorité sur ceux dans /lib. Les fichiers ajoutés sous l'un de ces répertoires ont la priorité sur le fichier netdev principal où qu'il se trouve. (Bien sûr, puisque /run est temporaire et /usr/lib est pour les vendeurs, il est peu probable que des ajouts devraient être utilisés à l'un de ces emplacements.)

Une autre approche désactive le DNSStubListener pour l'utilisation avec dnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

lié:

10voto

J'utilise Lubuntu & Kubuntu 18.04. J'ai pu résoudre le problème de DNS en 2 étapes:

Première étape: Installer unbound et le configurer pour remplacer systemd-resolved comme le montre Grégoire C ici.

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound

redémarrer

Ouvrir en tant que root le fichier /etc/NetworkManager/NetworkManager.conf

(sudo leafpad /etc/NetworkManager/NetworkManager.conf dans Lubuntu 18.04 ou dans Kubuntu 18.04 SUDO_EDITOR=kate sudoedit /etc/NetworkManager/NetworkManager.conf)

et en dessous de [main] ajouter cette ligne:

dns=unbound

redémarrer à nouveau

Deuxième étape: Si après le redémarrage le problème n'est toujours pas résolu, comme cela a été le cas pour moi, démarrer le gestionnaire de fichiers en tant que root, aller dans /etc, supprimer resolv.conf et créer un nouveau resolv.conf. Laissez-le vide et redémarrez le système d'exploitation. Dans mon cas, après ce redémarrage, le problème a disparu.

Dans Kubuntu 18.04, vous ne pouvez pas démarrer Dolphin en tant que root, vous pouvez donc d'abord aller dans /etc et ouvrir le terminal à partir de là, puis tapez sudo su et appuyez sur Entrée pour l'utiliser en tant que root, puis supprimez resolv.conf avec la commande rm resolv.conf. Ensuite, vous pouvez créer un nouveau fichier vide sur votre bureau, nommé resolv.conf et ouvrir un terminal à partir de là. Utilisez la commande sudo su pour entrer en mode root pour le terminal, puis copiez le nouveau resolv.conf de votre bureau vers /etc avec la commande cp resolv.conf /etc.

Je dois ajouter que je n'ai pas essayé de faire la deuxième étape avant d'installer unbound, donc la prochaine fois je le ferai, juste pour voir si cela sera suffisant ou non.

5voto

user730458 Points 41

Je suis Ubuntu 18.04 LTS. Je ne sais pas comment mon OS est arrivé à ce problème soudainement alors que mon DNS fonctionnait bien depuis des mois. Voici ma solution:

Installer resolvconf

$ sudo apt install resolvconf

Trouver la source de /etc/resolv.conf.

$ ls -al /etc/resolv.conf montre que /etc/resolv.conf est un lien symbolique de /run/resolvconf/resolv.conf

Et j'ai découvert que: Ce fichier /run/resolvconf/resolv.conf est composé de:

/etc/resolvconf/resolv.conf.d/head
/run/resolvconf/interface/systemd-resolved
/etc/resolvconf/resolv.conf.d/tail

$ cat /run/resolvconf/interface/systemd-resolved montre nameserver 127.0.0.53, qui serait réinitialisé après le redémarrage.

Ajouter un DNS

Il semble que nameserver doit être devant nameserver 127.0.0.53 pour que cela fonctionne.

Alors j'ajoute nameserver à la fin de /etc/resolvconf/resolv.conf.d/head.

Mettre à jour resolvconf

$ sudo resolvconf -u

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X