DNS défini sur 127.0.0.53 de systemd - comment changer définitivement?

38

J'ai récemment mis à niveau vers 17.10. Lorsque j'essaie de naviguer sur un site Web ou d'envoyer une requête ping à un domaine, il échoue en disant que le site ne peut pas être résolu.

network-adminmontre le contenu /etc/resolv.confd'êtrenameserver: 127.0.0.53

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

Au redémarrage ou à la reprise, le serveur de noms est réinitialisé à 127.0.0.53.

Comment définir définitivement le serveur de noms sur quelque chose qui fonctionne?


Pour les fans de systemd, si je cours, systemd-resolve --statusje reçois

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

Si je suis le conseil de cette question - DNS continue de se réinitialiser après le redémarrage. Ubuntu 17.10 - DNS ne parvient toujours pas à résoudre.

Terence Eden
la source
systemctl stop systemd-resolvedet systemctl mask systemd-resolveddevrait faire l'affaire :)
Shayan

Réponses:

28

Vous pouvez installer un package resolvconf, qui modifiera la façon dont /etc/resolv.confest 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 mettez dans ce fichier une ligne nameserver 8.8.8.8, cette ligne sera ajoutée à la fin du /run/resolvconf/resolv.confdémarrage. /etc/resolv.confsera désormais un lien symbolique vers ce fichier.

oscar1919
la source
4
Cela fonctionne - merci! Savez-vous s'il existe un moyen de faire fonctionner 127.0.0.53 par lui-même?
Terence Eden
1
Je suis relativement nouveau dans cette affaire. J'ai juste essayé de me débarrasser des problèmes DNS lors de l'activation / désactivation de VPN au cours des dernières semaines. Tu pourrais essayer sudo dpkg-reconfigure resolvconf. J'ai essayé récemment, effacé le fichier de queue, et au début, cela semble fonctionner.
oscar1919
@TerenceEden si vous cherchez à faire fonctionner 127.0.0.53 par lui-même (comme il se doit), jetez un œil à ma réponse: askubuntu.com/a/1083843/281191
intelfx
10

La bonne solution serait de résoudre les problèmes résolus par le système au lieu d'essayer de guérir la migraine avec une guillotine.

C'est un bel outil, vraiment, s'il est utilisé correctement.

A en juger par votre systemd-resolve --statussortie ...

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

... votre outil de gestionnaire de réseau ne transmet pas la configuration DNS par interface à la résolution de systemd.

Les versions récentes de NetworkManager, par exemple, le feraient automatiquement si /etc/resolv.confun lien symbolique pointait vers l'intérieur /run/systemd/resolveou vers /usr/lib/systemd/resolv.conf. Alternativement, les versions récentes de systemd-resolue essaient d'être compatibles avec l'interface resolvconf historique en installant un resolvconfbinaire qui parle à systemd-resolu.

Bien que l'utilisation de l'une de ces deux solutions soit préférable, si vous recherchez une solution rapide et sale, vous pouvez simplement configurer systemd-resolution pour utiliser vos serveurs DNS à l'échelle mondiale:

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

Redémarrez systemd-resolved.serviceou redémarrez ensuite.

intelfx
la source
Au moins pour moi, cette réponse ne fonctionne pas, en utilisant ubuntu 18.04, après avoir modifié l'entrée "DNS", elle reste usint le 127.0.0.53
André M. Faria
1
@ AndréM.Faria apprenez comment fonctionne la résolution. 127.0.0.53est l'adresse du résolveur de stub de mise en cache local. Il transmet les requêtes DNS aux serveurs DNS en amont que vous spécifiez.
intelfx
Parfois, vous savez quelque chose et l'ignorez, oui vous avez raison.
André M. Faria
1
Il est également bon de noter ici que, par défaut, systemd-resolvedmet en cache les réponses DNS. Bien que cela puisse être utile parfois, cela peut entraîner des problèmes dans certaines situations. Décommentez la cache=yesligne du fichier de configuration dans la réponse et définissez-la sur no.
Quentin Skousen
qu'est-ce qui fait que /etc/resolve.conf(ou vraiment, /run/resolvconf/resolv.confce que le premier pointe) est mis à jour? serait bien de savoir pour les tests, sans un redémarrage présumé étant nécessaire. tout ce que je peux dire, c'est que le redémarrage systemd-resolved.servicene semblait pas faire l'affaire
bbarker
8

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

Première étape: installez-le unboundet configurez-le pour le remplacer systemd-resolvedcomme 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

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

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

et ci-dessous [main]mettre 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 c'était le cas dans mon cas, démarrez le gestionnaire de fichiers en tant que root, accédez à /etc, supprimez resolv.confet créez 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 commencer par /etcouvrir et ouvrir le terminal à partir de là, puis taper sudo suet appuyer sur Entrée pour l'utiliser en tant que root, puis supprimer resolv.confavec la commande rm resolv.conf. Ensuite, vous pouvez créer un nouveau fichier vide sur votre bureau, le nommer resolv.confet ouvrir un terminal à partir de là. Utilisez la sudo sucommande pour entrer en mode racine pour le terminal, puis copiez le nouveau resolv.confdepuis votre bureau vers /etcavec la commande cp resolv.conf /etc.

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

Калоян Грънчаров
la source
Pourquoi ne pas simplement le modifier en tant que root et supprimer le contenu?
Ballie
@Ballie J'ai essayé cela au début, mais cela n'a pas aidé. L'original resolv.confde a également /etcété montré comme une sorte de raccourci, ce qui n'est pas normal, je pense. C'est pourquoi j'ai décidé de le supprimer et de le recréer en créant un nouveau fichier vide et en le nommant resolv.conf. Et ça a marché. Pour cette raison, j'ai écrit ci-dessus que la prochaine fois que je devrai réinstaller le système d'exploitation, j'essaierai de le faire d'abord, sans faire la "première étape" - pour voir si ce serait suffisant. Mais l'original resolv.confen a /etcbesoin d'être supprimés et recréés de toute façon - à ce sujet , je suis sûr.
Калоян Грънчаров
Je viens de désactiver systemd-resolution.service et de supprimer le lien de resolv.conf et d'en créer un manuellement, et cela a fonctionné!
André M. Faria
8

travailler dans le systemdparadigme ajouter un DNS à un lien / appareil

en utilisant ubuntu 17.10+, ajoutez un *.networkfichier:

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

100-somecustom.network (100 peut être n'importe quel nombre pour la priorité, et il nécessite l' .networkextension de fichier):

[Match]
Name=wlo1 # the device name here

[Network] # add multiple DNS 
DNS=8.8.8.8
DNS=208.67.222.222

Redémarrez ensuite:

sudo service systemd-networkd restart

Regardez également:

netplan apply

Puis vérifier:

systemd-resolve --status wlo1

Depuis la page d'informations info systemd.network:

De plus /etc/systemd/network, les répertoires ".d" peuvent être placés dans les répertoires / lib / systemd / network ou / run / systemd / network . Les fichiers de dépôt dans / etc ont priorité sur ceux dans / run qui à leur tour ont priorité sur ceux dans / lib. Les fichiers déposés sous l'un de ces répertoires ont priorité sur le fichier netdev principal où qu'il se trouve. (Bien sûr, puisque / run est temporaire et / usr / lib est pour les fournisseurs, il est peu probable que des drop-ins soient utilisés dans l'un ou l'autre de ces endroits.)

Une autre approche désactive l' DNSStubListenerutilisation pour dnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

en relation:

jmunsch
la source
Il est étrange que vous ayez déclaré que DNSStubListener = false, mais la configuration réelle commentée est DNSStubListener = yes, généralement l'inverse de la valeur "yes" est "no" et non "false" qui en cas de "false" était généralement " vrai".
André M. Faria
Votre réponse pour créer un fichier avec l'extension .network n'a pas fonctionné.
André M. Faria
2

C'est ainsi que je modifie mon enregistrement DNS sur la configuration de l'interface.

$ vi /etc/netplan/50-cloud-init.yaml

Changer les adresses des serveurs de noms, auparavant c'était .4 puis je l'ai changé en .3:

...
            nameservers:
                addresses:
                - 192.168.1.3
...

Enregistrez la configuration, puis appliquez la configuration:

$ sudo netplan apply

Après cela, redémarrez le service resolvectl.

$ sudo systemctl restart systemd-resolved.service

Pour les notes: j'ai redémarré le serveur et les modifications que j'ai apportées sont toujours intactes. J'utilise la resolvctl dnscommande pour vérifier l'enregistrement DNS.

kapten
la source
C'est en fait la bonne réponse. Je suis surpris que ce ne soit pas celui qui est accepté.
Toumal
0

Eu quelques problèmes avec NordVPN, j'ai donc décidé d'ajouter à cela.

Résultats:
NordVPN définit les /run/systemd/resolve/resolv.confparamètres DNS lors de la connexion.
NordVPN supprime tous les paramètres DNS /run/systemd/resolve/resolv.conflors de la déconnexion.
Cela empêche le serveur DNS de fonctionner (car il n'y en a pas un seul).

Le système a besoin d'un redémarrage pour le réinitialiser. Un redémarrage standard du service ( sudo systemctl restart systemd-resolved.service) ne fonctionne pas.

La solution pour contourner ce problème:

sudo apt install resolvconf

Rendez-vous sur /etc/resolvconf/resolv.conf.d/

cd /etc/resolvconf/resolv.conf.d/
sudo nano tail

Ajouter des serveurs de noms

nameserver 1.1.1.1
nameserver 1.0.0.1

Vérifiez les emplacements suivants pour les serveurs de noms qui auraient pu être définis:

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

Testez les serveurs DNS utilisés avec:

nslookup google.com

Server:         1.1.1.1
Address:        1.1.1.1#53
Eirik Rimehaug
la source
0

Peut-être un peu tard, mais j'ai rencontré ce problème. Je dois admettre que j'ai configuré manuellement mes paramètres réseau via cli auparavant et non via le gestionnaire de réseau intégré. Je lance Ubuntu 18.04.

Donc, après avoir désactivé puis réactivé systemd.resolved.service, ce comportement erratique de perte aléatoire de ma configuration DNS a été résolu pour moi.

systemctl disable systemd.resolved.service
reboot

après le redémarrage:

systemctl enable systemd.resolved.service
reboot

Je suis un utilisateur Linux relativement récent, donc il doit y avoir quelqu'un qui peut expliquer comment et pourquoi cela aurait fonctionné pour moi, mais il semblait utile de mentionner si cela pouvait aider les autres.

Sjoerd
la source
Essayez de décevoir, mais il doit y avoir quelque chose que vous avez fait entre les deux qui a réellement résolu le problème. Les opérations que vous proposez ici ne peuvent que laisser le système tel qu'il était.
tishma
-1

Lorsque vous utilisez la résolution de noms dhcp, cela fonctionne comme prévu dans Ubuntu. Les problèmes commencent lorsque vous souhaitez devenir statique. cat /etc/resolv.confmontrera que votre DNS est 127.0.0.53 et non ceux que vous avez dans le /etc/netplan/.yamlfichier. Pour résoudre ce problème, vous devez supprimer le /etc/resolve.conflien et en créer un nouveau pointant vers/run/resolve/resolve.conf

Mikael Ljung
la source
Veuillez modifier votre réponse et corriger une mise en forme ...
Yufenyuy Veyeh Dider
-2

Cela nécessitait de jouer avec. Après avoir mis à jour le paramètre, j'ai redémarré. Utilisation:

ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

/etc/systemd/resolved.conf
DNS=8.8.8.8
Cache=no

System resolved failed
systemctl stop systemd-resolved
systemctl disable systemd-resolved

Quand commentez la "demande" de

# domain-name, domain-name-servers, domain-search, host-name,

Ajoutez cette ligne à votre /etc/dhcp/dhclient.conf:

 supersede domain-name "cwillenterprise.com";

Modifiez le fichier de configuration et ajoutez une entrée. Supplémentaire ne remplacera pas.

Ajouter des entrées à /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8
search "cwillenterprise.com"

Exécuter pour implémenter les modifications

resolvconf -u
ogkiller
la source
1
Bienvenue sur Ask Ubuntu ! Veuillez modifier votre réponse pour utiliser la mise en forme du code pour le code qui doit être entré dans les fichiers ou le terminal. Ne pas ajouter #de «commentaires» au code - cela signifie un en- tête dans Markdown. Veuillez toujours vérifier l'aperçu de votre message avant de l'envoyer.
Melebius