Sollte ich meine resolv.conf-Datei bearbeiten, um ein falsches DNS-Problem zu beheben?

35

Ich habe das Problem, dass mein Ubuntu-Rechner den falschen DNS-Server verwendet. Aus irgendeinem Grund fragt das Gerät localhostnach DNS-Informationen.

Ich habe den DNS-Server in der Netzwerkeinstellungen-GUI hinzugefügt, aber /etc/resolv.confimmer noch 127.0.0.1als DNS-Serveradresse enthält . Jetzt dachte ich, ich könnte die Datei einfach selbst bearbeiten, aber es wird ausdrücklich darauf hingewiesen, dass ich die Datei nicht von Hand bearbeiten sollte.

Wie kann ich eine neue resolv.confDatei selbst erstellen , da die GUI für die Netzwerkeinstellungen die Datei nicht mit den richtigen Einstellungen erstellt hat ?

Ahatius
quelle
1
Wenn Sie Ubuntu Server 12.04 LTS verwenden, tun Sie sich selbst einen großen Gefallen und bearbeiten Sie /etc/resolvconf/resolv.conf.d/head direkt so, wie es in Ihrer alten resolv.conf gewünscht wird. Ich hatte nichts als Probleme mit dem Resolver, bis ich es brutal erzwungen habe.
askubuntu.com/questions/157154/… vielleicht eine verwandte Frage.
Ehtesh Choudhury

Antworten:

40

Was keiner der Antworten bisher Adressen geschrieben ist die Erscheinung , dass die Fragesteller, dass mit verstehen , nicht nameserver 127.0.0.1in /etc/resolv.confrichtig ist , unter der Annahme , dass ein lokaler Name - Server ausgeführt wird . Und in Ubuntu 12.04 Desktop läuft standardmäßig ein lokaler Nameserver, nämlich ein dnsmasqvon NetworkManager gesteuerter Prozess, der lauscht 127.0.0.1. In Ubuntu 12.10 wurde die Listen-Adresse in geändert 127.0.1.1.

Die Lösung besteht also darin, keine Änderungen an vorzunehmen resolv.conf. Es ist richtig, wenn der Fragesteller den lokalen Nameserver verwenden möchte.

Wenn der Namensdienst nicht funktioniert, werden dem lokalen Nameserver keine korrekten Weiterleitungsadressen zugewiesen, oder es liegt ein anderes Netzwerkproblem vor.

Der Fragesteller hat versucht, mithilfe der "Netzwerkeinstellungen-Benutzeroberfläche" "die Datei mit den richtigen Einstellungen zu generieren", was jedoch nicht funktioniert hat. Ich weiß nicht genau, was das bedeutet, aber hier ist der richtige Weg, Nameserver-Adressen einzugeben, damit sie resolv.confzur richtigen Zeit ankommen. Ich gehe davon aus, dass der Fragesteller Schnittstellen verwendet NetworkManagerund nicht ifupkonfiguriert.

Die meisten Schnittstellen werden mit dem DHCP-Protokoll konfiguriert. In diesem Fall muss auf dem lokalen System nichts konfiguriert werden. Der DHCP-Server weiß, welche Nameserver-Adresse seine Clients verwenden sollen, und sendet diese Informationen an den DHCP-Client, der sie an NetworkManager sendet, der sie an resolvconf sendet, der die Informationen speichert resolv.conf. In diesem Fall muss also möglicherweise der DHCP-Server konfiguriert werden.

Wenn die Netzwerkschnittstelle auf dem lokalen Computer statisch konfiguriert ist, müssen die richtigen Nameserver-Adressen in NetworkManager eingegeben werden, z. B. unter Netzwerkindikator | Verbindungen bearbeiten ... | Wireless | myconnection | Bearbeiten ... | IPv4-Einstellungen | Zusätzliche DNS-Server.

Möglicherweise funktioniert der lokale Nameserver nicht richtig. In diesem Fall sollte der Fragesteller bearbeiten/etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

und die Zeile auskommentieren

dns=dnsmasq

im Abschnitt "[main]". Wenn Sie die Zeile auskommentieren möchten, setzen Sie ein #an den Anfang der Zeile und speichern Sie die Datei. Starten Sie dann den Netzwerkmanager neu.

sudo restart network-manager

Danach werden nicht lokale Nameserver-Adressen resolv.confanstelle der 127. * -Adresse eingegeben .

Wenn der Fragesteller ifupzur Konfiguration der Netzwerkschnittstellen nicht NetworkManager verwendet, ist die Antwort von jmartin2279 richtig: Sie müssen die Nameserver-Adressen in der beschriebenen Weise zu / etc / network / interfaces hinzufügen.

Im Gegensatz zu dem, was einige anderen Antworten zu beraten, in der Regel sollten Sie nicht hinzufügen nameserver, domainoder searchOptionen , um Dateien in /etc/resolvconf/resolv.conf.d/. Siehe meine Kommentare zu diesen Antworten.

jdthood
quelle
1
"Der DHCP-Server weiß, welche Nameserver-Adresse seine Clients verwenden sollen" - Außer wenn Sie keine Kontrolle über den DHCP-Server haben (denken Sie an öffentliche WiFi-Hotspots) und den verwendeten Nameserver überschreiben möchten ... Dieselbe Konfiguration für eine Verbindung festlegen Basis - immer und immer wieder für jeden WiFi-Hotspot, zu dem Sie eine Verbindung herstellen - ist nicht die Lösung.
Teoh Han Hui
Es scheint, dass ich ausführen muss, dhclientdamit die Änderungen (die nameserverZeilen) endlich ankommen etc/resolv.conf. Ich starte ein angepasstes Live von Xubuntu 14.04 (vielleicht ist das der Grund).
Sopalajo de Arrierez
Welche Nachteile könnte die Deaktivierung von DNSMasq haben, jdthood? Natürlich scheinen die Namensauflösung und das Internet danach in Ordnung zu sein.
Sopalajo de Arrierez
Siehe bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842 , z. B. mein Kommentar # 60.
Jdthood
Meine resolv.conf ändert sich ständig zu, 127.0.0.1obwohl mein Netzwerkmanager andere Nameserver hat + dnsmasq auskommentiert + neu gestartet + dnsmasq getötet (wie es noch gestartet wird) + Netzwerk neu gestartet: /
Einige Benutzer
17

Wenn Sie die Schnittstelle mit ifup statisch konfigurieren, können Sie sie der Datei / etc / network / interfaces hinzufügen.

Öffnen Sie ein Terminal und geben Sie Folgendes ein:

sudo gedit /etc/network/interface*

Sie sollten etwas sehen wie:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Bearbeiten zu:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

Verwenden Sie Ihre eigenen Netzwerkinformationen. Dadurch können Sie die DNS einstellen. Sie können hier mehrere DNS-Server verwenden:

dns-nameservers 8.8.8.8 8.8.4.4

Führen Sie danach aus

ifdown eth0
ifup eth0
jmartin2279
quelle
Wenn es Ihr Fall ist, ist dies die Lösung: "Wenn Sie ifup verwenden, um die Schnittstelle statisch zu konfigurieren ..."
angelcervera
Hast du das mal getestet? ifdown: interface eth0 not configured
Cerin
3
Wenn Sie über SSH verbunden sind, können Sie ifdown / ifup nicht verwenden. Verwenden sudo /etc/init.d/networking restart
Sie
11

In Ubuntu 12.04 wurde die Behandlung von resolv.conf geändert.

Wenn Sie Ihre eigenen Nameserver-Adressen hinzufügen möchten, bearbeiten Sie die Datei /etc/resolvconf/resolv.conf.d/ head

sudo nano /etc/resolvconf/resolv.conf.d/head

und füge dort deinen Nameserver hinzu (zB: Google Open DNS)

nameserver 8.8.8.8

Speichern Sie die Datei und führen Sie sie aus

sudo resolvconf -u

Kein Neustart oder irgendetwas anderes. Möglicherweise müssen Sie den Netzwerk-Manager neu starten

sudo service network-manager restart

Getan.

Sie können es mit dem Befehl testen

nslookup www.google.com

Das Ergebnis muss ähnlich sein wie

Server: 8.8.8.8
Address: 8.8.8.8#53
NickTux
quelle
4
Das Hinzufügen einer "nameserver" -Zeile zu /etc/resolvconf/resolv.conf.d/head kann als schneller Hack funktionieren, ist jedoch nicht die richtige Lösung für ein Problem. Dadurch verwendet der Resolver unter allen Umständen diese Nameserver-Adresse, während die zu verwendenden Nameserver von den Umständen abhängen. Wenn Sie beispielsweise mit einem LAN verbunden sind (möglicherweise über VPN), möchten Sie normalerweise die LAN-Nameserver verwenden, um private Namen im LAN auflösen zu können. Im vorliegenden Fall scheint auf dem System ein lokaler Caching-Nameserver ausgeführt zu werden, das Hinzufügen von "nameserver 8.8.8.8" umgeht diesen lediglich.
Jdthood
@jdthood - Sie haben auf ein Problem hingewiesen. Möchten Sie eine Lösung anbieten?
TJ Biddle
@TJ Ich habe bereits eine Antwort auf die Hauptfrage ("Wie bearbeite ich meine resolv.conf-Datei?") Gepostet, wenn Sie das meinen.
Jdthood
1
Bitte nicht empfehlen. An dem sehr Anfang der Datei „DO NOT EDIT Diese Datei wird von HAND - Ihre Änderungen werden überschreiben“.
Cerin
Ich möchte darauf hinweisen, dass das Bearbeiten von /etc/resolv.conf Änderungen beim Neustart manuell überschreibt, das Bearbeiten von /etc/resolvconf/resolv.conf.d/head Änderungen beim Neustart jedoch NICHT manuell überschreibt, was wahrscheinlich beim Neustart der Fall ist. Installation von resolvconf. Dies ist wahrscheinlich der Grund, warum die Warnung angezeigt wird.
Ken
1

Um weitere Einträge hinzuzufügen /etc/resolv.conf, erstellen Sie eine /etc/resolvconf/resolv.conf.d/tailDatei und fügen Sie sie dort hinzu.

Aber wenn /etc/resolv.confenthält 127.0.0.1, dann Hinzufügen von Einträgen zu /etc/resolvconf/resolv.conf.d/tailnichts ändern. Sie müssen Ihre DNS-Serveradressen in NetworkManager statisch einstellen, damit diese an dnsmasq gesendet werden, das die Überwachung durchführt 127.0.0.1.

Die DNS-Konfiguration für eine statische Schnittstelle sollte als Einträge " dns-nameservers", " dns-search" und " dns-domain" in der entsprechenden Zeilengruppe "iface" hinzugefügt werden/etc/network/interfaces

Lesen Sie dies für weitere Informationen.

"Außerdem

Sie können ein GUI-Tool mit dem Namen installieren gnome-network-admin, mit dem Ihr DNS festgelegt wird. Versuch es :

sudo apt-get install gnome-network-admin
Kevin Bowen
quelle
3
(1) Nein, fügen Sie /etc/resolvconf/resolv.conf.d/tail keine "nameserver" -Optionen hinzu. Dies ist ineffektiv (weil andere "Nameserver" -Optionen Vorrang haben) und suboptimal (weil es sich um eine statische Konfiguration handelt, während die Konfiguration die Netzwerkumstände widerspiegeln sollte). (2) Nein, benutze nicht gnome-network-admin. Mit resolvconf funktioniert es nicht richtig. Siehe Fehler # 60518 ( bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518 ).
Jdthood