Odkryta alternatywa dla zastąpienia argumentu mDNSResponder?

13

Jest to bezpośrednia kontynuacja tego pytania . Przed Yosemite dodawałem argument „-AlwaysAppendSearchDomains” do pliku plist mDNSResponder, aby wszystkie lokalne wyszukiwania resolvera dodawały domeny wyszukiwania, niezależnie od tego, czy na etykiecie znajdował się kropka, którą należy wyszukać. Na przykład, bez względu na to, czy próbuję ssh do nazwy hosta foo.bar czy foo, należy wypróbować domenę wyszukiwania baz.com, nie tylko w tym drugim przypadku, ponieważ było to (i jest) zachowanie domyślne.

Teraz wygląda na to, że mDNSResponder zniknął, zastąpiony przez discoveryd. Nie mogę znaleźć podobnej opcji, aby zawsze dodawać domenę wyszukiwania. Propozycje? Wolałbym nie iść drogą korzystania z domyślnego lokalnego resolvera, ale rozważam to jako opcję. Na razie po prostu wpisam długie nazwy FQDN, ale naprawdę wolałbym nie.

Dzięki, Pete

Sigsegv
źródło
Wcześniej próbowałem włączyć wyłączony mDNSResponder, ale od DP8 wydaje się to zupełnie nieobecne :( Mam zgłoszenie do eskalacji do inżynierów Yosemite teraz o opcji -AlwaysAppendSearchDomains i jak sobie z tym poradzić z odkryciem, więc będę pisać dalej ustalenia tutaj, kiedy skontaktują się ze mną za kilka dni
djh
@ djh, masz szczęście z inżynierami Apple?
Sigsegv,
Zostało to poprawione w ramach 10.10.1 działka Allows you to append search domains for partially qualified domain names when performing DNS lookups (consult the discoveryd man page for more information). Zobacz odpowiedź @ Teknisten poniżej.
cOle2,
Wydaje się to mniej istotne w nowszych wersjach systemu macOS, ponieważ zostały one wykryte w 10.10.4 macrumors.com/2015/06/30/apple-releases-os-x-10-10-4
Scott Willeke

Odpowiedzi:

18

Od 10.10.1 najprostszym sposobem, aby to naprawić, jest dodanie --AlwaysAppendSearchDomainsdo ProgramArgumentspliku plist/System/Library/LaunchDaemons/com.apple.discoveryd.plist

Następnie uruchom ponownie za com.apple.discoveryd.plistpomocą:

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

Wszystko to zgodnie z pomocą wydrukowaną przez:

/usr/libexec/discoveryd --help

Zrobię to tak samo, jak dla mDNSResponder, o ile wiem.

Teknisten
źródło
Niestety nie działa w El Capitan.
Dmitrij Verkhoturov,
4

Uruchom sudo discoveryutil mdnsactivedirectory yes w Terminalu. Według https://discussions.apple.com/message/26927843#26927843 jest to rozwiązanie.

Można to ustawić tak, aby uruchamiało się automatycznie przy każdym uruchomieniu terminala bez hasła:

  • sudo visudo
    • dodaj linię na dole %admin ALL=NOPASSWD: /usr/sbin/discoveryutil
    • Jeśli grupa administracyjna nie działa, uruchom groupsterminal i użyj odpowiedniej grupy - być może „personelu” lub „wszystkich”. Lub po prostu użyj indywidualnej nazwy użytkownika bez wiodącego%
  • Aby przetestować zmianę wizualizacji
    • sudo -k
    • sudo sui sprawdzić, czy poproszony o hasło. Następnie control-c bez podawania hasła
    • sudo discoveryutil mdnsactivedirectoryi sprawdź, czy nie masz pytania o hasło
  • Dodaj linię do ~ / .bash_profile sudo discoveryutil mdnsactivedirectory yes
  • Dodaj terminal do elementów logowania użytkownika
    • 10.10: Preferencje systemowe-> Użytkownicy i grupy, wybierz użytkownika
    • Przejdź do karty „Elementy logowania” i dodaj / Aplikacje / Narzędzia / Terminal
użytkownik97566
źródło
Jak to zrobić na stałe? Po ponownym uruchomieniu konieczne będzie ponowne wykonanie tego polecenia.
JoeriBe,
Wydaje mi się, że to nie działa, przynajmniej nie na lokalne nazwy hostów. Nadal muszę wpisać „ssh foo.bar.baz.com” zamiast „ssh foo.bar”, mimo że „.baz.com” jest na mojej ścieżce wyszukiwania.
Sigsegv
Nie powinieneś tutaj dodawać ~/.bash_profilemodyfikacji konfiguracji, którą należy wprowadzić na poziomie demona systemowego discoveryd.
dan
1

Niestety nie ma rozwiązania, ale odkryłem, że możesz przynajmniej sprawdzić konfigurację resolvera za pomocą 'discoveryutil', tak jak poniżej:

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

Najwyraźniej pierwszy program tłumaczący wyświetla listę domen wyszukiwania, chociaż wydaje się, że nie działa tak jak w wersjach OS X <10.10. Nie mam pojęcia, dlaczego istnieje drugi resolver bez wymienionej domeny wyszukiwania.

mdbraber
źródło
1

Oto zhakowane rozwiązanie przy użyciu lokalnego serwera nazw - działa dla mnie:

https://github.com/joedj/yosemite_dnsfix

joedj
źródło
1
Lepiej byłoby dodać rozwiązanie jako część odpowiedzi, w przeciwnym razie, jeśli łącze kiedykolwiek zniknie, odpowiedź stanie się bezużyteczna. Możesz edytować swój post, aby go dodać.
Tetsujin,