Wie behebe ich die DNS-Auflösung, die nach dem Upgrade auf Ubuntu 13.10 (Saucy) nicht funktioniert?

64

Nach dem Upgrade auf 13.10 schlägt die DNS-Auflösung fehl. Es scheint, dass die DNS-Server, die ich über DHCP (LAN) erhalte, nicht verwendet werden.

Ich konnte das Problem durch Zugabe vorübergehend lösen nameserver 8.8.8.8zu /etc/resolv.conf. Aber dann können die Intranet-Hosts immer noch nicht aufgelöst werden.

Wenn Sie in der Netzwerkanzeige auf den Menüpunkt Verbindungsinformationen klicken , werden der primäre DNS und der sekundäre DNS korrekt festgelegt. Aber mein Computer scheint sie nicht zu benutzen.

Also meine Fragen:

  • Was soll ich tun resolv.conf, wenn überhaupt?
  • Wie finde ich heraus, welche Nameserver mein Computer abfragt?
  • Wo soll man als nächstes suchen, um herauszufinden, warum von DHCP empfangene Nameserver nicht verwendet werden?
Witek
quelle
2
Ich habe das gleiche Problem beim Upgrade von 12.04 auf 14.04.
Tarrasch
6
Ich habe seit dem Upgrade auf 16.10 vor ein paar Tagen alltägliche DNS-Fehler.
WindRider
@WindRider haben das gleiche Problem, der Trick mit Dnsmasq unten scheint zu funktionieren.
Suor
Ich hatte das Problem bei einer Neuinstallation von Lubuntu 17.04 und löste es, indem ich die benötigten URLs manuell zur Hosts-Datei hinzufügte
rubo77

Antworten:

83

Zuerst müssen Sie ein wenig darüber wissen, wie die Namensauflösung in Ubuntu seit Ubuntu 12.04 funktioniert.

Stéphane Graber hat letztes Jahr einige Informationen dazu hier gebloggt . Das Wichtigste, was Sie wissen müssen, ist, dass sowohl Ubuntu Server als auch Ubuntu Desktop resolvconf verwenden, um die resolv.confDatei zu verwalten . Das bedeutet, dass Sie nicht mehr /etc/resolv.confdirekt bearbeiten sollten . Stattdessen sollten Sie Ihr Dienstprogramm zur Netzwerkschnittstellenkonfiguration so konfigurieren, dass die richtigen Informationen für resolvconf bereitgestellt werden. Für Ubuntu Server ist das Dienstprogramm zur Netzwerkschnittstellenkonfiguration ifup und wird von der Datei konfiguriert /etc/network/interfaces. Für Ubuntu Desktop ist NetworkManager das Dienstprogramm zur Konfiguration der Netzwerkschnittstelle . Dies ist, was Sie verwenden.

Der NetworkManager wird über die Netzwerkanzeige> Verbindungen bearbeiten konfiguriert . Bei per DHCP konfigurierten Netzwerkschnittstellen ist es jedoch normalerweise nicht erforderlich, Einstellungen manuell zu ändern. Normalerweise stellt der (entfernte) DHCP-Server dem NetworkManager sowohl eine IP-Adresse für die lokale Schnittstelle als auch die Adresse eines (entfernten) DNS-Nameservers zur Verfügung. NetworkManager startet eine Instanz eines weiterleitenden Nameservers, der lokal unter 127.0.1.1 überwacht wird. Die Adresse, 127.0.1.1, wird resolvconf gesendet, setzt nameserver 127.0.1.1in/etc/resolv.conf. NetworkManager gibt auch die (Remote-) IP-Adresse des von DHCP bereitgestellten DNS-Nameservers an den weiterleitenden Nameserver weiter. Daher fordert ein Programm, das auf dem lokalen System ausgeführt wird, den Resolver auf, einen Hostnamen in eine IP-Adresse zu übersetzen. Der Resolver fragt den lokalen Weiterleitungs-Nameserver unter 127.0.1.1 ab. Der weiterleitende Nameserver fragt den oder die entfernten Nameserver ab, über die er informiert wurde, erhält eine Antwort und sendet diese an die Kette zurück.

NetworkManager kommuniziert mit dem Weiterleitungs-Nameserver-Prozess über D-Bus. Sie können sehen, was NetworkManager dem weiterleitenden Nameserver mitgeteilt hat, indem Sie den Befehl ausführen

nmcli dev list iface eth0 | grep IP4.DNS

Update aufgrund der Kommentare:
Beachten Sie, dass resolvconf tatsächlich die Datei schreibt, /run/resolvconf/resolv.confauf die /etc/resolv.confein symbolischer Link verweisen soll. Wenn /etc/resolv.confes sich nicht um einen symbolischen Link handelt, müssen Sie ihn neu erstellen. Dazu kannst du rennen

sudo dpkg-reconfigure resolvconf

oder

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        
jdthood
quelle
Vielen Dank für diese Info. In meinem Fall zeigt der Befehl die richtigen DNS-Server. Die Datei resolf.conf wird jedoch nicht aktualisiert. Es hat den Zeitstempel, ab dem ich meine Werte dort abgelegt habe. Also muss ich herausfinden, warum resolvconf die Datei nicht schreibt.
Witek
15
Resolvconf schreibt tatsächlich die Datei /run/resolvconf/resolv.conf und /etc/resolv.conf soll ein symbolischer Link zu /run/resolvconf/resolv.conf sein. Wenn Sie /etc/resolv.conf gelöscht haben, haben Sie den symbolischen Link gelöscht. Um die symbolische Verknüpfung erstellen Sie ausführen können , sudo dpkg-reconfigure resolvconfoder Sie können tunmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
jdthood
7
Dies hat alles außer dem "Fix". Wie kann ich dieses Problem beheben?
Amal Murali
5
Das Update kann laut sudo dpkg-reconfigure resolvconfdem letzten Teil der Antwort ausgeführt werden.
Jdthood
Danke!!! Ich bin nicht sicher, was mit meinem System passiert ist, aber der Betrieb sudo dpkg-reconfigure resolveconfschien großartig zu funktionieren!
Meanbunny
49

Ich habe die unter dem folgenden Link vorgeschlagene Änderung vorgenommen (Deaktivierung von dnsmasq). Jetzt funktioniert alles super! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html

/etc/NetworkManager/NetworkManager.confDatei öffnen .

sudo gedit /etc/NetworkManager/NetworkManager.conf

Zeile auskommentieren als:

#dnsmasq deactivated
#dns=dnsmasq
Richard Lindstedt
quelle
4
Nach Auskommen dnsmasq, müssen Sie Netzwerk - Manager neu zu starten: sudo restart network-manager.
Don Kirkby
2
In meinem Fall (Xubuntu) lautet der Befehl: sudo /etc/init.d/network-manager restart
aviram83
Wenn Ihnen dies passiert, obwohl kein dnsmasq installiert ist und Sie nichts auskommentieren müssen, fügen Sie dns=defaultes dem [main]Abschnitt hinzu. NetworkManager verfügt über ein eigenes unangenehmes DNSMASQ-Plugin, das ansonsten verwendet wird.
Dstibbe
1
Ich muss diesen Neustart durchführen network-manager-sudo service network-manager restart
Sungam
Eine meiner Boxen hatte nach dem Upgrade auf 17.10 keine DNS und es stellte sich heraus, dass die /etc/resolv.conf kein symbolischer Link war. Behoben. Eine andere Box hat das Upgrade nicht abgeschlossen und ich habe eine .dpkg-neue Datei im Verzeichnis gefunden. Der Hauptunterschied ist dnsmasq. Kopierte es über und arbeitete ohne Neustart eines Daemons
fchen
20

EDIT 2: Vorheriger Beitrag wurde zu Recht von der Moderation gelöscht, ich poste, was ich als Lösung gefunden habe. Das tut mir leid.

EDIT: Ich habe gerade die Antwort gefunden und sie befindet sich auf dieser Seite - Entschuldigung für mein Miopy. Ich habe meine Ergebnisse unten veröffentlicht und die richtige Antwort von Richard Lindstedt auf dieser Seite erweitert. Ich habe mein frühes Grollen für ein bisschen Kontext verlassen. Bitte stimme Richards Antwort zu, er hat es verdient.

Es ist eigentlich ganz einfach.

Öffnen Sie einfach Ihre Interface-Conf-Datei -> sudo vi / etc / network / interfaces

Das hat dem OP sicher nicht geholfen und hilft mir jetzt auch nicht. Wir möchten keine statischen Adressen, sondern die vom DHCP-Server gesendeten Adressen verwenden. NetworkManager scheint sie zu erkennen, aber Ubuntu ignoriert sie unverblümt:

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Aber...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

Und meine / etc / network / interfaces ist:

auto lo
iface lo inet loopback

Das ist ein bisschen seltsam. Ich würde erwarten, dass alle Schnittstellen hier deklariert werden (oder fehlt mir etwas?).

Also, kurz gesagt:

  • Ich habe mit keiner Datei angefangen
  • Ich bin schon gelaufen dpkg-reconfigure resolvconf
  • Der richtige Symlink ist vorhanden
  • NetworkManager ruft die richtigen DNS-Server von DHCP ab
  • Ubuntu verwendet solche Adressen NICHT
  • Die Problemumgehung besteht darin, die Version 8.8.8.8 auf / etc / network / interfaces zu setzen, DIE ICH NICHT WILL
  • Ich möchte die von DHCP bereitgestellten DNS-Server in allen Situationen verwenden.

Ich öffne keinen anderen Thread, da dies genau das Problem ist, außer dass ich jetzt auf 14.10 bin (aber das hat mich seit dem Upgrade von 12.10 auf 13.04 geärgert).

LÖSUNG

Dieser letzte Satz brachte mich auf die richtige Spur, und erst dann bemerkte ich Richards Antwort.

Das Problem scheint mit dem Konflikt dnsmasqund den resolvconfPaketen zusammenzuhängen. Bis 12.10 dnsmasqwurde genutzt. Ab 13.04 schien Ubuntu auf einen dnsmasq / resolvconf-Hybrid umzusteigen, bei dem Sie die Pakete dnsmasq-baseund installiert haben resolvconf, aber nicht dnsmasqselbst.

Ich kann nicht sagen, ob es sich um einen Fehler in den Upgrade-Skripten für 13.04 oder etwas anderem handelt, da bei einem Upgrade (wie bei Neuinstallationen) von resolvconf dnsmasq-base aktualisiert und dnsmasq (korrekt) deinstalliert wird.

Der Haken ist, dass das Upgrade-Skript die dns=dnsmasqZeile in nicht auskommentiert /etc/NetworkManager/NetworkManager.conf. Auch wenn der dnsmasq-Daemon nicht mehr auf dem System vorhanden ist, erwartet /etc/resolv.conf dies dennoch.

Henrique
quelle
DAS IST SO FANTASTISCH!
Metadings
1
OMG dies löste meine DNS-Probleme, die ich seit 3 ​​Jahren hatte! Wenn Sie dnsmasqund dnsmasq-baseinstalliert ist , wird NM setzen 127.0.0.1in /etc/resolv.confstatt 127.0.1.1. Ich dnsmasqhabe NM einfach deinstalliert (und aktiviert) und alles funktioniert einwandfrei.
user1129682
4
Zukünftige Googler sollten beachten, dass sudo service network-manager restartdies wirksam werden soll.
Timelmer
Guter Punkt für den Neustart des Service-Netzwerkmanagers!
Henrique
7

Es ist eigentlich ganz einfach.

Öffnen Sie einfach Ihre Interface-Conf-Datei -> sudo vi / etc / network / interfaces

und unter deiner schnittstelle (wahrscheinlich eth0) siehst du alle üblichen configs.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Fügen Sie nach dem Gateway einfach "DNS-Nameserver 8.8.8.8 8.8.8.9" oder einen beliebigen Nameserver hinzu, den Sie verwenden möchten.

Also sollte deine Konfiguration sein:

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

Führen Sie dann einfach einen Neustart des sudo-Dienstnetzwerks durch, und schon kann es losgehen!

sprut
quelle