63 votes

Le serveur de noms 127.0.1.1 dans resolv.conf ne disparaît pas !

J'ai lu que j'aurais dû nameserver 127.0.1.1 dans mon /etc/resolv.conf seulement si ma machine possède son propre serveur DNS. Comme ce n'est pas le cas, sa présence pose des problèmes. Mais quoi que je fasse, je n'arrive pas à m'en débarrasser !

Voici les choses que j'ai faites jusqu'à présent :

  1. Ajout de nameserver 192.168.1.3 a /etc/resolvconf/resolv.conf.d/base fichier. (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, quand j'ouvre le /etc/resolv.conf le dossier dit : nameserver 127.0.1.1 ! Quelqu'un a-t-il une idée de ce qui ne va pas ?

Veuillez noter que c'est en fait 127.0.1.1 ! Et je n'ai aucune idée de pourquoi ce n'est pas 127.0.0.1 !

Même lorsque je mets à jour le /etc/resolv.conf manuellement et le changer en quelque chose d'autre, le sudo resolvconf -u le ramènera à 127.0.1.1 ! D'où vient cette adresse ?

106voto

2707974 Points 9957

NetworkManager est le programme qui (via l'utilitaire resolvconf) insère l'adresse 127.0.1.1 en resolv.conf . NM insère cette adresse si et seulement si elle est configurée pour lancer une instance du programme dnsmasq pour servir de serveur de noms de redirection local. Cette instance de dnsmasq écoute les requêtes à l'adresse 127.0.1.1.

Si vous ne voulez pas utiliser un serveur de noms de redirection local, configurez NetworkManager pour qu'il ne démarre pas d'instance dnsmasq et n'insère pas cette adresse. Dans /etc/NetworkManager/NetworkManager.conf mettre en commentaire 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 des serveurs de noms que NetworkManager a pour les connexions actives.

Si vous souhaitez désactiver le mécanisme resolvconf de mise à jour de resolv.conf et utiliser 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

11voto

jdthood Points 11817

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 des informations générales, veuillez lire la documentation de resolvconf et l'article de blog de Stéphane Graber.

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

Tout d'abord, vous devez savoir que resolvconf est installé et activé par défaut sur Ubuntu Desktop et Ubuntu Server. Resolvconf fournit un cadre pour mettre à jour dynamiquement le fichier /etc/resolv.conf de manière ordonnée et réversible.

Ensuite, vous devez savoir que NetworkManager est installé et activé par défaut sur le bureau Ubuntu. Par défaut, NetworkManager démarre une instance de dnsmasq pour servir de serveur de noms de redirection local. Cette instance de dnsmasq contrôlée par NetworkManager écoute les requêtes à 127.0.1.1. Lorsque NetworkManager démarre l'instance dnsmasq, il demande à 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 redirection locale, il ne démarrera pas de serveur de noms de redirection locale et ne dira 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 devriez restaurer la configuration par défaut.

Pour rétablir la configuration par défaut, veillez à ce que

  • /etc/resolvconf/resolv.conf.d/head ne contient que le texte de l'en-tête de 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 un 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 originale de NetworkManager est d'avoir

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

dans /etc/NetworkManager/NetworkManager.conf. Il est raisonnable de désactiver le serveur de noms de redirection local contrôlé par NetworkManager en commentant l'élément dns=dnsmasq ligne.

[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 périmés.

sudo reboot

1voto

Profet Points 388

Dans mon cas, il n'y avait pas dns=dnsmasq ligne dans /etc/NetworkManager/NetworkManager.conf et /etc/resolv.conf a toujours été écrasé par Network Manager pour avoir seulement nameserver 127.0.1.1

La solution consistait à restaurer un lien symbolique pour une mise à jour correcte :

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf

0voto

Curious Sam Points 131

Ubuntu 16.04 + Ubuntu 18.04 Server - Configurer /etc/resolv.conf pour qu'il persiste après un redémarrage

Sur un serveur Ubuntu 16.04, il n'y a pas d'accès à l'Internet. /etc/NetworkManager/NetworkManager.conf fichier.

L'exécution de la commande suivante vous montrera que l'option /etc/resolv.conf est lié au fichier /run/resolvconf/resolv.conf fichier :

sudo ls -la /etc/resolv.conf

nameserver 127.0.1.1 in resolv.conf won't go away

Supprimez ce fichier et régénérez-le :

sudo rm -f /etc/resolv.conf
sudo echo '#== My Static /etc/resolv.conf File
#== ===============================
nameserver 8.8.8.8
nameserver 8.8.4.4' > /etc/resolv.conf

nameserver 127.0.1.1 in resolv.conf won't go away

Maintenant vous verrez que le lien n'est plus là et que votre statique /etc/resolv.conf est présent.

sudo ls -la /etc/resolv.conf

nameserver 127.0.1.1 in resolv.conf won't go away

Maintenant, il faut configurer resolvconf pour qu'il ne régénère pas le fichier par défaut. /etc/resolv.conf pour que votre fichier statique persiste après le redémarrage, exécutez la commande suivante :

sudo dpkg-reconfigure resolvconf

Sur le premier écran, appuyez sur votre bouton de tabulation pour sélectionner NO

configure resolv.conf to persist after reboot

Sur le deuxième écran, appuyez sur votre touche de tabulation pour sélectionner OK et appuyez sur Entrée.

configure /etc/resolv.conf to persist after reboot

Votre /etc/resolv.conf persistera après le redémarrage de votre serveur.

Serveur Ubuntu 18.04

Si vous ajoutez des ips à votre /etc/netplan/50-cloud-init.yaml il est plus que probable que vous devrez appliquer vos nouveaux paramètres avec le fichier netplan apply o netplan --debug apply . Ce faisant, vous recréerez le /etc/resolve.conf lien vers ../run/resolvconf/resolv.conf . Si cela se produit, il suffit de rm -f /etc/resolv.conf et le recréer comme indiqué ci-dessus.

Maintenant, vous devez chattr le fichier comme suit :
chattr +i /etc/resolv.conf

Votre /etc/resolv.conf persistera après le redémarrage de votre serveur.

Si vous devez modifier le fichier, n'oubliez pas d'inverser l'option chattr comme ça :
chattr -i /etc/resolv.conf

Vous pouvez maintenant modifier le /etc/resolve.cfg

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