Обнаружена альтернатива для замены аргумента mDNSResponder?

13

Это прямое продолжение этого вопроса . До появления Yosemite я добавлял аргумент «-AlwaysAppendSearchDomains» в файл plist mDNSResponder, чтобы все поиски локального распознавателя добавляли поисковые домены независимо от того, был ли период в метке для поиска. Например, пытаюсь ли я использовать ssh для имени хоста foo.bar или foo, поисковый домен baz.com следует использовать не только для последнего случая, поскольку это было (и есть) поведение по умолчанию.

Теперь, похоже, что mDNSResponder пропал, его заменили на discoveryd. Я не могу найти подобную опцию, чтобы она всегда добавляла поисковый домен. Предложения? Я бы предпочел не идти по пути использования локального распознавателя не по умолчанию, но я бы рассмотрел его как вариант. Сейчас я просто наберу длинные полные доменные имена, но я бы предпочел этого не делать.

Спасибо Пит

SIGSEGV
источник
Ранее я пытался включить отключенный mDNSResponder, но, начиная с DP8, он, кажется, вообще отсутствует :( У меня теперь есть запрос в службу поддержки, переданный инженерам Yosemite об опции -AlwaysAppendSearchDomains и о том, как справиться с этим с помощью discoveryd, поэтому я опубликую дальше результаты здесь, когда они связываются со мной через несколько дней.
DJH
@djh, удачи с инженерами Apple?
Sigsegv
Это фиксируется как часть 10.10.1 обновления: Allows you to append search domains for partially qualified domain names when performing DNS lookups (consult the discoveryd man page for more information). Смотрите ответ @ Teknisten ниже.
cOle2
Похоже, это менее актуально в новых версиях macOS, поскольку они удалили обнаружение в 10.10.4 macrumors.com/2015/06/30/apple-releases-os-x-10-10-4
Скотт

Ответы:

18

Так как 10.10.1, самый простой способ исправить это , чтобы добавить --AlwaysAppendSearchDomainsк ProgramArgumentsв Plist файле/System/Library/LaunchDaemons/com.apple.discoveryd.plist

Затем перезапустите com.apple.discoveryd.plistс:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.discoveryd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.discoveryd.plist

Все это согласно справке, напечатанной:

/usr/libexec/discoveryd --help

Насколько я могу судить, это будет сделано так же, как и для mDNSResponder.

Teknisten
источник
К сожалению, в Эль-Капитане не работает.
Дмитрий Верхотуров
4

Запустите sudo discoveryutil mdnsactivedirectory в терминале. Согласно https://discussions.apple.com/message/26927843#26927843 это решение.

Это может быть сделано для автоматического запуска при запуске терминала без пароля:

  • судо визудо
    • добавить строку внизу %admin ALL=NOPASSWD: /usr/sbin/discoveryutil
    • Если административная группа не работает, запустите groupsна терминале и используйте соответствующую группу - возможно, «персонал» или «все». Или просто используйте индивидуальное имя пользователя без ведущих%
  • Чтобы проверить изменение Visudo
    • судо-к
    • sudo suи убедитесь , что будут запрашивается пароль. Тогда control-c без ввода пароля
    • sudo discoveryutil mdnsactivedirectoryи убедитесь, что вас не спрашивают пароль
  • Добавьте строку в ~ / .bash_profile sudo discoveryutil mdnsactivedirectory yes
  • Добавить терминал к элементам входа вашего пользователя
    • 10.10: Системные настройки-> Пользователи и группы, Выбрать пользователя
    • Перейдите на вкладку «Элементы входа» и добавьте / Приложения / Утилиты / Терминал
user97566
источник
Как вы делаете это постоянным? После перезагрузки вам нужно будет снова выполнить эту команду.
JoeriBe
Это не работает для меня, по крайней мере, не .local имена хостов. Мне все еще нужно набрать «ssh foo.bar.baz.com» вместо «ssh foo.bar», хотя «.baz.com» находится в моем пути поиска.
Sigsegv
Вы не должны добавлять пользователю ~/.bash_profileизменения конфигурации, которые должны быть сделаны на уровне системного демона, здесь discoveryd.
Дан
1

К сожалению, нет решения, но я обнаружил, что вы можете по крайней мере проверить конфигурацию распознавателя, используя 'discoveryutil', вот так:

mdbraber-mba:~ mdbraber$ sudo discoveryutil configresolver
Configuration Resolvers: Resolver domain [default], type Unicast, ifIndex 4, port 0, timeout 30, A yes, AAAA no, serviceID 0, scope None, order 0
    server 192.168.143.1
    search domain ourhouse
Configuration Resolvers: Resolver domain [default], type Unicast, ifIndex 4, port 0, timeout 30, A yes, AAAA no, serviceID 0, scope InterfaceID, order 0
    server 192.168.143.1

Очевидно первый распознаватель перечисляет searchdomain, хотя он, кажется, не работает как в версиях OS X <10.10. Понятия не имею, почему есть второй распознаватель без списка поискового домена.

mdbraber
источник
1

Вот взломанное решение с использованием локального сервера имен - у меня работает:

https://github.com/joedj/yosemite_dnsfix

joedj
источник
1
Было бы лучше добавить решение как часть ответа, иначе, если ссылка исчезнет, ​​ответ станет бесполезным. Вы можете редактировать свой собственный пост, чтобы добавить его.
Тетсуджин