Во-первых, если 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.
Короткий короткий ответ таков:
- Если вы перейдете к содержанию Системные настройки> Сеть, вы увидите то же, что и большинство процессов.
- Содержимое Системных настроек> Сеть должно заполнять /etc/resolv.conf, но не всегда.
- Некоторые другие процессы (например, 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
Билл