GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce qui écrase /etc/resolv.conf à chaque démarrage ?

On m'a donné les fichiers pour un mini linux , qui démarre directement dans firefox . Cela fonctionne pour tout ce qu'il devrait faire, sauf que je n'ai pas de connexion Internet.

Nous avons 3 serveurs DNS dans le réseau, qui fonctionnent tous. Je peux aussi leur envoyer un ping. Mais lorsque vous essayez de ping google.de ou wget google.de Je reçois une bad address erreur.

nslookup google.de fonctionne pour une raison quelconque.

J'ai suivi le problème jusqu'à mon resolv.conf sur le système démarré n'ayant pas le même contenu que le resolv.conf que j'ai mis dans le .iso fichier.

J'ai essayé de comprendre tous les facteurs qui entrent dans la création et la modification de resolv.conf . Je ne suis pas sûr d'avoir tout compris, mais je n'y ai certainement pas trouvé ma solution.

Donc, en dernier recours, j'ai essayé de faire le resolv.conf fichier immuable à l'aide de

:~# chattr +i /etc/resolv.conf

Lors de la reconstruction et du redémarrage à ma grande surprise, mon fichier a été renommé resolv.conf~ et à sa place se trouvait le même fichier standard qui me hantait.

Le contenu du fichier me fait croire qu'il obtient les informations du réseau lui-même. Au démarrage du .iso dans Virtualbox sans accès à Internet, mon fichier est conservé tel quel.

J'ai essayé de changer /etc/dhcp/dhclient.conf pour ne pas obtenir les informations du net, en supprimant domain-name-server et domain-name-search de la request partie du fichier.

N'a malheureusement pas fonctionné.

Je n'ai pas installé le NetworkManager. L'iso est basé sur Ubuntu 14.04.

Il manque probablement des informations vitales. Je suis heureux de vous le fournir.

MISE À JOUR :

Je pense avoir trouvé le fichier qui efface resolv.conf .

Il semble être /usr/share/udhcpc/default.script

#!/bin/sh

# udhcpc script edited by Tim Riker <[email protected]>

[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1

RESOLV_CONF="/etc/resolv.conf"
[ - n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"

case "$1" in
    deconfig)
        /bin/ifconfig $interface 0.0.0.0
        for i in /etc/ipdown.d/*; do
            [ -e $i ] && . $i $interface
        done
        ;;

    renew|bound)
        /bin/ifconfig $interface $ip $BROADCAST $NETMASK

        if [ -n "$router" ] ; then
            echo "deleting routers"
            while route del default gw 0.0.0.0 dev $interface ; do
                :
            done

            metric=0
            for i in $router ; do
                route add default gw $i dev $interface metric $((metric++))
            done
        fi

        echo -n > $RESOLV_CONF # Start ----------------  
        [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
        for i in $dns ; do
            echo adding dns $i
            echo nameserver $i >> $RESOLV_CONF
        done
        for i in /etc/ipup.d/*; do
            [ -e $i ] && . $i $interface $ip $dns 
        done # End ------------------
        ;;
esac

exit 0

Cela fait partie du udhcpc programme. Un petit client DHCP, qui fait partie de busybox

Va enquêter plus avant.

MISE À JOUR2 ET SOLUTION :

J'ai commenté la partie (#Start to #End), qui écrase apparemment le /etc/resolv.conf fichier et bien sûr. C'était le coupable. Donc, un script obscur a causé tous ces problèmes.

En relation :Utiliser inotify pour surveiller l'accès à un fichier ?

J'ai changé la question pour refléter ce qu'il fallait réellement savoir pour résoudre mon problème, afin qu'il soit plus facile à trouver pour les personnes ayant le même problème et que je puisse accepter une réponse.

Merci pour l'aide ici pour comprendre les choses.

Réponse acceptée :

  1. Vous ne devez pas mettre à jour manuellement votre resolv.conf , car toutes les modifications seront écrasées par les données fournies par votre serveur DHCP local. Si vous voulez qu'il soit statique, exécutez sudo dpkg-reconfigure resolvconf et répondez "non" aux mises à jour dynamiques. Si vous souhaitez y ajouter de nouvelles entrées, modifiez /etc/resolvconf/resolv.conf.d/base et exécutez sudo resolvconf -u , il ajoutera vos entrées et les entrées du serveur DHCP.

  2. Essayez de modifier votre /etc/network/interfaces et ajoutez-y vos entrées, comme

     auto eth0 
     iface eth0 inet dhcp 
     dns-search google.com 
     dns-nameservers dnsserverip 
    

puis redémarrez /etc/init.d/networking restart ou sudo ifdown -a et sudo ifup -a

  1. Votre système utilise udhcp qui est un très petit programme client DHCP. Le client udhcp négocie un bail avec le serveur DHCP et notifie
    un ensemble de scripts lorsqu'un bail est obtenu ou perdu. Vous pouvez en savoir plus sur son utilisation ici ou simplement modifier ce script (comme vous l'avez fait).

Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Comprendre le fichier /etc/xinetd.conf sous Linux

  3. Explication du fichier de configuration DHCP /etc/dhcp/dhcpd.conf

  4. Exemple de fichier /etc/mke2fs.conf

  5. Pourquoi /etc/resolv.conf pointe-t-il sur 127.0.0.53 ?

Qu'est-ce que Fstab sous Linux | Une introduction au fichier Linux /etc/fstab

Qu'est-ce que le fichier /etc/passwd sous Linux ?

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Comment rendre l'adresse du serveur de noms permanente dans /etc/resolv.conf ?

Quel est l'avantage de /etc/apt/sources.list.d sur /etc/apt/sources.list

Différence entre /etc/hosts et /etc/resolv.conf