nameserver 127.0.1.1 dans resolv.conf ne disparaîtra pas!

53

J'ai lu que je devrais avoir nameserver 127.0.1.1 dans mon fichier /etc/resolv.conf seulement si ma machine possède 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 être sûr).

Pourtant, lorsque j'ouvre le fichier /etc/resolv.conf , il est écrit: 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 modifie, le sudo resolvconf -u le ramènera à 127.0.1.1 ! D'où vient cette adresse?

    
posée Mehran 25.05.2015 - 08:38
la source

3 réponses

91

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 pour servir de serveur de noms de transfert local. Cette instance de 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 qu’il ne démarre pas une instance de Dnsmasq et ne pas insérer cette adresse. En /etc/NetworkManager/NetworkManager.conf commente 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 du serveur de noms que NetworkManager possède pour les connexions actives.

Si vous souhaitez désactiver le mécanisme resolvconf pour mettre à jour resolv.conf et utiliser simplement un fichier resolv.conf statique, 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
    
réponse donnée 2707974 25.05.2015 - 08:51
la source
11

Il est possible que resolvconf soit mal configuré. Cela est particulièrement probable si vous jouez avec ses fichiers de configuration sans vraiment comprendre comment fonctionnent resolvconf et NetworkManager.

Pour des informations générales, veuillez lire la documentation de resolvconf et l’article de Stéphane Graber.

lien

Tout d’abord, sachez que Ubuntu Desktop et Ubuntu Server ont tous deux installé et activé resolvconf par défaut. 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 qu'Ubuntu Desktop a par défaut installé et activé NetworkManager. 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 sur 127.0.1.1. Lorsque NetworkManager démarre l'instance dnsmasq, il dit à resolvconf d'insérer l'adresse 127.0.1.1 dans resolv.conf. Comme mentionné dans une autre réponse, si vous configurez NetworkManager pour ne pas démarrer une instance de serveur de noms de transfert locale, il ne démarrera pas un serveur de noms de transfert local et ne demandera pas à resolvconf d'insérer l'adresse 127.0.1.1 dans resolv.conf.

Cette configuration par défaut fonctionne correctement, donc à moins que votre situation ne soit particulière, vous devez restaurer la configuration par défaut.

Pour restaurer la configuration par défaut, voir à ce que

  • /etc/resolvconf/resolv.conf.d/head ne contient que le texte de l’en-tête resolvconf composé de 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 raisonnable de désactiver le serveur de noms de transfert local contrôlé par NetworkManager en mettant en commentaire la ligne dns=dnsmasq .

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

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

sudo reboot
    
réponse donnée jdthood 26.05.2015 - 09:52
la source
1

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
    
réponse donnée Valery Markov 12.04.2018 - 07:24
la source

Lire d'autres questions sur les étiquettes