Frage Wie ist die DNS-Suche für OSX Mountain Lion konfiguriert?


Wenn ich meine resolv.conf cat, sehe ich diese Nachricht:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

Ich versuche, einen DNS-Eintrag hinzuzufügen. Ich habe meine Hosts-Datei bearbeitet und den DNS-Cache geleert, aber der Name löst nicht auf, wenn ich ihn verwende host servername. Ich dachte das vielleicht host war nicht konfiguriert, um auf die hosts Datei. Wie kann ich meinen neuen Eintrag lösen und was nutzt OSX wenn nicht? resolv.conf?


31
2018-02-13 20:15


Ursprung




Antworten:


Das Host-Tool ist nicht einfach Namen auflösen (wie in, mit dem Systemnamen Resolver), aber tatsächlich fragt DNS-Server ab (wie in, Senden von Paketen zu udp / 53 und möglicherweise tcp / 53): es kennt nicht noch das lokale hosts Datei.

Wenn Sie den Resolver des Betriebssystems (wie in, gethostbyname () und ähnlichen libc-Funktionen) testen möchten, können Sie versuchen, den Namen, den Sie hinzugefügt haben, mit einem Ping zu versehen /etc/hosts und es wird ehren, was du in diese Datei geschrieben hast.

Auch, wie Sie bereits herausgefunden haben, verwendet DNS-Lookup auf Mac OSX nicht /etc/resolv.conf, und die richtige Art zu konfigurieren, welche DNS-Server abgefragt werden, ist in den Netzwerkeinstellungen gui und / oder networksetup Kommandozeilenwerkzeug. Ich weiß ehrlich gesagt nicht, ob Sie die Reihenfolge konfigurieren können, in der Quellen versucht werden, aber das Standardverhalten ist zu versuchen /etc/hosts erste und DNS-Server danach.


16
2018-02-13 20:28



Ich habe einen Perl Wrapper für getaddrinfo gefunden: search.cpan.org/~pevans/Socket-GetAddrInfo-0.22 - Ben Flynn


DNS-Resolver können über OS X in OS X hinzugefügt werden networksetup Befehl:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Fügen Sie den Namen der Netzwerkverbindung entsprechend ein. Diese Resolver werden in resolv.conf angezeigt, da sie automatisch generiert werden, aber direkte Änderungen an resolv.conf führen nicht dazu, dass diese Resolver verwendet werden. Ich nehme an, die Resolver sind irgendwo in einem Pliste gespeichert; Ich werde suchen und melden.

Bearbeitet um hinzuzufügen: Es sieht so aus, als wäre die XML-Plist-Datei, die die DNS-Server speichert /Library/Preferences/SystemConfiguration/preferences.plist.

Die Host-Datei in / private / etc / hosts sollte funktionieren, um die Auflösung bestimmter Namen zu erzwingen (/ etc ist ein Symlink zu / private / etc). Können Sie Ihre Syntax überprüfen und die richtige Datei bearbeiten?


25
2018-02-13 20:26



Also könnte ich diesen Befehl verwenden, um die Hosts-Datei hinzuzufügen? - Ben Flynn
Sie können nicht, und Sie müssen nicht - Luke404
Nein, wenn Sie der hosts-Datei Namen hinzufügen möchten, fügen Sie sie einfach direkt hinzu. Die Host-Datei wird zuerst überprüft, wenn Namen aufgelöst werden, gefolgt vom lokalen Auflösungs-Cache und dann von Ihren konfigurierten DNS-Servern. Wenn Sie den Befehl "host" zum Testen verwenden, wird die lokale hosts-Datei nicht überprüft. Eine einfache Möglichkeit zum Testen wäre die Verwendung eines Netzwerkdienstprogramms wie Ping. - phoebus
Manchmal bekommt die Benutzeroberfläche doofe Namen, um genau den Namen zu erhalten, den Sie brauchen networksetup -listallnetworkservices  Wenn das Leerzeichen enthält, müssen Sie den gesamten Namen angeben, z. B .: sudo networksetup -setdnsservers 'white space' 8.8.8.8 8.8.4.4 - Marcin
Ist es möglich, den Resolver so zu konfigurieren, dass er einen anderen Port als 53 verwendet? - Rune FS