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.8
zu /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?
network-manager
Witek
quelle
quelle
Antworten:
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.conf
Datei zu verwalten . Das bedeutet, dass Sie nicht mehr/etc/resolv.conf
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 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.1
in/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
Update aufgrund der Kommentare:
Beachten Sie, dass resolvconf tatsächlich die Datei schreibt,
/run/resolvconf/resolv.conf
auf die/etc/resolv.conf
ein symbolischer Link verweisen soll. Wenn/etc/resolv.conf
es sich nicht um einen symbolischen Link handelt, müssen Sie ihn neu erstellen. Dazu kannst du rennenoder
quelle
sudo dpkg-reconfigure resolvconf
oder Sie können tunmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
sudo dpkg-reconfigure resolvconf
dem letzten Teil der Antwort ausgeführt werden.sudo dpkg-reconfigure resolveconf
schien großartig zu funktionieren!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.conf
Datei öffnen .Zeile auskommentieren als:
quelle
sudo restart network-manager
.sudo /etc/init.d/network-manager restart
dns=default
es dem[main]
Abschnitt hinzu. NetworkManager verfügt über ein eigenes unangenehmes DNSMASQ-Plugin, das ansonsten verwendet wird.network-manager
-sudo service network-manager restart
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.
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:
Aber...
Und meine / etc / network / interfaces ist:
Das ist ein bisschen seltsam. Ich würde erwarten, dass alle Schnittstellen hier deklariert werden (oder fehlt mir etwas?).
Also, kurz gesagt:
dpkg-reconfigure resolvconf
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
dnsmasq
und denresolvconf
Paketen zusammenzuhängen. Bis 12.10dnsmasq
wurde genutzt. Ab 13.04 schien Ubuntu auf einen dnsmasq / resolvconf-Hybrid umzusteigen, bei dem Sie die Paketednsmasq-base
und installiert habenresolvconf
, aber nichtdnsmasq
selbst.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 nicht auskommentiert/etc/NetworkManager/NetworkManager.conf
. Auch wenn der dnsmasq-Daemon nicht mehr auf dem System vorhanden ist, erwartet /etc/resolv.conf dies dennoch.quelle
dnsmasq
unddnsmasq-base
installiert ist , wird NM setzen127.0.0.1
in/etc/resolv.conf
statt127.0.1.1
. Ichdnsmasq
habe NM einfach deinstalliert (und aktiviert) und alles funktioniert einwandfrei.sudo service network-manager restart
dies wirksam werden soll.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.
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:
Führen Sie dann einfach einen Neustart des sudo-Dienstnetzwerks durch, und schon kann es losgehen!
quelle