web-dev-qa-db-fra.com

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

J'ai lu que je ne devrais avoir nameserver 127.0.1.1 dans mon fichier /etc/resolv.conf 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 de nameserver 192.168.1.3 au fichier /etc/resolvconf/resolv.conf.d/base. (192.168.1.3 est le DNS de notre réseau).
  2. En cours d'exécution: Sudo resolvconf --enable-updates.
  3. En cours d'exécution: Sudo resolvconf -u.
  4. En cours d'exécution: Sudo service network-manager restart (juste pour en être sûr).

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

Veuillez noter qu'il s'agit en fait de 127.0.1.1! Et je ne sais pas pourquoi ce n'est pas 127.0.0.1!

Même lorsque je mets à jour le /etc/resolv.conf manuellement et que je le change en autre chose, le Sudo resolvconf -u le rétablira à 127.0.1.1! D'où vient cette adresse?

60
Mehran

NetworkManager est le programme qui (via l'utilitaire resolvconf) insère l'adresse 127.0.1.1 dans resolv.conf. NM insère cette adresse uniquement si elle est configurée pour démarrer une instance du programme Dnsmasq afin qu'elle serve 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. Dans /etc/NetworkManager/NetworkManager.conf, commentez la ligne dns=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 uniquement 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
99
2707974

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.1 dans le fichier 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.1 dans 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 ligne dns=dnsmasq.

[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
11
jdthood

Dans mon cas, il n'y avait pas de ligne dns=dnsmasq dans le fichier /etc/NetworkManager/NetworkManager.conf et /etc/resolv.conf était toujours écrasé par Network Manager pour n'avoir que nameserver 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
1
Valery Markov