Ich verwende pfSense 2.0rc3 und habe es als DNS-Weiterleitung eingerichtet und "DHCP-Leases in DNS-Weiterleitung registrieren" aktiviert. Ich verstehe, dass dies alle geeigneten Einstellungen sind, um den DNS-Server für lokale Suchvorgänge abzurufen.
Es funktioniert wie erwartet mit Linux und insbesondere kann ich host abc
und ping abc
(und andere Anwendungen) ausführen und sie funktionieren alle wie erwartet.
In Mac OS X Lion 10.7 funktioniert dies jedoch nicht wie erwartet. Insbesondere host
scheinen nur Lookups mit dem Befehl zu funktionieren, d. H
$ ping abc
ping: cannot resolve abc: Unknown host
$ host abc
abc.local has address 192.168.1.128
$ ping abc.local
ping: cannot resolve abc.local: Unknown host
$ host abc.local
abc.local has address 192.168.1.128
Warum funktioniert die Suche abc
bei Verwendung des host
Befehls, schlägt jedoch bei ping
(und anderen Anwendungen) fehl ?
Danke fürs Lesen.
Antworten:
Warum sie diese Änderung vorgenommen haben, weiß ich nicht, aber es hat mich für eine Weile verrückt gemacht.
Ich weiß nicht , warum die Dinge für Host funktionieren, aber nicht für Ping, aber ich denke , das hängt mit der Art dieser beiden Dienstprogramme zusammen. Ping ist ein einfaches (wenn auch sehr hilfreiches) Diagnosedienstprogramm zum Verwerfen von Paketen, die an Sie zurückgesendet werden sollen. Die Suchfunktion für Hostnamen ist nur ein Nebeneffekt des Jobs und wird an den rekursiven Resolver des Systems weitergeleitet (ich glaube - ich habe keine Überprüfung durch Überprüfen verknüpfter Bibliotheken oder ähnlicher Elemente durchgeführt). Die Hauptaufgabe des Hosts besteht in der DNS-Namensauflösung. Daher wird ein eigener rekursiver Resolver implementiert.
Apples rekursiver Resolver ist mDNSResponder. Aus irgendeinem Grund benötigt die Version von mDNSResponder in Lion die Befehlszeilenoption "-AlwaysAppendSearchDomains", um sich wie in Snow Leopard zu verhalten (mindestens).
Hier ist ein schneller Weg, um das Problem zu beheben:
(Am Anfang der vorletzten Zeile sollten zwei Tabulatorzeichen stehen, aber ich konnte nicht herausfinden, wie dieser kleine Editor Tabulatoren einfügt. Deshalb habe ich 16 Leerzeichen hinzugefügt. Entweder sollte funktionieren, aber die Tabulatoren Passen Sie den Abstand der Originaldatei besser an.)
Dadurch wird das Argument "-AlwaysAppendSearchDomains" zur Start-Plist-Datei von mDNSResponder hinzugefügt (und eine Sicherungskopie gespeichert). Da dies jedoch von launchd gesteuert wird, muss das System angewiesen werden, mDNSResponder neu zu starten.
Wenn Sie nun überprüfen, ob der mDNSResponder-Prozess ausgeführt wird, sollte er mit Ihrem neuen Argument ausgeführt werden:
(Siehe http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.html und http://kavassalis.com/2011/07/wtf-bug -in-os-x-10-7 / , wo ich meine Antworten auf dieses Problem gefunden habe.)
quelle
sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array-add "–AlwaysAppendSearchDomains"
Aus der Manpage des Hosts (1):
Leider gibt es keine Informationen darüber, wie genau der Host-Befehl Host-Namen auflöst. Dieses Verhalten macht es für das Debuggen etwas nutzlos, IMHO.
quelle
Grundlegender Verlauf ... nslookup war der Befehl, aber es hatte eine eigene Implementierung aller seiner Resolver-Routinen. Was passierte, war, dass Systemauflöser auf verschiedenen Plattformen anders arbeiteten als nslookup. Manchmal führte dies zu ziemlich unterschiedlichen Ergebnissen.
Die Befehle host und dig wurden als "rewrite" für nslookup erstellt. Sie binden statisch die Funktionen des System-Resolvers ein. Der System-Resolver ist eine Sammlung von Funktionen in der Standard-C-Bibliothek eines UNIX- oder UNIX-ähnlichen Systems (unter Mac OS X sind diese Funktionen Teil der netdb-Bibliothek). Auf diese Weise funktionieren die Befehle host und dig immer auf dieselbe Weise wie der System-Resolver für jedes Betriebssystem, für das sie erstellt wurden, sie sind jedoch nicht darauf angewiesen. Auf diese Weise sind sie ausgezeichnete Diagnosewerkzeuge für Fälle, in denen der System-Resolver nicht ordnungsgemäß funktioniert.
HINWEIS: Host und Dig lesen beide die Nameserver-Liste aus /etc/resolv.conf, es sei denn, sie erhalten einen bestimmten Nameserver, mit dem sie sprechen können. Nur der Befehl host verwendet die Suchliste in der Datei /etc/resolv.conf. dig nicht, weshalb man dig immer FQDN geben muss, um irgendetwas aufzulösen. Beide Befehle sind ansonsten völlig autark; Beispielsweise ist die Datei /etc/resolv.conf das einzige, was nicht in der von ihnen verwendeten Binärdatei enthalten ist.
mDNSresponder ist Bonjour. Ich habe mich nicht zu sehr damit befasst, aber ich vermute, dass diese Konfigurationseinstellung dies nicht behebt oder zumindest nicht direkt. Ich habe gerade dasselbe Problem unter Mac OS X 10.9.1 erlebt und es für mich behoben, indem ich mDNSresponder einfach neu gestartet habe. Ich habe dieses Problem noch nie bei 10.5 -> 10.8 / 10.9 auf einem anderen System gesehen. Auch GUI-Anwendungen waren davon nicht betroffen, es waren nur Befehlszeilentools wie Ping und SSH, die kaputt gingen.
Wenn ich etwas mehr Zeit finde, um in der Bibliothek zu stöbern, werde ich sehen, ob ich eine vollständigere Erklärung finde.
quelle
Ich habe ein Shell-Skript zusammengestellt, um das Update zu automatisieren (und ein Deinstallationsprogramm, falls Sie es später benötigen):
https://github.com/michthom/AlwaysAppendSearchDomains
Dies sollte weniger technischen Anwendern bei der Arbeit helfen, die sich möglicherweise davor scheuen, Systemdateien manuell zu bearbeiten.
quelle
.local ist für Multicast reserviert. mDNS- und DNS-Server im selben Netzwerk, die .local verwenden, können problematisch sein.
quelle
Der Host hängt das lokale DNS-Suffix an. Ping ist nicht. Wenn Sie dies als störend empfinden, können Sie .local als Standardsuffix in den Systemeinstellungen des Netzwerks hinzufügen, und das System fügt dies hinzu, wenn Sie versuchen, Hostnamen aufzulösen.
quelle
ping abc.local
funktioniert auch nicht (obwohlhost abc.local
). Ich habe die Frage behoben. pfSense fügt die lokale Domäne automatisch als Suchdomäne hinzu, wenn eine DHCP-Lease gesendet wird, sodass dies nicht das Problem ist.ping abc.local.
Für den Fall , Sie versucht, alle oben und nichts funktioniert , dann können Sie Ihre hinzufügen Name - Server und suchen Wege zu
System Preferences>Network>Advance(bottom right of the window)>DNS tab
Diese Updates /etc/resolv.conf und ping sollten jetzt funktionieren. Das Aktualisieren des Suchpfads durch Bearbeiten von /etc/resolv.conf funktioniert nicht wirklich, aber aus irgendeinem Grund.
AKTUALISIEREN:
Das Bearbeiten von /etc/resolv.conf funktioniert nicht, da das Betriebssystem die Datei basierend auf der Systemeinstellung neu schreibt.
quelle
Mir fehlt der Ruf, Lamont Petersons Post zu kommentieren . Das Neustarten von mDNSresponder funktionierte für mich unter Mac OS X 10.7 (Lion). Im Gegensatz zu Lamont Peterson verursachte dieses Problem bei mir Probleme mit einer GUI-Anwendung - Safari konnte öffentliche oder private Hostnamen nicht auflösen. Hier sind die konkreten Schritte, die ich ausgeführt habe und die Lamont Peterson vermutlich auch ausgeführt hat:
Der
unload
mDNSresponder wird heruntergefahren und neu gestartetload
.Dies löste das Problem sofort; kein Neustart erforderlich.
Sie können überprüfen, ob der Neustart erfolgreich war, indem Sie den folgenden
list
Befehl ausführen:Das Vorhandensein einer Prozess-ID (PID) bedeutet, dass sie ausgeführt wird.
708
wird variieren, wie es vom Betriebssystem zugewiesen wird. Wenn der Status einen anderen als einen Bindestrich oder eine Null anzeigt, ist ein Fehler aufgetreten.Ich weiß nicht , wie
mDNSResponderHelper
wirkt mitmDNSResponder
; Ich musste immer nur neu startenmDNSResponder
.quelle
In einer Zeile:
quelle
Bitte beachten Sie, dass OSX-Namen nicht dem Standard entsprechen können.
Mac-Namen sind im Allgemeinen NICHT: Es müssen zwei Korrekturen vorgenommen werden: a) Ändern Sie die Leerzeichen in "-"
Also zum Beispiel mein Mac: Ingcontis MacBook Pro
wird pingbar sein unter: ingcontis-MacBook-Pro.local
Und die Eröffnungspräferenzen können Sie sehen:
quelle