it-swarm.com.de

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

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 könnte das Problem vorübergehend lösen, indem ich nameserver 8.8.8.8 zu /etc/resolv.conf hinzufüge. Aber dann können die Intranet-Hosts immer noch nicht aufgelöst werden.

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

Also meine Fragen:

  • Was soll ich in resolv.conf einfügen, 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?
64
Witek

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 darüber gebloggt hier . Das Wichtigste, was Sie wissen müssen, ist, dass sowohl Ubuntu Server als auch Ubuntu Desktop resolvconf verwenden, um die resolv.conf -Datei zu verwalten. Das bedeutet, dass Sie /etc/resolv.conf nicht mehr direkt bearbeiten sollten. Stattdessen sollten Sie Ihr Dienstprogramm zur Netzwerkschnittstellenkonfiguration so konfigurieren, dass die richtigen Informationen für resolvconf bereitgestellt werden. Für Ubuntu Server lautet das Dienstprogramm zur Konfiguration der Netzwerkschnittstelle ifup und wird durch die Datei /etc/network/interfaces konfiguriert. Für Ubuntu Desktop ist das Dienstprogramm zur Konfiguration der Netzwerkschnittstelle NetworkManager . 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 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. Diese Adresse 127.0.1.1 wird an resolvconf gesendet, wodurch nameserver 127.0.1.1 in /etc/resolv.conf gesetzt wird. 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

Aktualisierung aufgrund der Kommentare:
Beachten Sie, dass resolvconf tatsächlich die Datei /run/resolvconf/resolv.conf schreibt, zu der /etc/resolv.conf eine symbolische Verknüpfung sein soll. Wenn /etc/resolv.conf kein symbolischer Link ist, 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        
83
jdthood

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

Öffnen Sie die Datei /etc/NetworkManager/NetworkManager.conf.

Sudo gedit /etc/NetworkManager/NetworkManager.conf

Zeile auskommentieren als:

#dnsmasq deactivated
#dns=dnsmasq
49

BEARBEITEN 2: Der vorherige Beitrag wurde zu Recht von der Moderation gelöscht. Ich poste, was ich als Lösung gefunden habe. Entschuldigung.

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 habe bereits dpkg-reconfigure resolvconf ausgeführt
  • 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).

SOLUTION

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

Das Problem hängt anscheinend mit den in Konflikt stehenden Paketen dnsmasq und resolvconf zusammen. Bis 12.10 wurde dnsmasq verwendet. Ab 13.04 schien Ubuntu zu einem dnsmasq/resolvconf-Hybrid zu wechseln, bei dem Sie die Pakete dnsmasq-base und resolvconf installiert haben, jedoch nicht dnsmasq.

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=dnsmasq -Zeile in /etc/NetworkManager/NetworkManager.conf nicht auskommentiert. Auch wenn der dnsmasq-Daemon nicht mehr auf dem System vorhanden ist, erwartet /etc/resolv.conf dies dennoch.

20
Henrique

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!

7
sprut