Wie kann man die Adresse des Nameservers in /etc/resolv.conf permanent machen?


14

Ich kann die von mir eingestellte Nameserver-Adresse nicht behalten /etc/resolv.conf. Jedes Mal, wenn ich den Wert einstelle, überschreibt der Netzwerkmanager ihn beim Neustart mit dem Standardgateway.

Wie man es richtig einstellt?

Ich würde einen anderen Weg bevorzugen, als den Nameserver im Router zu ändern.


Sie müssen es mit dem ändern NetworkManager(wie in der ersten Zeile angegeben). Diese Datei wird bei jedem Start von der neu generiert NetworkManager. Es hängt von Ihrer Linux-Distribution (die Sie nicht erwähnt haben) ab, wie Sie darauf zugreifen NetworkManager.
Rik

Antworten:


13

Es hängt davon ab, ob. Bitte bis zum Ende lesen.

Wenn Sie das Paket resolvconf nicht installiert haben, ist es ganz einfach: Nachdem Sie es wie gewünscht geändert haben , geben Sie den Befehl aus

 sudo chattr +i /etc/resolv.conf

Der Befehl ändert die Dateiattribute und macht es immutable(die + i Option).

Wenn Sie jedoch das Paket resolvconf installiert haben, kann die Datei /etc/resolv.conf in einen symbolischen Link umgewandelt werden.

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

Das ist eine Datei auf einem virtuellen Dateisystem, der Inbegriff einer nicht permanenten Version. Das Komische ist, dass Sie möglicherweise nicht wissen, dass Sie resolvconf installiert haben, da die neuesten Versionen von Debian-ähnlichen Betriebssystemen bereits vorinstalliert sind. Sie können feststellen, ob Ihre Distribution es für Sie installiert hat, indem Sie den folgenden Befehl eingeben:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Am wichtigsten ist jedoch, dass Sie /etc/resolv.confmithilfe des obigen Befehls (Datei /etc/resolv.conf) feststellen können, ob Ihre Datei in eine Verknüpfung umgewandelt wurde. Wenn die Antwort lautet ASCII text, verwenden Sie chattrandernfalls ...

Wenn Sie eine statische IP-Adresse verwenden, ist es am einfachsten, die folgende Zeile (oder eine solche) hinzuzufügen.

 dns-nameservers 8.8.4.4 8.8.8.8

in der Zeilengruppe, in der die Eigenschaften Ihrer statischen Schnittstelle in / etc / network / interfaces definiert sind.

Wenn Sie sich stattdessen auf einem Laptop befinden, der ständig mit verschiedenen Netzwerken verbunden ist, können Sie dem LawrenceChervorragenden Vorschlag folgen . Wenn Sie jedoch resolvconf auf Ihrem System installiert haben, können Sie einen festen DNS-Satz am einfachsten über die Dateien in /etc/resolvconf/resolv.conf.d bereitstellen . Insbesondere werden folgende Dateien verwendet (siehe Stephane Grabers Seite ):

base : Wird verwendet, wenn keine anderen Daten gefunden werden können

head : Wird für den Header von resolv.conf verwendet, um sicherzustellen, dass ein DNS-Server immer der erste in der Liste ist

tail : Jeder Eintrag in tail wird am Ende der resultierenden resolv.conf angehängt.

Platzieren Sie Ihre bevorzugten Nameserver wie folgt im Kopf

  nameserver 8.8.8.8

und du bist fertig.


2
@dhiller Ultrasawblade hat seinen Namen in geändert LawrenceC, es ist der folgende.
MariusMatutiae

Sehr schöner und interessanter Beitrag, ich möchte Sie bitten, einige Dokumentationslinks zu diesem Thema für Benutzer hinzuzufügen, die mehr über das Thema wissen möchten, Thx
Philippe Gachoud

/etc/resolvconf/existiert nicht standardmäßig unter Ubuntu 18.04.
Dan Dascalescu

9

Fügen Sie eine ähnliche Zeile wie bei /etc/dhcp/dhclient.confVerwendung eines Root-Terminals hinzu:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Dies führt dazu dhclient, dass das Programm, das eine DHCP-Anforderung ausgibt und Änderungen gemäß der Antwort vornimmt, die vom DHCP-Server erhaltenen Informationen durch die oben genannten ersetzt, bevor Änderungen vorgenommen werden.

Bei den obigen handelt es sich um zwei OpenNIC-DNS-Server. Ersetzen Sie die gewünschten Server nach Bedarf.

Da dies immer dann der Fall ist, wenn Sie Konfigurationsinformationen von DHCP erhalten, können Sie diese über die dhclient -v eth0oder eine andere Schnittstelle aktualisieren und die Änderung anzeigen.


1
Anstatt nur den DNS (normalerweise Router) zu überschreiben, könnte man prepend domain-name-servers 8.8.8.8zum Beispiel die Leitung hinzufügen . Dies würde den DNS des Internetdienstanbieters verwenden, wenn dieser verfügbar ist.
Axel Latvala

3

Wie von @Rik erwähnt, ist der Grund für DNS-Ersetzungen beim Neustart auf den Netzwerkmanager / das Dienstprogramm zurückzuführen, das so eingestellt ist. In Linux Mint war meine IPv4-Methode laut Screenshot nur auf Automatische (DHCP) Adressen eingestellt. Sie können dann entweder die richtigen Einstellungen in /etc/resolv.conf oder im Abschnitt DNS-Server eingeben. Ich erinnere mich, dass sich in Ubuntu 13.04 meine Nameserver über einen längeren Zeitraum ein paar Mal geändert haben, aber nachdem ich sie tatsächlich in der GUI bearbeitet hatte, schienen alle von da an stabil zu sein.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben


3

Hatte das gleiche Problem, aber ich verwende statische IP-Adresse. Das Update fügte nur die DNS in / etc / network / interfaces hinzu

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]

Ja, das behebt das Problem, da NetworkManager die in aufgeführten Schnittstellen ignoriert /etc/network/interfaces. Guter Fang!
Izzy

1

Wenn Sie wicd verwendet haben, klicken Sie mit der rechten Maustaste auf das Symbol und dann auf Verbindungsinformationen. Wenn sich das Fenster öffnet, klicken Sie auf die Eigenschaften des Fensters, mit dem Sie verbunden sind.

Aktivieren Sie die Option "Statisches DNS verwenden" und geben Sie in der Zeile "DNS-Server 1" die IP-Adresse für das Google-DNS 8.8.8.8und in der Zeile "DNS-Server 2 8.8.4.4" die Adresse ein. Klicken Sie dann auf "OK".

Wenn Sie Fehler aufgrund der Standardeinstellungen erhalten, können Sie sich an Ihren Internetdienstanbieter wenden und diesen darüber informieren. Sie weisen Ihrem Modem normalerweise DNS-Server zu, wenn Sie eine Verbindung zu ihnen herstellen.


0

Sich durch chattr +ioder ähnliches hineinzuhacken ist bestenfalls eine schnelle Abhilfe und sollte nach Möglichkeit vermieden werden (zumindest auf lange Sicht - wie gesagt ist es eine kurzfristige Abhilfe, bis man Zeit für die wirkliche Lösung findet). . Wie bereits erwähnt, ist dies ein Job für den NetworkManager, der eine CLI bietet, die wir dafür verwenden können:

# Finde die Schnittstelle, die angepasst werden soll
nmcli Gerät
Die Ausgabe von # sieht folgendermaßen aus:
# GERÄTEZUSTANDSANSCHLUSS
# enp0s3 ethernet connected my-office
# lo Loopback nicht verwaltet -
# Daraus brauchen wir die VERBINDUNG.

# Fügen Sie nun unsere "Suchdomains" hinzu:
nmcli-Verbindung ändere my-office ipv4.dns-search example1.com
nmcli con mod my-office + ipv4.dns-search example2.com

# Und unsere Nameserver:
nmcli con modify my-office ipv4.dns 213.73.91.35
nmcli con modify my-office + ipv4.dns 87.118.100.175
# beachte das "+" in der zweiten Zeile: füge ein weiteres hinzu,
#, während die erste Zeile den vorhandenen Eintrag überschreibt.
# das hätten wir mit einem einzigen anruf machen können:
nmcli con modify my-office ipv4.dns "213.73.91.35 87.118.100.175"

# OK, also lassen Sie es uns jetzt anweisen, Updates vom DHCP-Server zu ignorieren:
nmcli con my-office ipv4.ignore-auto-dns ändern yes

# und wende die Änderungen auf unsere laufende Konfiguration an
nmcli con up my-office

Wenn Sie eine statische IP-Adresse verwenden, können Sie auch die Lösung aus der Antwort von kanelbolle verwenden .


0

Erstaunlich , wie dieses kleine Problem frustrierend bekommen können, wenn die Lösungen gegeben für sie nicht mehr arbeiten auf Ubunutu 18.04.

Was für mich funktioniert hat, war einfach den nameserverWert in /etc/resolv.confjedem Boot zu überschreiben . sudoeditiere /etc/rc.localund füge diese Zeile hinzu:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.