DNS-Namenssuche (war SSH) funktioniert nach dem Snow Leopard-Upgrade nicht mehr

14

Ich denke, das hat mit dem Snow Leopard-Update begonnen. Bereinigte das .ssh-Verzeichnis und hatte immer noch das Problem.

~: uname -a
Darwin california-example-com.local 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root: xnu-1456.1.25 ~ 1 / RELEASE_I386 i386

~: ssh -V
OpenSSH_5.2p1, OpenSSL 0.9.8k 25. März 2009

~: ls -l ~ / .ssh

~: nslookup nevada
Server: 10.94.62.3
Adresse: 10.94.62.3 # 53

Name: nevada.example.com
Adresse: 10.94.62.3

~: ssh nevada
ssh: Hostname konnte nicht aufgelöst werden nevada: Knotenname oder Servername angegeben oder nicht bekannt
Peter Cardona
quelle
Können Sie zu (a) nevada.example.com und (b) 10.94.62.3 ssh?
Sven
2
Können Sie Nevada anpingen? Was zeigt "ssh -v nevada"?
Markdrayton
Seltsame Frage; Verwenden Sie Split DNS und / oder können Sie Nevada anpingen?
Chealion
Vielen Dank für die Folgemaßnahmen ... Antworten: ssh nevada.example.com = nein ssh 10.94.62.3 = ja (und musste den Hostschlüssel bestätigen, weil ich bekannte Hosts gelöscht hatte) ping nevada = Problem mit der Namensauflösung telnet nevada (tho es läuft nicht telnetd) = Problem mit der Namensauflösung Split DNS = nicht absichtlich, weiß nicht was es ist :-) Aus dem Bereich mit den Netzwerkeinstellungen von OS X habe ich 10.94.62.3 als DNS-Server, der vor den beiden angegeben ist von meinem ISP und example.com in der Suchdomänenliste. Andere Systeme in meinem Netzwerk können DNS normalerweise verwenden, um nach Nevada zu senden (und andere).
Peter Cardona
Entschuldigung für das Fehlen von Zeilenumbrüchen im obigen Kommentar ...
Peter Cardona

Antworten:

16

Ich bin auf genau dasselbe Problem gestoßen und habe einen Thread über einen Mac mini mit DNS-Problemen gefunden in Apples Diskussionen äußerst hilfreich.

Der springende Punkt des Problems: mDNSResponder scheint gelegentlich die Reihenfolge der abgefragten DNS-Server zu ändern. Wenn also zuerst die DNS-Server Ihres Internetdienstanbieters abgefragt werden, wird kein ordnungsgemäßer Eintrag erstellt (oder wenn Sie Split-DNS verwenden, wird dies angezeigt) Ihre öffentliche IP).

Die beste Lösung dafür ist (wie Sie), sicherzustellen, dass in Ihren DNS-Einstellungen nur die erforderlichen DNS-Server aufgeführt sind. Dies erfordert möglicherweise das Entfernen der ISP-DNS-Server von Ihrem DHCP (wie auch ich musste - alle Anforderungen werden ohnehin über den lokalen DNS-Server weitergeleitet).

Der Grund, warum Dienstprogramme wie digund wie nslookupgewohnt erfolgreich sind, ist die Verwendung von BIND und/etc/resolv.conf direkt vom Rest des Betriebssystems unterscheiden.

Als Referenz in Snow Leopard wird der DNS-Cache jetzt von mDNSResponder gespeichert. Um ihn zu löschen, müssen Sie den Prozess mit neu starten sudo killall -HUP mDNSResponder. Sie können weitere Informationen (Protokollierung, interner Speicherauszug usw.) abrufen, indem Sie verschiedene Flags für den killallBefehl verwenden.

"sudo killall -USR1 mDNSResponder" to enable operation logging.
"sudo killall -USR2 mDNSResponder" to enable packet logging.
"sudo killall -HUP mDNSResponder" to clear the DNS cache.
"sudo killall -INFO mDNSResponder" to dump mDNSRepsonder's internal state.

Quelle: Snoop Dogg im selben Thread.

Chealion
quelle
Danke, googeln hat mich hierher geführt, das hat es behoben. "arp" hat die falsche IP gemeldet, dig hat die richtige "ip" gemeldet. Keine Menge von DNS-Spülung reparierte es, bevor ich dies versuchte. Ich stelle jedoch fest, dass ich auch den dscacheutil -flushcache ausführen musste. Ich möchte auch darauf hinweisen, dass sich lokale Router merkwürdig verhalten können und ISPs manchmal auch in Bezug auf TTL nicht fair spielen.
Aitch
9

Wir hatten folgende Probleme:

host example.com     <<< WORKED
ping example.com     <<< FAILED

Mit so etwas gelöst:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Anwendungen unter Mac OS X verwenden für DNS nicht denselben Mechanismus wie "host / dig / nslookup".

Die Verwendung von "host / dig / nslookup" war hilfreich, um festzustellen, dass dies kein Netzwerkproblem war. Es war ein Problem mit dem lokalen System, das mit den obigen Befehlen behoben wurde.

Steve Harris
quelle
wow das hat funktioniert !!! Ich habe überall nach einer Lösung gesucht !!!! Ich wollte gerade meinen Laptop formatieren und wiederherstellen. Sie haben mir eine Menge Zeit gespart. Vielen Dank! Entschuldigung, aber ich konnte nicht upvoten :-( Hinweis: Mein DNS funktioniert nicht mehr, nachdem ich Util OnyX ausgeführt habe. Ich weiß nicht warum. Ich konnte dig / nslookup verwenden, aber nichts anderes.
2

Ich habe das gleiche Problem erlebt ... Und während mDNSResponder neu gestartet wird, scheint es zu "funktionieren", es ein paar Mal pro Stunde neu zu starten.

Daher habe ich das Problem "gelöst", indem ich dnsmasq lokal ausgeführt habe. Das zu tun:

  • Erstellen Sie dnsmasq (laden Sie das tgz und makeoder herunter)brew install dnsmasq )
  • Fügen Sie dies in eine dnsmasq.confDatei ein:
resolv-file = resolv.conf
Benutzer = niemand
Gruppe = niemand
interface = lo0
Cache-Größe = 1024
  • Fügen Sie dies in eine resolv.confDatei ein, die sich im selben Verzeichnis wie die dnsmasq.confDatei befindet (nb: not /etc/resolv.conf ):
Nameserver 8.8.8.8
Nameserver 4.2.2.1
Nameserver 4.2.2.2
  • Laufen Sie dnsmasqmit sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf. Die Ausgabe sollte ungefähr so ​​aussehen:
...
dnsmasq: lies resolv.conf
dnsmasq: using nameserver 4.2.2.1 # 53
dnsmasq: using nameserver 4.2.2.2 # 53
dnsmasq: using nameserver 8.8.8.8 # 53
dnsmasq: read / etc / hosts - 6 Adressen
  • Öffnen Sie die Netzwerkeinstellungen und stellen Sie sicher, dass dies 127.0.0.1der einzige DNS-Server ist (Netzwerkeinstellungen -> Erweitert -> DNS -> 127.0.0.1 hinzufügen).

Die Dinge sollten wieder gut funktionieren.

Sobald die Dinge funktionieren, können Sie dnsmasqohne die --no-daemonund --log-queries-Optionen laufen , so dass es im Hintergrund startet und Sie kein Terminalfenster mehr öffnen müssen.

David Wolever
quelle
1

Ich habe festgestellt, dass 10.94.62.3 in der DNS-Serverliste (Bereich Netzwerkeinstellungen) enthalten ist, gefolgt von 2 von meinem ISP. Ich habe die anderen 2 entfernt und alle Namenssuchen bis 10.94.62.3 für diesen Standort erzwungen. Jetzt kann ich Namen in meinem Netzwerk sowie außerhalb auflösen.

Keine Ahnung, warum das funktioniert hat.

Peter Cardona
quelle
1

Ich denke, wir haben ein ähnliches Problem, wie ich es hier beschrieben habe: /apple/50457/nslookup-works-ping-and-ssh-dont-os-x-lion-10-7-3

Ich glaube, das Problem liegt in der Konfiguration der Suchdomains: Ping / SSH-Versuche schlagen gethostbyname2()fehl, weil named nicht mehr läuft (zumindest in Lion) und /etc/resolv.confmit den konfigurierten Suchdomains wird es daher ignoriert. /etc/hostsist der letzte Ausweg für gethostbyname2()ssh und funktioniert somit wieder mit korrekten Einträgen in /etc/hosts. Sollte von Apple imho behoben werden.

tholu
quelle
0

Haben Sie es mit nevada-example-com.local versucht?

Jeremy L
quelle
Hatte das nicht ausprobiert, bekam aber das gleiche Auflösungsproblem. Es scheint, als würde NICHTS (ssh, telnet, ping, http) durch den Server aufgelöst, den nslookup standardmäßig verwendet. Wie kann das sein? Möglicherweise liegt ein Konflikt zwischen den Einstellungen der OS X-Ebene und einer / etc / whatever-Datei vor, um die es in der zugrunde liegenden BSD-Implementierung geht.
Peter Cardona
Nein, OS X verwendet keine Init-Level - auch nicht das BSD-Syubsystem.
Jeremy L
0
dscacheutil -flushcache

Dieser Befehl aktualisiert Ihren DNS-Cache.

Ist 10.94.62.3 ein DNS Server, dem Sie vertrauen? Wenn ja, warum gibt es nur einen? Sie sollten über mindestens 2 DNS-Server verfügen, auf die Sie für Failover-Zwecke zugreifen können. Wenn der runtergeht, bist du eine sitzende Ente.

churnd
quelle
0

Die DNS-Ordnungssuche scheint in Snow Leopard anders zu funktionieren. Wenn Sie keine Domain suchen können, überprüfen Sie, ob in Ihren Netzwerkeinstellungen ungültige DNS-Server aufgeführt sind. Wenn Sie ein Standard-DHCP-Setup verwenden, sollten keine DNS-Server aufgeführt sein. Vor meinem Upgrade hatte ich einen alten DNS-Server aufgelistet, und es hatte keine Auswirkungen. Sobald ich verbesserte, verlor ich total DNS.

Öffnen Sie die Netzwerkeinstellungen> Wählen Sie "Flughafen"> "Erweitert". Wählen Sie die Registerkarte DNS und entfernen Sie alle ungültigen DNS-Server.


quelle
0

Haben Sie sich die Konsole angesehen? (Anwendungen -> Dienstprogramme -> Konsole) Möglicherweise wird mDNSResponder angezeigt unter: Diagnose- und Nutzungsinformationen -> Systemdiagnoseberichte

Wenn es aufgrund eines anderen Programms abstürzt, das Module lädt (z. B. Little Snitch oder Hands Off), wird es möglicherweise dort angezeigt.

jwilkins
quelle
-1

Ich hatte das gleiche Problem mit nslookup beim Auflösen meiner Windows-Box, aber Ping gab mir einen "unbekannten Host". Ich habe versucht, was Navdeep vorschlug, und habe die Nameserver auf der Registerkarte Netzwerkeinstellungen-> Erweitert-> DNS gelöscht. Ich würde sie nicht abziehen lassen, sie waren ausgegraut. Ich habe endlich das + gedrückt und sie sind verschwunden. Ich habe das Hinzufügen eines neuen abgebrochen und die Änderungen übernommen, sobald keine DNS-Server mehr angezeigt wurden. Danach fing Ping an zu arbeiten. Das Seltsame ist, dass mein lokaler Router / DHCP-Server der erste in der Liste war und derjenige, der für die Lösung der Windows-Box verantwortlich ist. Es muss etwas komisch bei der Bestellung sein. Der andere aufgeführte Nameserver ist ein Arbeits-NS und kann den Windows-Host nicht auflösen. DANKE Navdeep!

Chris
quelle