macOS имеет сложную систему для маршрутизации DNS-запросов («запросов с областями действия»), чтобы обрабатывать такие случаи, как VPN, когда вам может потребоваться, чтобы запросы на доменное имя вашей работы проходили по вашему VPN-туннелю, чтобы вы получали ответы от внутренних DNS-серверов вашей работы., который может иметь больше / другую информацию, чем внешние DNS-серверы вашей работы.
Чтобы увидеть все DNS-серверы, которые использует macOS, и узнать, как настраивается область запросов, используйте:
scutil --dns
Для запроса DNS, как это делает macOS, используйте:
dns-sd -G v4v6 example.com
…или же…
dns-sd -q example.com 255 255
Смотрите справочные страницы для scutil(8)
и dns-sd(1)
для получения дополнительной информации.
Средства устранения неполадок DNS, такие как nslookup(1)
, dig(1)
и host(1)
содержат собственный код распознавателя DNS и не используют системные API-запросы DNS, поэтому они не получают поведение системы. Если вы не укажете, какой DNS-сервер для них использовать, они, вероятно, просто будут использовать один из перечисленных в списке /etc/resolv.conf
, который генерируется автоматически и содержит только DNS-серверы по умолчанию для запросов с незаданной областью.
Традиционные инструменты командной строки Unix, которые не являются специфичными для DNS, такие как ping(8)
, вероятно, вызов традиционных gethostbyname(3)
API, которые в macOS используют поведение распознавателя DNS системы.
Чтобы увидеть, что ваш DHCP-сервер сказал вашему Mac использовать, посмотрите domain_name_server
строку в выводе:
ipconfig getpacket en0
(замените en0 на правильное имя интерфейса в стиле BSD, как вы могли бы видеть в ifconfig
)
Обратите внимание, я уверен, что DNS RFC не требуют реализации DNS для рассмотрения списка серверов, которые должны быть ранжированы по предпочтению. Хотя в реализациях DNS принято относиться к ним таким образом, вероятно, не стоит полагаться на все реализации для реализации таких вещей, если это не указано в соответствующих стандартах.
Кроме того, обратите внимание, что ваш Mac также может получать списки DNS-серверов из объявлений маршрутизатора IPv6 или DHCP6, если они активны в вашей сети. И, конечно, настройки VPN, установленные профили конфигурации, Open Directory, Active Directory и т. Д., Если что-то из этого используется в вашей среде.