resolv.conf continue d'être réinitialisé par quelque chose


29

J'ai besoin d'aide pour comprendre pourquoi je resolv.confcontinue de changer pour cela, ce qui m'empêche d'accéder à Internet extérieur et uniquement au réseau local:

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

J'ai pensé que je l'ai corrigé en me débarrassant de l'interface de bouclage et en ajoutant l'interface eth0 /etc/network/interfacesavec les instructions sur le blog posteux de jontsai .

J'ai essayé des choses comme faire:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient

Et puis les choses fonctionneraient temporairement, et finalement le serveur de noms dans resolv.conf serait à nouveau rétabli.

PS J'ai aussi posté ceci sur ubuntuforums .


Edit: il y a au moins un autre programme en plus de NetworkManager qui écrit resolv.conf, et je le sais parce que lorsque je rafraîchis NetworkManager, le resolv.conffichier qui est généré a un commentaire qui dit # Generated by NetworkManager, et la version dans laquelle il continue de changer ne le fait pas.

J'essaie donc ceci:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


Modifier 2:

Ajout de sortie de fichiers:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Aucun fichier tel que /etc/NetworkManager/NetworkManager.conf

$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false

Je soupçonne soit un bogue de Network Manager, soit plus probablement une mauvaise configuration. Quelle version d'Ubuntu utilisez-vous? Avez-vous resolvconfinstallé le package? Publiez le contenu de /etc/network/interfaces, /etc/NetworkManager/NetworkManager.confet /etc/NetworkManager/system-connections/*.
Gilles 'SO- arrête d'être méchant'

J'utilise 10.04, aucun resolvconfpackage. À un moment donné, mon modem DSL allait mal (derrière le routeur) alors que mon réseau local allait bien, alors j'ai peut-être essayé d'installer nscdou - dnsmasqils sont désinstallés maintenant, mais cela a peut-être laissé des artefacts qui interfèrent?
jontsai

D'accord, je viens de redémarrer mon ordinateur pour la première fois en 3 semaines, et je pense que le problème a disparu. o_O
jontsai

Pas sûr, mais je pense qu'il y a eu un problème avec le serveur DHCP sur vmnet1ou vmnet8(NAT et hôte uniquement)
jontsai

1
Toute cette discussion est de moindre pertinence depuis Ubuntu 12.04 qui a introduit resolvconf dans le système de base, changeant fondamentalement la façon dont resolv.conf est géré.
jdthood

Réponses:


13

Vous pouvez ajouter des éléments statiques à /etc/resolv.conf. Ces ajouts pourraient remplacer les éléments ajoutés automatiquement.

Tout d'abord, installez le resolvconfpackage.

Ensuite, appuyez sur Alt + F2 et exécutez gksudo nautilus. Ouvrez /etc/resolvconf/resolv.conf.d/headsi vous souhaitez ajouter au début du fichier; ouvrez /etc/resolvconf/resolv.conf.d/tailsi vous voulez ajouter à la fin. Apportez vos modifications, enregistrez / fermez les fichiers, puis exécutez sudo resolvconf -upour appliquer les modifications.

(Désolé, je ne me souviens pas si les paramètres au début ou à la fin du fichier ont la priorité la plus élevée.)


Mes modifications de gestionnaire de réseau seraient annulées lors de la connexion à n'importe quel VPN. Cela m'a permis de conserver 8.8.8.8 dans la liste des résolveurs quel que soit le réseau auquel je me suis connecté.
Steven P

8

J'ai eu exactement le même problème - resolv.conf serait réécrit à chaque redémarrage du serveur.

Cela a été causé par DHCP. Pour définir resolv.conf sur ce que je veux qu'il soit, j'ai modifié /etc/dhcp/dhclient.confet ajouté ce qui suit:

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

Vous pouvez en fait contrôler un peu votre fichier resolv.conf en y apportant des modifications.

J'espère que ça aide.


2
Ce serait la solution la plus propre, mais pour une raison quelconque, elle a cessé de fonctionner sur mes systèmes il y a quelques années. Depuis, je suis bloqué par la désactivation du script resolvconf ou de chattr + i /etc/resolv.conf.
Tronic

7

(Cette réponse contient des moyens d'enquêter sur ce qui se passe. Je pourrai peut-être donner une solution réelle si vous utilisez ces méthodes pour recueillir et fournir plus d'informations.)

Un déclencheur possible pour les mises à jour apparemment spontanées /etc/resolv.confest lorsque votre bail DHCP est renouvelé. Vérifiez combien de temps vous obtenez des baux DHCP (cela devrait apparaître dans les journaux système, je pense /var/log/syslog).

Vous pouvez utiliser auditd Installer auditd pour découvrir ce qui modifie le fichier. Démarrez le démon ( sudo service auditd start) et dites-lui de surveiller les modifications de ce fichier:

sudo auditctl -w /etc/resolv.conf -p w

Les journaux d'audit sont entrés /var/log/audit/audit.log. Vous verrez l'heure à laquelle le fichier a été modifié et le nom du programme qui l'a modifié.

Si le resolvconfpackage est installé, Network Manager peut marcher sur ses pieds. Essayez de désactiver toutes les interfaces réseau, puis arrêtez Network Manager ( sudo service network-manager stop), puis redémarrez-le.


1
Je pense que vous avez raison sur les versions DHCP. Vous pouvez modifier les paramètres DHCP dans le gestionnaire de réseau comme suit: Exécutez nm-connection-editordans votre terminal. Sélectionnez votre interface et appuyez sur modifier. Sous les paramètres IPv4, il devrait y avoir une méthode appelée uniquement les adresses DHCP (ou quelque chose de similaire). Si je ne me trompe pas, cela vous permettra d'obtenir des adresses IP via DHCP mais pas de serveurs de noms (vous pouvez les spécifier dans les champs ci-dessous).
Christian Skjødt

J'ai configuré mon routeur pour mapper l'adresse MAC sur des adresses IP statiques, de sorte que le bail DNS dure longtemps. La auditctlligne ne fonctionne pas pour moi et je pense que le nom du service pour Network Manager est network-manager(inclut le trait d'union). Je n'avais pas de resolvconfpaquet installé, mais j'avais des trucs dans le /etc/resolvconf/dossier, et quand je l'ai comparé à une autre machine Ubuntu, il ne l'avait pas, alors j'ai installé et désinstallé le paquet et supprimé manuellement ce dossier. /etc/resolv.confvient d'être réécrit à nouveau, donc je pense que se rendre auditctlau travail serait très utile.
jontsai

@jontsai La présence de /etc/resolvconfest normale même si vous n'avez pas le resolvconfpaquet, certains paquets y déposent des crochets, et ces crochets ne sont utilisés que s'il resolvconfest installé. J'ai corrigé la auditctlligne, au cas où le problème réapparaîtrait.
Gilles 'SO- arrête d'être méchant'

J'ai aimé l'idée de l'utilisateur auditd pour savoir ce qui modifiait le fichier, mais il semble qu'il commence après que le fichier est déjà modifié.
Peter Sankauskas du

4

Ouvrez un terminal et saisissez

sudo chattr +i /etc/resolv.conf

le + i veille à ce que le fichier ne soit pas réinitialisé au démarrage même par root.

Pour annuler ce qui précède

sudo chattr -i /etc/resolv.conf

Pour plus

man chattr

Cela n'a pas fonctionné pour moi. Le redémarrage du gestionnaire de réseau écrase toujours /etc/resolv.conf avec les serveurs de noms DHCP.
Tommy

travaillé pour moi sur une machine virtuelle Debian 9 fonctionnant à l'intérieur de GCP. Yay! Merci!
the0ther


3

Désactiver la mise à jour resolv.confpar la création d' un fichier appelé disable_make_resolv_confdans/etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

Il remplace la fonction standard par le même nom qui est responsable de l' resolv.confactualisation.


1

En retard à cela, mais je posterai mon cas car il était différent de tout ce qui précède.

Dans mon cas, /etc/resolv.confest un lien symbolique vers /var/run/NetworkManager/resolv.conf, et pour une raison quelconque, ne cat /etc/resolv.confme donne aucune erreur tel fichier ou répertoire (peut-être parce qu'il est vide?)

Si je l'ouvre avec vi et que j'ajoute, nameserver x.x.x.xcela fonctionne, mais est effacé au redémarrage.

J'ai essayé d'éditer /etc/network/interfaceset d'ajouter dns-nameservers x.x.x.x, changé /etc/dhcp/dhclient.confet supprimé sous request domain-name-servers, également édité prepend domain-name-servers x.x.x.x.

Resolvconf binary n'est pas installé, NetworkManager.confn'a rien de pertinent. Mais à chaque redémarrage de la machine, il n'y avait pas de serveur de domaine.

Je ne suis pas sûr de la raison, mais cela semble avoir à voir avec le fait qu'il s'agit d'une machine VBox, démarrée par GNS3 et à cause de cela dans le paramètre VBox, je dois le laisser sans interface créée. Apparemment, GNS3 crée une "interface UDP" à la volée lorsque je démarre la machine, à condition que je la démarre à partir de GNS3.

Donc, pour me sauver de la recherche sans fin, je viens d' ajouter echo nameserver x.x.x.x> /etc/resolv.confà /etc/profile, problème résolu (non résolu, mais CONTOURNÉS hehe). Mais il pourrait être intéressant de savoir ce qui se passe avec ce scénario si quelqu'un le rencontrait.


1

Si vous avez le fichier /etc/NetworkManager/NetworkManager.conf

cat /etc/NetworkManager/NetworkManager.conf

vous pouvez configurer NetworkManager pour arrêter la réinitialisation de resolv.conf avec

sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf

Maintenant, changez manuellement votre /etc/resolv.confet testez sa permanence avec

sudo systemctl restart NetworkManager
# sudo service network-manager restart
cat /etc/resolv.conf

Source: https://askubuntu.com/a/623956/452398


Merci, l'ajout de dns = none résout correctement le problème.
Pneus

0

Faites simplement des entrées dans vos fichiers ifcfg-ethX comme ça

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAINE = votredomaine.com

puis le gestionnaire de réseau publiera ces enregistrements dans le fichier resolv.conf après avoir redémarré les services ou redémarré votre box.


0

Juste au cas où quelqu'un tomberait dans le même cas:

J'ai oublié j'ai mis DHCP sur une interface à l'intérieur du fichier /etc/network/interfaces

Networkmanager modifiera /etc/resolv.confla réponse DHCP qu'il obtient.

hth


0

Quand il est # Generated by NetworkManageren/etc/resolv.conf

Modifier la configuration de Network Manager:

sudo vim /etc/NetworkManager/NetworkManager.conf

dans la [main]section, ajoutez rc-manager=unmanaged:

[main]                                                                                                                                   
rc-manager=unmanaged

Pourquoi?

rc-manager- Définissez le mode de gestion resolv.conf. La valeur par défaut dépend des options de génération de NetworkManager, et cette version de NetworkManager a été créée avec une valeur par défaut "symlink".

(...)

unmanaged: ne touchez pas /etc/resolv.conf.

Référence de configuration pour plus d'informations: https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

Ensuite, modifiez votre /etc/resolv.confet redémarrez Network Manager pour voir s'il /etc/resolv.confreste intact:

sudo systemctl restart NetworkManager

ou

sudo service network-manager restart

que:

cat /etc/resolv.conf

Si la procédure a échoué et a /etc/resolv.confété remplacée lors du redémarrage de Network Manager, essayez d'ajouter dns=noneà la [main]section dans la configuration comme https://askubuntu.com/a/1150326/364772 a déclaré

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.