Discoveryd Альтернатива замінити аргумент mDNSResponder?


13

Це пряме продовження цього питання . Перед Yosemite я додав би аргумент "-AlwaysAppendSearchDomains" до файлу плістів mDNSResponder, щоб усі локальні розв'язувачі додали пошукові домени, незалежно від того, чи був період у ярлику, який потрібно шукати. Наприклад, чи намагаюся я ssh встановити ім'я хоста foo.bar або foo, пошуковий домен baz.com слід намагатися не тільки для останнього випадку, як це було (і є) поведінкою за замовчуванням.

Тепер, схоже, mDNSResponder зник, замінений на відкриття. Я не можу знайти подібний варіант, щоб змусити його завжди додавати пошуковий домен. Пропозиції? Я б краще не пішов маршрутом використання локальної резолюції, що не використовується за замовчуванням, але я вважаю це варіантом. Поки що я просто набираю довгі FQDN, але я справді бажаю цього не робити.

Спасибі, Піте


Раніше я намагався ввімкнути інвалід mDNSResponder, але, оскільки DP8, це, здається, зовсім відсутнє :( У мене є квиток на підтримку, який перейшов до інженерів Yosemite про параметр -AlwaysAppendSearchDomains і як впоратися з цим відкриттям, тому я опублікую будь-яку подальшу інформацію висновки тут, коли вони зв'язуються зі мною через кілька днів.
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файлу пліст/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.


На жаль, не працює в Ель-Капітані.
Дмитро Верхотуров

4

Запустіть пошук sudoutil mdnsactivedirectory так у Терміналі. Згідно https://discussions.apple.com/message/26927843#26927843 це рішення.

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

  • судо візудо
    • додайте рядок донизу %admin ALL=NOPASSWD: /usr/sbin/discoveryutil
    • Якщо адміністративна група не працює, запустіть groupsу терміналі і використовуйте відповідну групу - можливо, "персонал" або "всі". Або просто використовувати індивідуальне ім’я користувача без головного%
  • Щоб перевірити візуальну зміну
    • судо -к
    • sudo suі переконайтеся , що будуть запитується пароль. Тоді control-c без введення пароля
    • sudo discoveryutil mdnsactivedirectoryі переконайтеся, що вас не запитують пароль
  • Додайте рядок до ~ / .bash_profile sudo discoveryutil mdnsactivedirectory yes
  • Додайте термінал до елементів входу користувача
    • 10.10: Системні налаштування-> Користувачі та групи, Виберіть користувача
    • Перейдіть на вкладку "Елементи входу" та додайте / Програми / Утиліти / Термінал

Як зробити це постійним? Після перезавантаження вам потрібно буде виконати цю команду ще раз.
JoeriBe

Здається, це не працює для мене, принаймні, wrt не-локальні імена хостів. Мені все одно потрібно набрати "ssh foo.bar.baz.com" замість "ssh foo.bar", хоча ".baz.com" знаходиться на моєму шляху пошуку.
Sigsegv

Тут не слід додавати користувачеві ~/.bash_profileмодифікацію конфігурації, яка повинна бути зроблена на рівні системного демона discoveryd.
дан

1

На жаль, рішення не існує, але я дізнався, що ви можете принаймні перевірити конфігурацію резолютора за допомогою "Discoverutil", наприклад:

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

Мабуть, перший резолютор перераховує пошуковий домен, хоча він, здається, не працює як у версії OS X <10.10. Не маю уявлення, чому існує другий дозвіл без вказаного пошукового домену.


1

Ось зламане рішення з використанням локального сервера імен - працює для мене:

https://github.com/joedj/yosemite_dnsfix


1
Краще було б додати рішення як частину відповіді, інакше якщо посилання колись зникне, відповідь стає марною. Ви можете відредагувати власну публікацію, щоб додати її.
Tetsujin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.