OS/X "etc/resolver/dev" не работает - почему бы и нет?
Я ожидаю, что смогу разрешить имя DNS www.foobar.dev
используя DNS-сервер, который работает в виртуальной машине в моей системе OS / X (High Sierra), потому что я создал /etc/resolver/dev
файл, содержащий следующую строку: (с указанием виртуального адреса виртуальной машины)
nameserver ww.xx.yy.zz
... но dig www.foobar.dev
продолжает консультироваться с интернет-сервером имен,
в то время как dig @ww.xx.yy.zz www.foobar.dev
успешно извлекает запись из DNS виртуальной машины.
Я использовал dscacheutil
команда, чтобы убедиться, что ошибочная запись не находится в кэше распознавателя DNS.
Итак, почему нет присутствия /etc/resolver/dev
файл с указанным содержимым, достаточным для прямого anything.dev
на указанный DNS-сервер?
Интересно - иногда это похоже на работу. Также команда scutil --dns
производит следующую ожидаемую запись, которая, кажется, указывает на то, что /etc/resolver/dev
файл обнаружен!
resolver #8
domain : dev
nameserver[0] : ww.xx.yy.zz
flags : Request A records
reach : 0x00020002 (Reachable,Directly Reachable Address)
1 ответ
Это, вероятно, работает нормально, вы просто проверяете это неправильно. dig
(а также host
а также nslookup
) не используют системный преобразователь и не полностью реализуют политику поиска системного преобразователя. В результате они полезны для тестирования самой системы DNS, но не для проверки того, как ОС использует DNS. Официальный способ тестирования системного резольвера dscacheutil
(например dscacheutil -q host -a name www.foobar.dev
), но это досадно многословно, поэтому я склонен просто использовать ping
и посмотрите на IP, который он сообщает.
Как сказал @GordonDavisson в другом ответе - ping
Команда полезна для тестирования системного резольвера. Мое дополнение заключается в том, что он также может потерпеть неудачу из-за кеша DNS Не забудьте очистить это:
sudo killall -HUP mDNSResponder
Лучше заменить /etc/resolver
файлы с истинной конфигурацией DNS, как и /etc/resolv.conf
это все устаревшие вещи, сохраненные только для обратной совместимости (и, может быть, потому, что этого требует POSIX?).
Вот как это можно сделать из командной строки, используяscutil
, это действительно просто.
Конечно, для всего этого есть программный интерфейс.
См. Apple SystemConfiguration Framework.