Discoveryd Alternatif untuk Mengganti Argumen mDNSResponder?

13

Ini adalah tindak lanjut langsung ke pertanyaan ini . Sebelum Yosemite , saya akan menambahkan argumen "-AlwaysAppendSearchDomains" ke file plist mDNSResponder sehingga semua pencarian resolver lokal menambahkan domain pencarian, terlepas dari apakah ada periode pada label yang akan dicari. Misalnya, apakah saya mencoba ssh ke hostname foo.bar atau foo, domain pencarian baz.com harus dicoba, tidak hanya untuk kasus terakhir, seperti (dan) perilaku default.

Sekarang, sepertinya mDNSResponder hilang, diganti dengan discoveryd. Saya tidak dapat menemukan opsi serupa untuk mendapatkannya agar selalu menambahkan domain pencarian. Saran? Saya lebih suka tidak menggunakan rute resolver lokal non-default, tapi saya akan menganggapnya sebagai opsi. Untuk saat ini, saya cukup mengetikkan FQDN yang panjang, tapi saya lebih suka tidak.

Terima kasih, Pete

Sigsegv
sumber
Saya sebelumnya telah mencoba untuk mengaktifkan mDNSResponder yang dinonaktifkan tetapi sejak DP8, yang tampaknya tidak ada sama sekali :( Saya punya tiket dukungan yang ditingkatkan ke insinyur Yosemite sekarang tentang opsi -AlwaysAppendSearchDomains dan bagaimana menangani hal ini dengan discoveryd jadi saya akan memposting lebih lanjut temuan di sini ketika mereka menghubungi saya dalam beberapa hari
djh
@ Djh, beruntung dengan insinyur Apple?
Sigsegv
Ini adalah tetap sebagai bagian dari 10.10.1 update: Allows you to append search domains for partially qualified domain names when performing DNS lookups (consult the discoveryd man page for more information). Lihat jawaban @ Teknisten di bawah ini.
cOle2
Ini tampaknya kurang relevan pada versi MacOS yang lebih baru karena mereka telah menghapus discoveryd di 10.10.4 macrumors.com/2015/06/30/apple-releases-os-x-10-10-4
Scott Willeke

Jawaban:

18

Sejak 10.10.1, cara paling sederhana untuk memperbaiki ini adalah untuk menambahkan --AlwaysAppendSearchDomainske ProgramArgumentsdalam file plist/System/Library/LaunchDaemons/com.apple.discoveryd.plist

Kemudian mulai kembali com.apple.discoveryd.plistdengan:

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

Semua ini sesuai dengan bantuan yang dicetak oleh:

/usr/libexec/discoveryd --help

Itu akan melakukan hal yang sama seperti yang dilakukan untuk mDNSResponder sejauh yang saya tahu.

Teknisten
sumber
Sayangnya tidak bekerja di El Capitan.
Dmitry Verkhoturov
4

Jalankan sudo discoveryutil mdnsactivedirectory yes di Terminal. Menurut https://discussions.apple.com/message/26927843#26927843 itu adalah solusinya.

Ini dapat dilakukan untuk berjalan secara otomatis setiap kali meluncurkan terminal tanpa kata sandi:

  • sudo visudo
    • tambahkan baris ke bawah %admin ALL=NOPASSWD: /usr/sbin/discoveryutil
    • Jika grup admin tidak berfungsi, jalankan groupsdi terminal dan gunakan grup yang sesuai - mungkin 'staf' atau 'semua orang'. Atau cukup gunakan nama pengguna individual tanpa yang memimpin%
  • Untuk menguji perubahan visudo
    • sudo -k
    • sudo sudan memverifikasi bahwa Anda sedang diminta untuk password. Kemudian kontrol-c tanpa memasukkan kata sandi Anda
    • sudo discoveryutil mdnsactivedirectorydan verifikasi bahwa Anda tidak dimintai kata sandi
  • Tambahkan baris ke ~ / .bash_profile sudo discoveryutil mdnsactivedirectory yes
  • Tambahkan Terminal ke Item Login pengguna Anda
    • pada 10.10: System Preferences-> Users & Groups, Pilih Pengguna
    • Buka tab "Item Login", dan tambahkan / Aplikasi / Utilitas / Terminal
pengguna97566
sumber
Bagaimana Anda menjadikan ini permanen? Setelah reboot, Anda perlu menjalankan perintah ini lagi.
JoeriBe
Ini sepertinya tidak berfungsi untuk saya, setidaknya wrt nama host non-lokal. Saya masih perlu mengetikkan "ssh foo.bar.baz.com" alih-alih "ssh foo.bar", meskipun ".baz.com" ada di jalur pencarian saya.
Sigsegv
Anda tidak boleh menambahkan ~/.bash_profilemodifikasi konfigurasi pada pengguna yang harus dibuat pada tingkat daemon sistem, di sini discoveryd.
dan
1

Sayangnya tidak ada solusi, tetapi saya tahu Anda setidaknya dapat memeriksa konfigurasi resolver menggunakan 'discoveryutil', seperti:

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

Rupanya resolver pertama mendaftar domain pencarian, meskipun sepertinya tidak berfungsi seperti di bawah versi OS X <10.10. Tidak tahu mengapa ada resolver kedua tanpa domain pencarian terdaftar.

mdbraber
sumber
1

Berikut adalah solusi yang diretas menggunakan server nama lokal - berfungsi untuk saya:

https://github.com/joedj/yosemite_dnsfix

joedj
sumber
1
Akan lebih baik untuk menambahkan solusi sebagai bagian dari jawaban, jika tidak jika tautannya hilang, jawabannya menjadi tidak berguna. Anda dapat mengedit posting Anda sendiri untuk menambahkannya.
Tetsujin