Listen Sie DNS-Server in Mavericks auf

10

Wie kann überprüft werden, welcher DNS-Server zum Auflösen eines bestimmten Hostnamens im VPN-Netzwerk verwendet wurde?

Ich verwende einen vom Unternehmen bereitgestellten proprietären VPN-Client und möchte die IP-Adresse des DNS-Servers sehen, aber

networksetup -getdnsservers <service name>

listet überhaupt keine DNS-Server auf. Ich kann jedoch jeden Server im internen Netzwerk anpingen, sodass DNS anscheinend funktioniert.

Wie funktioniert die DNS-Suche unter OSX mit / ohne VPN-Verbindungen?

Robusta
quelle

Antworten:

6

Wenn networksetup -getdnsservers <service name>nichts angezeigt wird, ist in den Systemeinstellungen> Netowrk unter "DNS-Server:" nichts aufgeführt.

Zweitens ist zu beachten, dass OS X DNS nicht wie die meisten Systeme verarbeitet. Per https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/resolver.5.html Dies bedeutet im Wesentlichen, dass OS X abhängig von Ihrer Konfiguration mehrere DNS-Clients hat. Das Ergebnis dieser mehreren Dienste bedeutet, dass es Situationen gibt, in denen Sie mithilfe von Safari für den Zugriff auf eine Website ( http://www.example.com ) zu einer IP-Adresse gelangen, die OS X währenddessen aus DNS abgerufen hat (z. B. 1.2.3.4) zur gleichen Zeit eine Ausgrabung durchführen

$ dig www.example.com  

gibt unterschiedliche Ergebnisse zurück. (vielleicht 2.3.4.5)

Der Grund dafür liegt in der Art und Weise, wie OS X mit DNS umgeht.

Wenn Sie laufen, erhalten $ man digSie unter anderem Folgendes:

Mac OS X HINWEIS Der Befehl dig verwendet nicht die Auflösung von Hostnamen und Adressen oder die DNS-Abfrage-Routing-Mechanismen, die von anderen unter Mac OS X ausgeführten Prozessen verwendet werden. Die Ergebnisse von Namens- oder Adressabfragen, die von dig gedruckt werden, können von denen anderer Prozesse abweichen die die nativen Auflösungsmechanismen für Namen und Adressen von Mac OS X verwenden. Die Ergebnisse von DNS-Abfragen können sich auch von Abfragen unterscheiden, die die Mac OS X DNS-Routingbibliothek verwenden.

Wird $man nslookupauch etwas ähnliches zurückgeben

Mac OS X HINWEIS Der Befehl nslookup verwendet weder die Auflösung des Hostnamens und der Adresse noch die DNS-Abfrage-Routing-Mechanismen, die von anderen unter Mac OS X ausgeführten Prozessen verwendet werden. Die Ergebnisse der von nslookup gedruckten Namens- oder Adressabfragen können von denen anderer Prozesse abweichen die die nativen Auflösungsmechanismen für Namen und Adressen von Mac OS X verwenden. Die Ergebnisse von DNS-Abfragen können sich auch von Abfragen unterscheiden, die die Mac OS X DNS-Routingbibliothek verwenden.

All dies ist wirklich eine ziemlich lange Art zu sagen. Der beste Weg, um zu sehen, welche DNS-Server verwendet werden, ist Systemeinstellungen> Netzwerk

Die Einträge "DNS-Server:" sind normalerweise vorhanden, und "Suchdomänen:" ermöglicht die Suche nach unvollständigen Adressen.

Wenn "DNS-Server:" nicht vorhanden ist, versucht OS X, die Adresse in "Router:" für DNS zu verwenden.

Zusätzlich zu diesem Spaß gibt es Dienstprogramme und andere Prozesse, die möglicherweise nicht die OS X-DNS-Routingbibliothek verwenden und direkt auf den Inhalt von /etc/resolv.conf zugreifen.

Die kurze kurze Antwort lautet:

  1. Wenn Sie sich den Inhalt von Systemeinstellungen> Netzwerk ansehen, sehen Sie dasselbe, was die meisten Prozesse verwenden.
  2. Der Inhalt von Systemeinstellungen> Netzwerk sollte /etc/resolv.conf füllen, aber nicht immer.
  3. Einige andere Prozesse (wie dig und nslookup) greifen direkt auf /etc/resolv.conf zu.

Und obendrein: Wenn Sie die in OS X integrierten VPN-Clients nicht verwenden, networksetup -getdnsservers <service name>werden möglicherweise zusätzliche Routen und DNS-Server verwendet, die nicht angezeigt werden. Ihr VPN-Client kann Ihnen möglicherweise die Routen und DNS-Server anzeigen. Ich weiß, dass dies bei mir der Fall ist.

Ich weiß, dass dies Ihre Frage nicht genau beantwortet, aber hoffentlich hilft Ihnen dies zu erkennen, dass es nicht immer einfach ist, herauszufinden, was die "Wahrheit" in Bezug auf DNS auf einem Mac ist. Im Allgemeinen können Sie davon ausgehen, dass der Inhalt von Systemeinstellungen> Netzwerk oder der Inhalt von der Ort networksetup -getdnsservers <service name>ist, von dem Sie Ihr DNS beziehen. Wenn die Dinge jedoch seltsam erscheinen, denken Sie daran, dass es auch andere Möglichkeiten gibt. Verwenden Sie dig, um festzustellen, ob Unterschiede im Gange sind.

Last, für die Leser , die sich fragen , wie das bekommen <service name>in networksetup -getdnsservers <service name>, versuchen Sie es mitnetworksetup -listallnetworkservices

Rechnung

TheWellington
quelle
Danke für die Erklärung. Das habe ich vermutet: Anscheinend wird alles, was sich im VPN-Netzwerk befindet, über das in der Routing-Tabelle aufgeführte VPN-Gateway nachgeschlagen ...
Robusta
Ich konnte die Adresse des DNS-Servers mit tcpdump auf der VPN-Schnittstelle abrufen.
Robusta
8

in OSX Mavericks (10.9 - tatsächlich 10.6.3, glaube ich), wenn Sie die aktive DNS-Konfiguration sehen möchten:

scutil --dns

Der erste Eintrag (Resolver Nr. 1) ist angeblich die aktive Konfiguration ... obwohl ich viele Fälle gesehen habe, in denen dies nicht der Fall ist.

vom Mann scutil

 The --dns option reports the current DNS configuration.  The first listed
 resolver(5) configuration is considered to be the "default" configura-
 tion.  Additional "supplemental" configurations follow.  Those containing
 a "domain" name will be used for queries matching the specified domain.
 Those without will be used as a "default" configuration in addition to
 the first listed.

IME, wenn das, was Sie hier sehen, nicht Ihren Erwartungen entspricht (dh Netzwerk> Erweitert> DNS), müssen Sie möglicherweise den entsprechenden Netzwerkadapter deaktivieren / aktivieren, damit er aktualisiert wird ...

Weitere Tipps in OSX:

Mit 10.7 oder 10.8 gelten Suchdomänen nicht für Suchvorgänge mit einem Punkt darin. dh - www.test fügt Suchdomänen überhaupt nicht an, wo www. Es gibt eine Lösung:

sudo vim /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Add <string>-AlwaysAppendSearchDomains</string>after line 16
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/mDNSResponder</string>
        <string>-launchd</string>
        <string>-AlwaysAppendSearchDomains</string>
    </array>

Entladen und laden Sie nun den mDNSResponder-Dienst neu: sudo launchctl entladen -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Das Netzwerk> Erweitert> DNS-Konfiguration lautet -PER INTERFACE-. Wenn Sie also drahtlos und kabelgebunden verwenden, müssen Sie beide einrichten.

Es gibt auch einen anderen Weg - / etc / resolver - ein Beispiel hier: Funktionieren / etc / resolver / files in Mountain Lion für die DNS-Auflösung? und mehr hier: https://www.dforge.net/2013/01/30/osx-domain-specific-dns-servers-etcresolver/

Was den Versuch betrifft, ein nslookup durchzuführen, ist bekannt, dass nslookup (und Host und Dig) nicht dem (äußerst einzigartigen und durcheinandergebrachten) OSX-Auflösungsmechanismus folgt. Verwenden Sie Ping.

daran interessiert
quelle
Dies sollte die akzeptierte Antwort sein. scutil --dnsZeigt die tatsächliche DNS-Konfiguration an, die das Betriebssystem verwendet.
Nate
2

Normalerweise würde ich (in Unix-Umgebungen, und dies ist möglicherweise ein bisschen altmodisch) so etwas wie die folgenden Beispiele verwenden.

Erstens können Sie eine IP-Adresse oder einen DNS-Namenseintrag einzeln suchen und es wird der Server zurückgemeldet, der zur Bereitstellung der Antwort verwendet wurde. Sie können einen einzelnen Eintrag in der Befehlszeile suchen oder das nslookupProgramm aufrufen und mehrere Einträge suchen, ohne den Befehl erneut eingeben zu müssen:

nslookup

Default Server:  redacted.organisation.com
Address:  10.47.xxx.xxx

> ibm.com
Server:  redacted.organisation.com
address:  10.47.xxx.xxx

Non-authoritative answer:
Name:    ibm.com
Address:  129.42.38.1

> sun.com (etc etc, use quit or exit to get out)

Zweitens dieser Befehl (Hinweis, ich habe dies auf einer Windows-Box ausgeführt, unter Unix / OS X ist der Befehl ipconfig / all stattdessen ifconfig -a und die Ausgabeergebnisse können geringfügig abweichen), der die IP-Konfigurationsdaten für jede Schnittstelle auf Ihrem System, die physischen Ports, auflistet. Bei drahtlosen Verbindungen, VNCs usw., die anzeigen, welche DNS- und IP-Daten mit jeder Route aus dem Computer verknüpft sind, erhalten Sie viele Einträge zurück, einen für jeden echten Netzwerkport / Adapter und je nach Ihrem auch verschiedene Mengen an virtuellen Ports In meinem Beispiel habe ich die meisten Ergebnisse entfernt, aber meinen VPN-Adapter und die (redigierten) DNS-Einträge angezeigt.

C:\Users\dawilkin>ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : XXX-XXXXX
   Primary Dns Suffix  . . . . . . . : XX.XXXXX.com
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : XXX.com
                                       XX.XXX.com
                                       XX.XXX.com
                                       XXX.co.uk
                                       XXX.com

Ethernet adapter Local Area Connection 2:

   Connection-specific DNS Suffix  . : XXX.com
   Description . . . . . . . . . . . : Cisco AnyConnect VPN Virtual Miniport Ada
pter for Windows x64
   Physical Address. . . . . . . . . : 00-XX-9A-XX-XX-00
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 10.47.XX.XX(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 10.47.XX.X
   DNS Servers . . . . . . . . . . . : 10.47.XX.X
                                       10.31.XX.X
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter Local Area Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) 82579LM Gigabit Network Connecti
on
   Physical Address. . . . . . . . . : 3C-97-XX-XX-XX-3C
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes

Wireless LAN adapter Wireless Network Connection 3:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft Virtual WiFi Miniport Adapter #
2
   Physical Address. . . . . . . . . : A4-4E-31-42-33-41
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
stuffe
quelle
Leider antwortet nslookup, dass es keine Server in meinem VPN-Netzwerk finden kann. Außerdem listet ifconfig keine DNS-Server für eine Schnittstelle auf, einschließlich derjenigen, die VPN entspricht.
Robusta
Möglicherweise verwenden Sie fest codierte Hostdateien. Befinden sich die Server, die Sie im Internet oder in Ihrer Organisation suchen?
stuffe
Downvote aufgrund der Windows-IPconfig-Ausgabe, die in einer OSX-Umgebung keinen nützlichen Kontext hat - OSX verfügt über eine eigene einzigartige (und viele verschiedene) DNS-Auflösungsumgebung.
scharf
Alter, stimme einfach ab, wir müssen nicht wissen warum.
stuffe
1

Was nslookupsagt dir das? Es gibt mir meinen DNS-Server in der zweiten Zeile.

$ nslookup stackexchange.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   stackexchange.com
Address: 198.252.206.16
Volsk
quelle
Wenn ich einen internen Server (der zu VPN gehört) eingebe, versucht nslookup, meinen WLAN-Router als DNS zu verwenden, und kann dann den Server nicht finden: [... ~] $ nslookup> xxxxxxxxxxx.com Server: 192.168.1.1 Adresse: 192.168.1.1 # 53
Robusta