it-swarm.com.de

Was überschreibt /etc/resolv.conf bei jedem Start?

Ich erhielt die Dateien für ein Mini-linux, das direkt in firefox bootet. Es funktioniert für alles, was es tun sollte, nur dass ich keine Internetverbindung bekomme.

Wir haben 3 DNS-Server im Netzwerk, die alle funktionieren. Ich kann sie auch anpingen. Aber wenn ich versuche ping google.de Oder wget google.de, Erhalte ich einen bad address Fehler.

nslookup google.de Funktioniert aus irgendeinem Grund.

Ich habe das Problem auf meinem resolv.conf Auf dem gebooteten System aufgespürt, der nicht den gleichen Inhalt wie der resolv.conf Hat, den ich in die .iso - Datei eingefügt habe.

Ich habe versucht, alle Faktoren zu verstehen, die beim Erstellen und Ändern von resolv.conf Mitwirken. Ich bin mir nicht ganz sicher, ob ich alles habe, aber ich habe dort definitiv keine Lösung gefunden.

Als letzten Versuch habe ich versucht, die Datei resolv.conf Mit unveränderlich zu machen

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

Beim erneuten Erstellen und erneuten Booten wurde meine Datei zu meiner Überraschung in resolv.conf~ Umbenannt und an ihrer Stelle befand sich dieselbe Standarddatei, die mich verfolgt hat.

Der Dateiinhalt lässt mich glauben, dass er die Informationen vom Netzwerk selbst erhält. Beim Starten von .iso In Virtualbox ohne Internetzugang bleibt meine Datei unverändert.

Ich habe versucht, /etc/dhcp/dhclient.conf Zu ändern, um die Informationen nicht aus dem Netz zu erhalten, indem ich domain-name-server Und domain-name-search Aus dem Teil request der Datei gelöscht habe.

Hat leider nicht funktioniert.

Ich habe den NetworkManager nicht installiert. Die ISO basiert auf Ubuntu 14.04.

Es fehlen wahrscheinlich wichtige Informationen. Gerne stelle ich es zur Verfügung.

AKTUALISIEREN:

Ich glaube, ich habe die Datei gefunden, die resolv.conf Löscht.

Es scheint /usr/share/udhcpc/default.script Zu sein.

#!/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

Es ist Teil des Programms udhcpc. Ein winziger DHCP-Client, der Teil von busybox ist

Wird weiter untersuchen.


UPDATE2 UND LÖSUNG:

Ich habe den Teil auskommentiert (#Start to #End), der anscheinend die Datei /etc/resolv.conf Überschreibt und sicher genug. Das war der Schuldige. Ein obskures Skript verursachte all diese Probleme.

Ich habe die Frage geändert, um zu reflektieren, was tatsächlich bekannt sein muss, um mein Problem zu lösen, damit es für Menschen mit demselben Problem einfacher ist, eine Antwort zu finden.

Vielen Dank für die Hilfe hier, um die Dinge herauszufinden.

29
Minix

1) Sie sollten Ihren resolv.conf Nicht manuell aktualisieren, da alle Änderungen durch Daten überschrieben werden, die Ihr lokaler DHCP-Server bereitstellt. Wenn Sie möchten, dass es statisch ist, führen Sie Sudo dpkg-reconfigure resolvconf Aus und antworten Sie bei dynamischen Updates mit "Nein". Wenn Sie dort neue Einträge hinzufügen möchten, bearbeiten Sie /etc/resolvconf/resolv.conf.d/base Und führen Sie Sudo resolvconf -u Aus. Ihre Einträge und die Einträge des DHCP-Servers werden angehängt.

2) Versuchen Sie, Ihre/etc/network/interfaces zu bearbeiten und dort Ihre Einträge hinzuzufügen, wie z

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

und starten Sie dann /etc/init.d/networking restart oder Sudo ifdown -a und Sudo ifup -a neu.

3) Ihr System verwendet dhcp , ein sehr kleines DHCP-Client-Programm. Der udhcp-Client handelt eine Lease mit dem DHCP-Server aus und benachrichtigt eine Reihe von Skripten, wenn eine Lease erhalten wird oder verloren geht. Sie können über die Verwendung lesen hier oder einfach dieses Skript bearbeiten (wie Sie es getan haben).

27
kirill-a

Ubuntu 16.04 Wenn die Netzwerkschnittstellen für Ihre Serverinstanz von DHCP gesteuert werden, überschreibt das Programm dhclient Ihr /etc/resolv.conf Datei, wenn der Netzwerkdienst neu gestartet wird.

Sie können das Problem beheben, indem Sie /etc/dhcp/dhclient.conf Datei und Hinzufügen von "ersetzen" -Anweisungen für Domain-Name, Domain-Suche und Domain-Name-Server wie folgt:

supersede domain-name "local.com";
supersede domain-search "local.com";
supersede domain-name-servers 192.168.56.103;

In diesem speziellen Fall befindet sich der Nameserver unter "192.168.56.103" und der Domainname lautet "local.com".

Beachten Sie, dass jede Zeile durch ein Semikolon abgeschlossen wird und der Domänenname in doppelte Anführungszeichen eingeschlossen ist.

5
Sand1512

Ich bin auch darauf gestoßen. Das Auskommentieren von domain-name-server Hat es auch für mich nicht behoben.

Außerdem verwende ich nicht resolvconf, sondern nur /etc/resolv.conf.

Ich habe nicht versucht, chattr +i Mit resolv.conf Zu sperren, weil es zu hackig erscheint. Außerdem möchte ich, dass Puppet bei Bedarf resolv.conf Ändern kann.

Die beste Lösung Ich habe festgestellt, dass das Standardverhalten von dhclient mithilfe der dokumentierten Hooks überschrieben wird.

Erstellen Sie eine neue Datei unter /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate Mit folgendem Inhalt:

#!/bin/sh
make_resolv_conf() {
    :
}

Dann machen Sie die Datei ausführbar:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Wenn nun dhclient ausgeführt wird - entweder beim Neustart oder wenn Sie Sudo ifdown -a ; Sudo ifup -a Manuell ausführen - wird dieses Skript nodnsupdate geladen. Dieses Skript überschreibt eine interne Funktion namens make_resolv_conf(), die normalerweise resolv.conf Überschreibt und stattdessen nichts tut.

Dies funktionierte für mich unter Ubuntu 12.04.

4
richardkmiller

So nehmen Sie die DNS-bezogenen Änderungen in resolv.conf permanent müssen Sie die DHCP-Konfigurationsdatei mit dem Namen dhclient.conf. Sie finden die Datei in /etc/dhcp/dhclient.conf.

Öffnen Sie die Datei zum Bearbeiten (vergessen Sie nicht, Sudo zu verwenden). Sie sehen folgende Zeilen:

#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;

Entfernen Sie das vorhergehende "#" und verwenden Sie den gewünschten Domainnamen- und/oder Domainnamenserver. Speichern Sie es. Jetzt sind die DNS-bezogenen Änderungen dauerhaft.

Credits gehen an: https://itsfoss.com/resolvconf-permanent-ubuntu/

1
MAChitgarha

gehe in dieses Verzeichnis:

  cd /etc/resolvconf/resolv.conf.d

Öffnen Sie die Datei mit dem Namen head und geben Sie dort die DNS-IPs oder -Namen ein. Öffnen Sie die Datei mit dem Namen tail und fügen Sie die Domain dort ein. Starten Sie neu.

0
user245423

Unter Ubuntu 18.04 mit NetworkManager. Sie müssen die Datei 'resolv.conf' entfernen und NetworkManager eine für Sie generieren lassen.

Um die Datei im Terminal zu entfernen, geben Sie Sudo rm -f /etc/resolv.conf; Dadurch wird die Datei für Sie gelöscht.

Starten Sie das System neu und NetworkManager generiert eine resolv.conf-Datei für Sie.

0
mabvutosicho

Verwenden Sie den folgenden Befehl, um zu verhindern, dass resolv.conf Oder eine Datei nach dem Neustart überschrieben wird:

chattr -V +i filename e.g chattr -V +i /etc/resolv.conf

Verwenden Sie den folgenden Befehl, um die Änderung zurückzusetzen:

chattr -i filename - to re-enable insert to the file

chattr (Attribut ändern) ist ein Befehlszeilen-Linux-Dienstprogramm, mit dem bestimmte Attribute für eine Datei im Linux-System festgelegt/deaktiviert werden, um das versehentliche Löschen oder Ändern wichtiger Dateien und Ordner zu gewährleisten, obwohl Sie als angemeldet sind ein Root-Benutzer.

0
Ashish Jain

In Azure-VMs /etc/resolv.conf kann nicht direkt bearbeitet werden.

Fügen Sie die DNS-Einträge in Ihre Netzwerkkonfigurationsdateien ein /etc/sysconfig/network-scripts/ifcfg-eth0 und so weiter wie unten:

DOMAIN=example.com
DNS1=10.*.*.*
DNS2=10.*.*.*
DNS3=10.*.*.*

und starten Sie den Netzwerkdienst nach dem Speichern der Dateien neu. Sie werden sehen, dass die Konfiguration dann auch in die Auflösung.conf eingefügt wird.

0
Krishan