Wyświetl listę serwerów DNS w Mavericks

10

Jak sprawdzić, którego serwera DNS użyto do rozwiązania konkretnej nazwy hosta w sieci VPN?

Używam zastrzeżonego klienta VPN firmy i chcę zobaczyć adres IP serwera DNS, ale

networksetup -getdnsservers <service name>

w ogóle nie wyświetla żadnych serwerów DNS. Jednak mogę pingować dowolny serwer w sieci wewnętrznej, więc DNS najwyraźniej działa.

Jak działa wyszukiwanie DNS w OSX z / bez połączeń VPN?

Robusta
źródło

Odpowiedzi:

6

Po pierwsze, jeśli networksetup -getdnsservers <service name>nic nie pokazuje, nic nie ma na liście Preferencje systemowe> Netowrk w obszarze „Serwery DNS:”.

Po drugie, należy zauważyć, że OS X nie obsługuje DNS tak jak większość systemów. Na https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/resolver.5.html Zasadniczo oznacza to, że OS X ma wielu klientów DNS w zależności od konfiguracji. Rezultat tych wielu usług oznacza, że ​​istnieją sytuacje, w których korzystanie z Safari w celu uzyskania dostępu do strony internetowej ( http://www.example.com ) przeniesie Cię na adres IP, który OS X odzyskał z DNS (powiedzmy 1.2.3.4) w tym samym czasie wykonując wykop

$ dig www.example.com  

zwróci różne wyniki. (być może 2.3.4.5)

Powodem tego jest sposób, w jaki OS X obsługuje DNS.

Jeśli uruchomisz $ man dig, otrzymasz między innymi:

Mac OS X UWAGA Polecenie dig nie korzysta z rozpoznawania nazwy hosta i adresu ani mechanizmów routingu zapytań DNS używanych przez inne procesy działające w systemie Mac OS X. Wyniki zapytań o nazwę lub adres wydrukowane za pomocą dig mogą różnić się od wyników znalezionych przez inne procesy korzystające z natywnych mechanizmów rozpoznawania nazw i adresów w systemie Mac OS X. Wyniki zapytań DNS mogą również różnić się od zapytań korzystających z biblioteki routingu DNS systemu Mac OS X.

Zwróci również $man nslookupcoś podobnego

Mac OS X UWAGA Polecenie nslookup nie używa rozpoznawania nazw hostów i adresów ani mechanizmów routingu zapytań DNS używanych przez inne procesy działające w systemie Mac OS X. Wyniki zapytań o nazwy lub adresy wydrukowane przez nslookup mogą różnić się od wyników znalezionych przez inne procesy korzystające z natywnych mechanizmów rozpoznawania nazw i adresów w systemie Mac OS X. Wyniki zapytań DNS mogą również różnić się od zapytań korzystających z biblioteki routingu DNS systemu Mac OS X.

Wszystko to jest naprawdę dość długim sposobem powiedzenia, najlepszym sposobem, aby zobaczyć, które serwery DNS są używane, jest spojrzenie na Preferencje systemowe> Sieć

Wpisy „Serwer DNS:” są zwykle dostępne, a „Szukaj domen:” pozwala wyszukiwać niekompletne adresy.

Jeśli „Serwer DNS:” nie jest obecny, OS X spróbuje użyć adresu w „Router:” dla DNS.

I oprócz całej tej zabawy, istnieją narzędzia i inne procesy, które mogą nie korzystać z biblioteki routingu DNS OS X i będą one bezpośrednio uderzały w zawartość pliku /etc/resolv.conf.

Krótka krótka odpowiedź brzmi:

  1. Jeśli przejdziesz do treści Preferencji systemowych> Sieć, patrzysz na to samo, z czego korzysta większość procesów.
  2. Zawartość Preferencji systemowych> Sieć powinna wypełnić /etc/resolv.conf, ale nie zawsze.
  3. Niektóre inne procesy (takie jak dig i nslookup) uzyskują bezpośredni dostęp do /etc/resolv.conf.

I na dodatek - jeśli nie korzystasz z klientów VPN wbudowanych w OS X, możliwe jest, że zostaną użyte dodatkowe trasy i serwery DNS, które networksetup -getdnsservers <service name>się nie pojawią. Twój klient VPN może mieć możliwość pokazywania tras i serwerów DNS, wiem, że mój.

Wiem, że to nie odpowiada dokładnie na twoje pytanie, ale mam nadzieję, że to pomoże ci zrozumieć, że nie zawsze łatwo jest dowiedzieć się, co „prawda” dotyczy DNS na komputerze Mac. Zasadniczo jesteś bezpieczny, zakładając, że zawartość Preferencji systemowych> Sieć lub zawartość networksetup -getdnsservers <service name>to miejsce, z którego otrzymujesz DNS. Jeśli jednak wydaje się to dziwne, pamiętaj, że są też inne możliwości. Użyj wykopu, aby ustalić, czy występują różnice.

Wreszcie, dla tych czytelników, którzy zastanawiają się jak zdobyć <service name>in networksetup -getdnsservers <service name>, spróbuj użyćnetworksetup -listallnetworkservices

Rachunek

TheWellington
źródło
Dzięki za wyjaśnienie. Podejrzewałem: najwyraźniej wszystko, co znajduje się w sieci VPN, jest sprawdzane przez bramę VPN wymienioną w tabeli routingu ...
Robusta,
Byłem w stanie złapać adres serwera DNS za pomocą tcpdump na interfejsie VPN.
Robusta,
8

w OSX Mavericks (10.9 - tak naprawdę 10.6.3 w górę, jak sądzę), jeśli chcesz zobaczyć aktywną konfigurację DNS:

scutil --dns

Wpis -first- (resolver # 1) jest podobno aktywną konfiguracją ... chociaż widziałem wiele przypadków, w których tak nie jest.

od człowieka Scutila

 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, jeśli to, co widzisz tutaj, nie odpowiada oczekiwaniom (np. Sieć> zaawansowane> dns), może być konieczne wyłączenie / włączenie odpowiedniej karty sieciowej, aby ją odświeżyć ...

Inne wskazówki w najnowszym OSX:

W przypadku wersji 10.7 lub 10.8 domeny wyszukiwania nie mają zastosowania do wyszukiwań z kropką w nich. tzn. - www.test w ogóle nie dołącza domen wyszukiwania, w których www to zrobi. jest poprawka:

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>

Teraz zwolnij i ponownie załaduj usługę mDNSResponder: sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

sieć> zaawansowane> konfiguracja dns to -PER INTERFACE-. Więc jeśli korzystasz z połączenia bezprzewodowego i przewodowego ... musisz skonfigurować oba.

jest też inny sposób - / etc / resolver - tutaj jest jeden przykład: czy / etc / resolver / files działa w Mountain Lion do rozpoznawania nazw DNS? i więcej tutaj: https://www.dforge.net/2013/01/30/osx-domain-specific-dns-servers-etcresolver/

Jeśli chodzi o próbę wykonania nslookup - dobrze wiadomo, że nslookup (i host i dig) nie postępuje zgodnie z (wyjątkowo wyjątkowym i pomieszanym) mechanizmem rozwiązywania OSX. Użyj polecenia ping.

zapalony
źródło
To powinna być zaakceptowana odpowiedź. scutil --dnspokazuje aktualną konfigurację DNS, której używa system operacyjny.
Nate
2

Normalnie użyłbym (w środowiskach unixowych, a to może trochę stara szkoła) czegoś takiego jak następujące przykłady.

Po pierwsze, możesz wyszukać adres IP lub wpis nazwy DNS indywidualnie, a to zgłosi serwer, który został użyty do udzielenia odpowiedzi. Możesz wyszukać pojedynczy wpis w wierszu polecenia lub wejść do nslookupprogramu i wyszukać kilka wpisów bez konieczności ponownego wprowadzania polecenia:

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)

Po drugie, to polecenie (uwaga: uruchomiłem to w oknie systemu Windows, w systemie Unix / OS X polecenie ipconfig / all jest zamiast tego ifconfig -a, a wyniki wyjściowe mogą się nieznacznie różnić), które wyświetla dane konfiguracyjne ip dla każdego interfejsu w twoim systemie, porty fizyczne, połączenia bezprzewodowe, VNC itp., wyświetlając, jakie dane DNS i IP są powiązane z każdą trasą wychodzącą z urządzenia, otrzymasz wiele wpisów z powrotem, po jednym dla każdego oryginalnego portu sieciowego / karty, a także różne ilości portów wirtualnych, w zależności od twojego konfiguracji, w moim przykładzie usunąłem większość wyników, ale pokazałem moją kartę VPN i (zredagowane) wpisy DNS, które ona ma.

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
farsz
źródło
Niestety nslookup odpowiada, że ​​nie może znaleźć serwerów w mojej sieci VPN. Ponadto ifconfig nie wymienia żadnych serwerów DNS dla żadnego interfejsu, w tym takiego, który odpowiada VPN.
Robusta,
Być może używasz na stałe plików hosta. Czy serwery, których szukasz w Internecie lub w Twojej organizacji?
farsz
downvote ze względu na wyjście ipconfig systemu Windows, które nie ma użytecznego kontekstu w środowisku OSX - OSX ma swoje własne unikalne (i wiele smakowe) środowisko rozpoznawania nazw DNS.
chętny
Stary, po prostu głosuj, nie musimy wiedzieć, dlaczego.
farsz
1

Co nslookupci mówi Daje mi mój serwer DNS w drugiej linii.

$ 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
Wołsk
źródło
Kiedy wchodzę na serwer wewnętrzny (który należy do VPN), nslookup próbuje użyć mojego routera Wi-Fi jako DNS, a następnie nie może znaleźć serwera: [... ~] $ nslookup> xxxxxxxxxxx.com Serwer: 192.168.1.1 Adres: 192.168.1.1 # 53
Robusta,