.Foo.local-Domainnamen können nicht aufgelöst werden

15

Mein Arbeitsplatz hat ein Intranet mit Domainnamen wie server01.foo.local, server02.foo.localusw. Ich habe kürzlich die Fedora 16-Live-Umgebung gestartet, um sie zu testen, und festgestellt, dass diese Domänennamen nicht aufgelöst werden.

Zum Beispiel:

$ ping server01.foo.local
ping: unbekannter Host server01.foo.local
$ ping server01
PING server01.foo.local (X.X.X.X) ...

Warum wird server01 auflösen (und den Namen ausdrucken als server01.foo.local ), aber server01.foo.local wird nicht?

rhollencamp
quelle
Hatte genau das gleiche Problem mit Ubuntu in VMBox. Die Lösung von @ adam820 hat auch bei mir funktioniert.
jimbojw

Antworten:

22

Ich bin mir zwar nicht ganz sicher, warum es nicht wie erwartet funktioniert, aber es scheint einen sehr großen Konflikt mit dem mDNS-Dienst (Avahi unter Linux, Bonjour / Zeroconf unter Mac / Windows) und Windows-Netzwerken zu geben Verwenden Sie .local als internen Routing-Namen für Domains. Was zu passieren scheint, ist, dass beim Pingen von server01 die Verwendung von mDNS zur Auflösung übersprungen und dann die Suchdomäne (foo.local) an die Anforderung angehängt wird, wodurch der DNS-Server erfolgreich nach server01.foo.local abgefragt wird. Wenn Sie jedoch mit mDNS (das .local als Standard-Computernamenerweiterung verwendet) versuchen, server01.foo.local zu pingen, wird tatsächlich über mDNS gesendet, um nach einem Computer mit dem Namen "server01.foo" zu suchen. Wenn dies fehlschlägt, wird aus irgendeinem Grund kein direkter DNS-Wechsel durchgeführt. Eine große Problemumgehung besteht darin, Ihre Domain nicht als .local zu bezeichnen, was wahrscheinlich gegen das Training der meisten Windows-Administratoren für die Domain-Strukturierung verstößt. Davon abgesehen:

Wenn mDNS in Ihrem Netzwerk keine Rolle spielt (wie es in Unternehmen üblich ist, die dazu neigen, dedizierte DNS-Server im Vergleich zum Heimnetzwerk zu betreiben, in dem mDNS manchmal verwendet wird), ist das Ändern der Suchreihenfolge die einfachste Lösung.

Dies kann in /etc/nsswitch.conf gefunden werden. Im Abschnitt für Hosts wird die Reihenfolge aufgeführt, die für Fedora 16 standardmäßig wie folgt lautet:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

Wenn Sie dies ändern in:

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

Wo Sie DNS in der Suchreihenfolge vorrücken, sollte dies für den Moment korrigieren. Wenn Sie wissen, dass Sie mDNS überhaupt nicht benötigen, entfernen Sie alternativ einfach den Teil "mdns4_minimal [NOTFOUND = return]".

Anschauen Dieser Fehler in Red Hats Tracker Es scheint, dass dies ein seit langem bestehendes Problem ist, für das derzeit keine Lösung erkennbar ist. Wenn jemand mehr Einblick geben kann, warum dies auf diese Weise geschieht, wäre er dankbar.

adam820
quelle
Durch Entfernen des Abschnitts mdns wurde das Problem behoben
rhollencamp
Vielen Dank, dass Sie dies hinzugefügt haben. Hatte genau das gleiche Problem und das Verschieben des DNS-Eintrags löste es zuerst. In meinem Fall verwende ich das neueste Ubuntu, nicht Fedora, aber die Lösung war genau die gleiche.
jimbojw
nichts wert, ich habe es gerade ausprobiert und festgestellt, dass Cisco VPN verwendet vpnc Verbindung kann nicht hergestellt werden, nachdem diese Einträge im entfernt wurden hosts: .* Linie in /etc/nsswitch.conf. Durch Ersetzen dieser Einstellungen wurde das Problem behoben.
dobbs
"Wenn dies fehlschlägt, wird aus irgendeinem Grund nicht auf direktes DNS umgestellt." . Der Grund liegt auf der Hand. [NOTFOUND=return] bedeutet "Wenn mDNS Ihnen mitteilt, dass kein lokaler Name gefunden wurde, ist dies maßgeblich und es macht keinen Sinn, weiter zu fragen". Das Verschieben von DNS vor mDNS ist ein Workaround, es reicht jedoch bereits aus, mDNS-Fehler nicht autorisierend zu machen.
MSalters
Ja, das ist ein gültiger Kommentar. das war vor 7 jahren und das wusste ich damals noch nicht. Aber ja, es zu entfernen, das Paket wie unten angegeben zu entfernen oder die Reihenfolge zu ändern, sind alles gültige Workarounds / Lösungen.
adam820
2

Ich würde eine andere Lösung vorschlagen, falls Sie die verwenden .local Domain. Erstens ist es keine gute Idee, da es ein Standard / eine Konvention zu sein scheint .local für einige dynamische Multicast-Erkennung.

Aber wenn Sie darauf bestehen, ist es auch einfacher, sie einfach zu entfernen nss-mdns Paket oder libnss-mdns Paket abhängig von Ihrer Distribution und Sie erhalten das Problem behoben. Wenn Sie diese Funktionalität nicht benötigen, warum sollte sie dann noch vorhanden sein?

Hier ist yum info nss-mdns:

Summary     : glibc plugin for .local name resolution
URL         : http://0pointer.de/lennart/projects/nss-mdns/
License     : LGPLv2+
Description : nss-mdns is a plugin for the GNU Name Service Switch (NSS)
            : functionality of the GNU C Library (glibc) providing host name
            : resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous,
            : aka Apple Bonjour), effectively allowing name resolution by common
            : Unix/Linux programs in the ad-hoc mDNS domain .local.
            : 
            : nss-mdns provides client functionality only, which means that you
            : have to run a mDNS responder daemon separately from nss-mdns if
            : you want to register the local host name via mDNS (e.g. Avahi).
akostadinov
quelle
1

Einige Dinge, die Sie überprüfen können:

  • Gibt es eine Anweisung in /etc/host.conf, die angibt, dass / etc / hosts überprüft werden soll, bevor DNS abgefragt wird?

  • befindet sich server01 in / etc / hosts?

  • Ist da ein search foo.local in / etc / resolv, conf? Das würde foo.local an jeden Hostnamen anhängen, den Sie nachschlagen

Ich frage mich, ob dein Nameserver richtig eingerichtet ist. Wenn Sie noch nslookup haben, wofür wird es zurückgegeben? server01, server01.foo.local und die ip-adresse (reverse lookup)?

ott--
quelle
* host.conf hat nichts mit der Bestellung zu tun * server01 ist nicht in / etc / hosts * search foo.local ist in /etc/resolv.conf (NetworkManager hat es dort abgelegt), aber es hilft nicht, es zu entfernen. Ich habe versucht, /etc/resolv.conf nach der Bearbeitung schreibgeschützt zu machen, sodass NM nicht überschreiben und neu starten konnte. kein Würfel
rhollencamp
@rhollencamp: hast du nslookup auf deinem system?
ott--