Изменение порядка поиска DNS на Mac El Capitan

у меня есть маршрутизатор, на котором также работает DNS, содержащий имена компьютеров в моей локальной сети. Он настроен для пересылки запросов, поэтому для любой публичной машины он будет обращаться к DNS, предоставляемому моим провайдером. Маршрутизатор настроен так, что это-основной DNS, и DNS провайдера перечислен как вторичный. У меня есть несколько машин (те, с записями в моем частном DNS), которые имеют статические IP-адреса. Другие машины, включая Mac, который является предметом этого вопроса, получают их адреса по DHCP.

машины Windows в этой сети работают отлично. Они разрешают личные имена машинам в моей сети, а также имеют доступ к общедоступному интернету.

мой единственный ноутбук Mac не работает. Он обращается к общедоступному интернету без проблем, но он не поражает мой внутренний DNS, чтобы получить внутренние имена. Например, если я делаю пинг на внутреннюю машину как

ping internal.example.com

Я получаю пакеты обратно, но он показывает IP адрес, соответствующий наведению. (По-видимому, Hover помещает целевую страницу для любого поддомена, для которого нет общедоступного маршрута.) If I do

nslookup internal.example.com

тем не менее, я получаю правильный (внутренний) IP-адрес для машины в моей локальной сети.

наконец, если я делаю пинг снова, но на этот раз заставить его использовать мой внутренний DNS (192.168.1.2),

ping internal.example.com 192.168.1.2

Я получаю ответ от правильная машина в моей локальной сети. Это, кажется, указывает даже "родной" подход может делать то, что я хочу, если он будет просто использовать правильный DNS.

Я нашел много статей, в которых говорится об этой проблеме, но то, что я на самом деле нашел до сих пор, либо устарело, либо не является полным решением моей проблемы. То, что я выковырял вместе до сих пор:

  • Apple меняет свою методологию разрешения DNS в течение нескольких обновлений ОС, поэтому ответы в интернете быстро устаревают.
  • Mac имеет (по крайней мере) две схемы разрешения DNS, работающие одновременно с El Capitan. Это связано с получением различных результатов от ping и от nslookup, как отмечалось выше. Утилиты командной строки, которые работают на "обычной" системе linux, по крайней мере, документируют это на своих справочных страницах, обычно в разделе под названием "Mac OS X Notice."К сожалению, не совсем понятно, какие именно утилиты используют, не проверяя их по очереди. (До сих пор это выглядит как nslookup и dig использовать linux методология и пинг использует то, что является "родным" для Mac OS.)
  • это (более или менее) документированная функция "собственного" метода DNS, который динамически выбирает, какой DNS использовать. Это означает, в частности, что порядок, который появляется в windows, как панель управления сетью или порядок, указанный маршрутизатором (в моем случае), не соблюдаются.
  • я получил некоторую информацию от" родного " инструмента DNS с командой sudo killall -INFO mDNSResponder в командной строке. Что сваливает сообщения в /var/log/system.log. Из этого сообщения журнала видно, что DNS моего провайдера указан первым в этой системе. (Опять же отмечу, что она указана second в конфигурации маршрутизатора и в Панели управления сетью. Он также указан вторым, если я запускаю scutil.)
  • я пытался промыть кэш на mDNSResponder с помощью sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder; но это не помогло.
  • я пробовал редактировать файл com.apple.mDNSResponder.plist как в этой инструкции (https://www.cnet.com/news/os-x-10-6-3-and-dns-server-priority-changes/), но я не смог отредактировать файл. (Только для чтения, даже с sudo vi.) Кроме того, содержимое файла в моей системе отличается от содержимого, явно указанного в этих инструкциях.

в сети всего этого, однако, у меня все еще есть Mac, который не работает в сети, полной других компьютеров, которые отлично работают. Я мог бы, вероятно, вынуть DNS провайдера на маршрутизаторе, чтобы он не даже предложил, но это похоже на взлом. Как исправить это на Эль-Капитан?

Извините, если на это уже ответили. (Я чувствую, что это должно быть где-то!) Я копался и выключался большую часть дня и до сих пор не нашел решения на El Capitan.

23
задан Brick
16.12.2022 15:21 Количество просмотров материала 3213
Распечатать страницу

1 ответ

в 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

найти на man-страницах 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 и т.д., если какая-либо из этих вещей используется в вашей среде.

4
отвечен Spiff 2022-12-17 23:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

dns
macos
networking
osx-el-capitan
private-network
Вверх