Le serveur de noms 127.0.1.1 dans resolv.conf ne partira pas!

60

J'ai lu que je ne devrais avoir nameserver 127.0.1.1dans mon /etc/resolv.conffichier que si ma machine a son propre serveur DNS. Comme ce n'est pas le cas, cela pose des problèmes. Mais peu importe ce que je fais, je ne peux pas m'en débarrasser!

Voici ce que j'ai fait jusqu'à présent:

  1. Ajout nameserver 192.168.1.3au /etc/resolvconf/resolv.conf.d/basefichier. (192.168.1.3 est le DNS de notre réseau).
  2. Exécution: sudo resolvconf --enable-updates.
  3. Exécution: sudo resolvconf -u.
  4. Courir: sudo service network-manager restart(juste pour être sûr).

Pourtant, quand j'ouvre le /etc/resolv.conffichier, il dit nameserver 127.0.1.1:! Est-ce que quelqu'un a une idée de ce qui ne va pas?

S'il vous plaît noter que c'est en fait 127.0.1.1! Et je ne sais pas pourquoi ce n'est pas le cas 127.0.0.1!

Même lorsque je mets à jour /etc/resolv.confmanuellement le fichier et que je le change en autre chose, le sudo resolvconf -uretourne à 127.0.1.1! D'où vient cette adresse?

Mehran
la source

Réponses:

100

NetworkManager est le programme qui (via l'utilitaire resolvconf) insère l' adresse 127.0.1.1dans resolv.conf. NM insère cette adresse uniquement si elle est configurée pour démarrer une instance du programme Dnsmasq afin de servir de serveur de noms de transfert local. Cette instance dnsmasq écoute les requêtes à l'adresse 127.0.1.1.

Si vous ne souhaitez pas utiliser un serveur de noms de transfert local, configurez NetworkManager pour ne pas démarrer une instance de Dnsmasq et pour ne pas insérer cette adresse. En /etc/NetworkManager/NetworkManager.confcommenter la lignedns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

et redémarrez le service NetworkManager.

sudo service network-manager restart

Dans ce mode, NetworkManager met à jour /etc/resolv.conf(toujours via resolvconf) pour inclure les adresses de serveur de noms que NetworkManager a pour les connexions actives.

Si vous souhaitez désactiver le mécanisme resolvconf pour la mise à jour de resolv.conf et utiliser simplement un fichier statique resolv.conf, procédez comme suit.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8
2707974
la source
J'ai 3 DNS et la requête n'atteint jamais le 3ème si je désactive Dnsmasq, une astuce? Je veux interroger Google, puis interroger le DNS intranet. Merci
JorgeeFG
3
restart network-managerne fonctionne pas sur Xenial car il utilise systemd au lieu de upstart. essayersystemctl restart network-manager
Matthias Weiler
Ma question est le programme de Dnsmasq demandera quel serveur de DNS? ça va demander au serveur DNS du DHCP pour la requête d'adresse IP hôte?
Horloge ZHONG
11

Il est possible que resolvconf soit mal configuré. Cela est particulièrement probable si vous avez joué avec ses fichiers de configuration sans vraiment comprendre le fonctionnement de resolvconf et de NetworkManager.

Pour plus d'informations, veuillez consulter la documentation de resolvconf et le blog de Stéphane Graber.

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

Tout d’abord, vous devez savoir que le serveur resolvconf est installé et activé à la fois sur Ubuntu Desktop et Ubuntu Server. Resolvconf fournit un cadre pour la mise à jour dynamique du fichier /etc/resolv.conf de manière ordonnée et réversible.

Deuxièmement, vous devez savoir que par défaut, Ubuntu Desktop a NetworkManager installé et activé. Par défaut, NetworkManager démarre une instance de Dnsmasq pour servir de serveur de noms de transfert local. Cette instance de Dnsmasq contrôlée par NetworkManager écoute les requêtes de 127.0.1.1. Lorsque NetworkManager démarre l'instance dnsmasq, il demande à resolvconf d'insérer l'adresse 127.0.1.1dans resolv.conf. Comme indiqué dans une autre réponse, si vous configurez NetworkManager pour qu'il ne démarre pas d'instance de serveur de noms de transfert local, il ne démarrera pas de serveur de noms de transfert local et n'indiquera pas à resolvconf d'insérer l'adresse 127.0.1.1dans resolv.conf.

Cette configuration par défaut fonctionne correctement. Par conséquent, sauf si votre situation est particulière, vous devez restaurer la configuration par défaut.

Pour restaurer la configuration par défaut, assurez-vous que

  • /etc/resolvconf/resolv.conf.d/head contient uniquement le texte de l'en-tête resolvconf consistant en deux lignes commençant par un #caractère.
  • /etc/resolvconf/resolv.conf.d/base est un fichier vide
  • /etc/resolvconf/resolv.conf.d/tail est un fichier vide
  • /etc/resolv.conf est un lien symbolique avec le contenu ../run/resolvconf/resolv.conf

Pour ce faire, exécutez les commandes suivantes.

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN' > head
rm -f base tail original
:> base
:> tail

La configuration d'origine de NetworkManager est d'avoir

[main]
...
dns=dnsmasq
...

dans /etc/NetworkManager/NetworkManager.conf. Il est judicieux de désactiver le serveur de noms de transfert local contrôlé par NetworkManager en commentant la dns=dnsmasqligne.

[main]
...
#dns=dnsmasq
...

Après avoir fait tout cela, il est conseillé de redémarrer la machine pour effacer les enregistrements d’informations obsolètes du serveur de noms.

sudo reboot
jdthood
la source
1

Dans mon cas, il n’y avait pas de dns=dnsmasqligne dans le /etc/NetworkManager/NetworkManager.conffichier et /etc/resolv.confétait toujours écrasé par Network Manager pour n’avoir quenameserver 127.0.1.1

Le correctif consistait à restaurer un lien symbolique pour une mise à jour correcte:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
Valery Markov
la source