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

26

J'ai besoin d’aide pour comprendre pourquoi mon resolv.conf continue de changer, ce qui fait que je ne peux pas accéder à Internet extérieur et uniquement au réseau local:

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

Je pensais avoir résolu ce problème en supprimant l’interface de bouclage et en ajoutant l’interface eth0 dans /etc/network/interfaces avec les instructions de le blog postérieur 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 de nouveau annulé.

P.S. J'ai également posté ceci sur ubuntuforums .

Modifier: Outre NetworkManager, il existe au moins un autre programme qui écrit dans resolv.conf , et je le sais car lorsque je régénère NetworkManager, le fichier resolv.conf généré est associé à un commentaire indiquant # Generated by NetworkManager et à la version modifiée à ne pas faire.

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

Pas de 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
    
posée jontsai 26.08.2011 - 19:02
la source

8 réponses

13

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

D'abord, installez le package resolvconf .

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

(Désolé que je ne me souvienne pas si les paramètres au début ou à la fin du fichier ont la plus haute priorité.)

    
réponse donnée Azendale 27.08.2011 - 05:16
la source
8

J'ai eu exactement le même problème - resolv.conf serait réécrit chaque fois que le serveur était redémarré.

Il a été causé par DHCP. Pour définir resolv.conf à ce que je veux, j'ai édité /etc/dhcp/dhclient.conf et ajouté les éléments suivants:

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

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

J'espère que ça aide.

    
réponse donnée Peter Sankauskas 03.11.2011 - 02:33
la source
5

(Cette réponse contient des moyens d’enquêter sur ce qui se passe. Je peux être en mesure de vous donner une solution réelle si vous utilisez ces méthodes pour rassembler et fournir plus d’informations.)

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

Vous pouvez utiliser auditd < img src="https://hostmar.co/software-small"> pour savoir ce qui modifie le fichier. Démarrez le démon ( sudo service auditd start ) et dites-lui de surveiller les modifications apportées à ce fichier:

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

Les journaux d'audit sont en /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 package resolvconf est installé, Network Manager peut marcher sur ses orteils. Essayez de désactiver toutes les interfaces réseau, puis arrêtez Network Manager ( sudo service network-manager stop ), puis redémarrez-le.

    
réponse donnée Gilles 26.08.2011 - 22:51
la source
4

Ouvrez un terminal et tapez

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
    
réponse donnée tanmay.01 23.02.2013 - 18:31
la source
3

Je désactive la mise à jour de resolv.conf en créant un fichier appelé disable_make_resolv_conf in /etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

Il remplace la fonction standard par le même nom qui est responsable du rafraîchissement resolv.conf .

    
réponse donnée Andrew Blake 26.08.2011 - 19:48
la source
2

Une autre option avec laquelle j'ai eu de la chance consiste à utiliser resolvconf .

Ajoutez des entrées à ce fichier:

/etc/resolvconf/resolv.conf.d/base

Et ils seront ajoutés au /etc/resolv.conf .

Merci à cet article Ask Ubuntu: Comment inclure des lignes dans resolv.conf qui ne seront pas perdues au redémarrage?

    
réponse donnée Drew 20.09.2013 - 20:32
la source
1

Plus tard, mais je posterai mon cas car il était différent de tout ce qui précède.

Dans mon cas, /etc/resolv.conf est un lien symbolique vers /var/run/NetworkManager/resolv.conf , et pour une raison quelconque, cat /etc/resolv.conf me donne une erreur, pas un 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.x , cela fonctionne, mais il est effacé au redémarrage.

J'ai essayé de modifier /etc/network/interfaces et d'ajouter dns-nameservers x.x.x.x , modifié /etc/dhcp/dhclient.conf et supprimé sous request domain-name-servers , également modifié prepend domain-name-servers x.x.x.x .

Le binaire Resolvconf n’est pas installé, NetworkManager.conf n’a rien de pertinent. Mais chaque fois que j'ai redémarré la machine, il n'y avait pas de serveur de domaine.

Je ne suis pas sûr de la raison, mais cela semble être dû au fait qu'il s'agit d'une machine VBox, lancé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 lance la machine, à condition que je le lance à partir de GNS3.

Donc, pour me sauver de la recherche sans fin, j'ai juste ajouté echo nameserver x.x.x.x> /etc/resolv.conf à /etc/profile , le problème résolu (pas résolu, mais a travaillé autour de hehe). Mais il pourrait être intéressant de savoir ce qui se passe avec ce scénario si quelqu'un le rencontre.

    
réponse donnée Adriano_epifas 23.06.2017 - 06:32
la source
0

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

DNS1 = 192.168.X.X

DNS2 = 192.168.X.X

DOMAINE = votredomaine.com

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

    
réponse donnée user2564853 18.10.2017 - 17:12
la source

Lire d'autres questions sur les étiquettes