dig erhält das richtige Ergebnis vom DNS-Server, aber der Name kann immer noch nicht aufgelöst werden

dig erhält das richtige Ergebnis vom DNS-Server, aber der Name kann immer noch nicht aufgelöst werden

Unter welchen Bedingungen würde Folgendes passieren? Von einem bestimmten OSX-Rechner in einem internen Netzwerk aus:

$~ cat /etc/resolv.conf
nameserver 10.102.120.7
nameserver 10.102.120.2

Von derselben Maschine:

$~ dig @10.102.120.7 in.local
<snip> ...
;; QUESTION SECTION:
;in.local.                      IN      A

;; ANSWER SECTION:
in.local.               43200   IN      A       10.102.123.30
<snip> ...

Und dennoch kann diese Workstation weder in.local pingen, noch Seiten laden, die von Apache auf dieser Maschine gehostet werden. 10.102.123.30 ist definitiv aktiv (zwei mir bekannte OSX-Maschinen können in.local nicht auflösen – andere Maschinen im Netzwerk können das aber). Ich habe auch ihre /etc/hosts überprüft, um zu sehen, ob dort irgendetwas stören könnte … Bin mir nicht sicher, was ich sonst noch überprüfen soll …

Antwort1

Die .localTLD wird unter MacOS X zunächst von Multicast DNS Bonjour/Rendezvous aufgelöst. Das bedeutet, wenn Sie versuchen, einen DNS-Server mit der .localTLD zu verwenden, wird diese nicht über den DNS-Server aufgelöst.

Einige private Netzwerke verwenden auch „.local“-Domänen für Hosts, die bei ihrem internen DNS-Server registriert sind, obwohl dies keine gültige Top-Level-Domäne im öffentlichen Internet ist. Wenn Ihr Mac mit einem solchen Netzwerk verbunden ist, möchten Sie vielleicht, dass er Hostnamen, die auf „.local“ enden, mithilfe von Unicast DNS sucht, um mit einem DNS-Server zu kommunizieren. Dies ist die gleiche Vorgehensweise, mit der er Hostnamen wie „www.apple.com“ im Internet sucht.

Sehen:http://support.apple.com/kb/HT3473 Und:http://support.apple.com/kb/TA20999

Antwort2

OS X verfügt über einen DNS-Cache auf Betriebssystemebene, den Sie möglicherweise leeren müssen – wie nscd unter Solaris/Linux/BSD.

Versuchen Sie es dscacheutil -flushcache(unter Leopard) oder lookupd -flushcache(unter 10.5.1 und früher).

Antwort3

Sie haben gerade herausgefunden, warumDie Verwendung von .LOCAL ist eine schlechte Idee.

Antwort4

Das Einzige, was mir einfällt, ist, dass Sie für den Namendienst kein DNS verwenden oder der Name zwischengespeichert ist.

Ich kenne mich besser mit Linux aus, aber Sie suchen möglicherweise nach der Datei nsswitch.conf (oder einer entsprechenden Datei) im /etc/-Äquivalent für OSX oder nach der Konfiguration (nscd.conf) oder dem Status des Caching-Daemons (nscd unter Linux).

nsswitch.conf steuert, wie Namen aufgelöst werden. DNS ist nur ein Mechanismus. Andere umfassen Dateien (/etc/host), LDAP und (glaube ich) NIS.

nscd ist ein Namenscache, der dabei hilft, Namen schneller aufzulösen, wenn Sie wiederholt Anfragen für denselben Namen erhalten (z. B. wenn Sie 300 Seiten von einem Webserver laden), indem die Antwort für eine angemessene Zeitspanne zwischengespeichert wird (z. B. 43200 Sekunden aus Ihrer Beispiel-Dig-Ausgabe).

verwandte Informationen