Список DNS серверов в Маверикс

10

Как проверить, какой DNS-сервер использовался для разрешения конкретного имени хоста в сети VPN?

Я использую проприетарный VPN-клиент, предоставленный компанией, и хочу увидеть IP-адрес DNS-сервера, но

networksetup -getdnsservers <service name>

не перечисляет никаких DNS-серверов вообще. Однако я могу пропинговать любой сервер во внутренней сети, поэтому DNS, видимо, работает.

Как поиск DNS работает на OSX с / без VPN-подключений?

Робуста
источник

Ответы:

6

Во-первых, если networksetup -getdnsservers <service name>ничего не отображается, у вас ничего не отображается в Системных настройках> Netowrk в разделе «DNS-серверы:».

Во-вторых, важно отметить, что OS X не обрабатывает DNS, как большинство систем. По https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/resolver.5.html По сути это означает, что OS X имеет несколько клиентов DNS в зависимости от вашей конфигурации. Результат этих нескольких служб означает, что существуют ситуации, когда использование Safari для доступа к веб-сайту ( http://www.example.com ) приведет вас к IP-адресу, который OS X получила из DNS (скажем, 1.2.3.4), пока в то же время, выполняя копать

$ dig www.example.com  

вернет разные результаты. (возможно 2.3.4.5)

Причина этого заключается в том, как OS X обрабатывает DNS.

Если вы запустите, $ man digвы получите среди прочего, следующее:

Mac OS X УВЕДОМЛЕНИЕ Команда dig не использует разрешение имени и адреса хоста или механизмы маршрутизации DNS-запросов, используемые другими процессами, работающими в Mac OS X. Результаты запросов имени или адреса, напечатанных с помощью dig, могут отличаться от результатов, найденных другими процессами. использующие механизмы разрешения имен и адресов Mac OS X. Результаты DNS-запросов также могут отличаться от запросов, использующих библиотеку маршрутизации DNS Mac OS X.

И $man nslookupвернет что-то подобное

Mac OS X УВЕДОМЛЕНИЕ Команда nslookup не использует разрешение имени и адреса хоста или механизмы маршрутизации DNS-запросов, используемые другими процессами, работающими в Mac OS X. Результаты запросов имени или адреса, напечатанных nslookup, могут отличаться от результатов, найденных другими процессами. использующие механизмы разрешения имен и адресов Mac OS X. Результаты DNS-запросов также могут отличаться от запросов, использующих библиотеку маршрутизации DNS Mac OS X.

Все это на самом деле довольно длинный способ сказать, лучший способ увидеть, какие DNS-серверы используются, это посмотреть Системные настройки> Сеть

Обычно здесь есть «DNS-сервер:», а «Поиск доменов:» позволит вам искать неполные адреса.

Если «DNS Server:» отсутствует, то OS X попытается использовать адрес в «Router:» для DNS.

И, помимо всего этого, есть утилиты и другие процессы, которые могут не использовать библиотеку маршрутизации DNS OS X, и они будут напрямую обращаться к содержимому /etc/resolv.conf.

Короткий короткий ответ таков:

  1. Если вы перейдете к содержанию Системные настройки> Сеть, вы увидите то же, что и большинство процессов.
  2. Содержимое Системных настроек> Сеть должно заполнять /etc/resolv.conf, но не всегда.
  3. Некоторые другие процессы (например, dig и nslookup) имеют прямой доступ к /etc/resolv.conf.

И, вдобавок ко всему этому - если вы не используете VPN-клиенты, встроенные в OS X, возможно, что используются дополнительные маршруты и DNS-серверы, которые не networksetup -getdnsservers <service name>будут отображаться. Ваш VPN-клиент может иметь возможность показывать вам маршруты и DNS-серверы, я знаю, что мой делает.

Я знаю, что это не совсем точно отвечает на ваш вопрос, но, надеюсь, это поможет вам понять, что не всегда легко узнать, что такое «правда» в отношении DNS на Mac. Как правило, вы в безопасности, если предположите, что содержимое «Системные настройки»> «Сеть» или содержимое того места networksetup -getdnsservers <service name>, откуда вы получаете DNS. Однако, если вещи кажутся странными, имейте в виду, что есть и другие возможности. Используйте dig, чтобы помочь определить, есть ли различия в движении.

Наконец, для тех читателей , которые задаются вопросом , как получить <service name>по прибытию networksetup -getdnsservers <service name>, попробуйте использоватьnetworksetup -listallnetworkservices

Билл

TheWellington
источник
Спасибо за объяснение. Это то, что я подозревал: по-видимому, все, что находится в сети VPN, ищется через шлюз VPN, указанный в таблице маршрутизации ...
Робуста,
Мне удалось поймать адрес DNS-сервера с помощью tcpdump на интерфейсе VPN.
Робуста,
8

в OSX Mavericks (10.9 - на самом деле 10.6.3, я полагаю), если вы хотите увидеть активную конфигурацию DNS:

scutil --dns

Запись -first- (resolver # 1), как сообщается, является активной конфигурацией ... хотя я видел множество случаев, когда это не так.

от человека Скутил

 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, если то, что вы видите здесь, не соответствует ожидаемому (например, сеть> расширенный> DNS), вам может потребоваться отключить / включить соответствующий сетевой адаптер для его обновления ...

Другие советы в недавнем OSX:

При использовании 10.7 или 10.8 поисковые домены не применяются к поискам с точкой в ​​них. То есть - www.test не будет добавлять поисковые домены вообще, где www будет. есть исправление:

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>

Теперь выгрузите и перезагрузите службу mDNSResponder: sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

конфигурация сети> расширенный> dns -PER INTERFACE-. Так что, если вы используете беспроводной и проводной ... вы должны настроить оба.

есть и другой способ - / etc / resolver - один пример здесь: / etc / resolver / files работает в Mountain Lion для разрешения DNS? и больше здесь: https://www.dforge.net/2013/01/30/osx-domain-specific-dns-servers-etcresolver/

Что касается попытки сделать nslookup - хорошо известно, что nslookup (и host, и dig) не следует (чрезвычайно уникальному и смешанному) механизму разрешения OSX. Используйте пинг.

острому
источник
Это должен быть принятый ответ. scutil --dnsпоказывает фактическую конфигурацию DNS, используемую ОС.
Нейт
2

Я бы обычно использовал (в среде Unix, а это, возможно, немного старомодно) что-то вроде следующих примеров.

Во-первых, вы можете искать IP-адрес или запись DNS-имени по отдельности, и она сообщит вам сервер, который использовался для предоставления ответа. Вы можете найти одну запись в командной строке или войти в nslookupпрограмму и найти несколько записей без необходимости повторного ввода команды:

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)

Во-вторых, эта команда (обратите внимание, что я запускал ее в окне Windows, в Unix / OS X вместо iconconfig -a используется команда ipconfig / all, и результаты вывода могут немного отличаться), в которой перечислены данные конфигурации ip для каждого интерфейса в вашей системе, физических портов, беспроводные соединения, VNC и т. д., отображая, какие данные DNS и IP связаны с каждым маршрутом из машины, вы получите множество записей, по одной для каждого подлинного сетевого порта / адаптера, а также различное количество виртуальных портов в зависимости от вашего конфигурации, в моем примере я удалил большинство результатов, но показал мой VPN-адаптер и (отредактированные) записи DNS, которые у него есть.

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
источник
К сожалению, nslookup отвечает, что не может найти серверы в моей сети VPN. Кроме того, ifconfig не перечисляет DNS-серверы для какого-либо интерфейса, включая тот, который соответствует VPN.
Робуста
Может быть, вы используете жестко закодированные файлы хоста. Серверы, которые вы ищете в Интернете или в вашей организации?
Stuff
downvote из-за вывода Windows ipconfig, который не имеет полезного контекста в среде OSX - OSX имеет свою собственную уникальную (и многие из них) среду разрешения DNS.
горячо
Чувак, просто проголосуй, нам не нужно знать почему.
Stuff
1

Что nslookupтебе сказать? Это дает мне мой DNS-сервер на второй строке.

$ 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
Вольск
источник
Когда я захожу на внутренний сервер (который принадлежит VPN), nslookup пытается использовать мой маршрутизатор Wi-Fi в качестве DNS, а затем не может найти сервер: [... ~] $ nslookup> xxxxxxxxxxx.com Сервер: 192.168.1.1 Адрес: 192.168.1.1 # 53
Робуста