Saya menggunakan pfSense 2.0rc3, dan saya telah mengaturnya sebagai DNS forwarder dan mengaktifkan "Daftarkan DHCP sewa dalam DNS forwarder" dan apa yang saya pahami adalah semua pengaturan yang sesuai untuk mendapatkan server DNS untuk pencarian lokal.
Ini berfungsi seperti yang diharapkan dengan Linux dan khususnya saya dapat menjalankan host abc
dan ping abc
(dan aplikasi lain) dan semuanya bekerja seperti yang diharapkan.
Namun di Mac OS X Lion 10.7 tidak berfungsi seperti yang diharapkan. Secara khusus, hanya pencarian dengan host
perintah yang tampaknya berfungsi, yaitu
$ ping abc
ping: cannot resolve abc: Unknown host
$ host abc
abc.local has address 192.168.1.128
$ ping abc.local
ping: cannot resolve abc.local: Unknown host
$ host abc.local
abc.local has address 192.168.1.128
Mengapa pencarian abc
bekerja ketika menggunakan host
perintah tetapi gagal dengan ping
(dan aplikasi lain)?
Terima kasih sudah membaca.
Jawaban:
Mengapa mereka membuat perubahan ini, saya tidak tahu, tapi itu membuat saya gila untuk sementara waktu.
Saya tidak tahu mengapa semuanya berfungsi untuk host, tetapi tidak ping, tapi saya pikir itu ada hubungannya dengan sifat kedua utilitas ini. Ping adalah utilitas diagnostik yang sederhana (meskipun sangat membantu) untuk menjatuhkan paket pada kabel yang harus digaungkan kembali kepada Anda. Fungsionalitas pencarian hostname hanyalah efek samping dari pekerjaan dan diserahkan ke penyelesai rekursif sistem (saya percaya - saya belum memverifikasi dengan memeriksa pustaka terkait atau semacamnya). Tugas utama host adalah melakukan resolusi nama DNS, sehingga mengimplementasikan resolur rekursifnya sendiri.
Penyelesai rekursif Apple adalah mDNSResponder. Untuk beberapa alasan, versi mDNSResponder di Lion membutuhkan opsi baris perintah "-AlwaysAppendSearchDomains" untuk berperilaku seperti yang terjadi pada Snow Leopard (setidaknya).
Berikut cara cepat untuk memperbaikinya:
(Seharusnya ada dua karakter tab di awal baris kedua hingga terakhir di atas, tapi saya tidak tahu cara mendapatkan editor kecil ini untuk menyisipkan tab, jadi saya menambahkan 16 spasi. Baik harus berfungsi, tetapi tab lebih sesuai dengan jarak file asli.)
Ini akan menambahkan argumen "-AlwaysAppendSearchDomains" ke file plist startup mDNSResponder (dan menyimpan salinan cadangan), tetapi karena ini dikendalikan oleh launchd, sistem itu perlu diberitahu untuk me-restart mDNSResponder.
Sekarang, jika Anda memeriksa proses mDNSResponder Anda berjalan, Anda akan melihatnya berjalan dengan argumen baru Anda:
(Props untuk http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.html dan http://kavassalis.com/2011/07/wtf-bug -in-os-x-10-7 / , di mana saya menemukan jawaban saya untuk masalah ini.)
sumber
sudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array-add "–AlwaysAppendSearchDomains"
Dari halaman manual host (1):
Sayangnya, tidak ada informasi tentang bagaimana tepatnya perintah host menyelesaikan nama host. Perilaku ini membuatnya agak tidak berguna untuk debugging, IMHO.
sumber
Sejarah dasar ... nslookup adalah perintah, tetapi ia memiliki implementasi sendiri dari semua rutin resolver itu. Apa yang mulai terjadi adalah bahwa resolver sistem pada platform yang berbeda bekerja secara berbeda dari nslookup. Terkadang, ini akan menghasilkan beberapa hasil yang agak berbeda.
Perintah host dan dig dibuat sebagai "menulis ulang" untuk nslookup. Mereka secara statis menghubungkan fungsi-fungsi penyelesai sistem. Pemecah masalah sistem adalah kumpulan fungsi dalam pustaka C standar sistem mirip UNIX atau UNIX (pada Mac OS X, fungsi-fungsi ini adalah bagian dari pustaka netdb). Dengan melakukan ini, perintah host dan dig selalu berfungsi dengan cara yang sama seperti yang dilakukan resolver sistem untuk OS apa pun yang mereka bangun, tetapi mereka tidak bergantung padanya. Dengan cara ini, mereka adalah alat diagnostik yang sangat baik dalam kasus di mana resolver sistem tidak berfungsi.
CATATAN: Tuan rumah dan gali keduanya membaca daftar server nama dari /etc/resolv.conf kecuali mereka diberikan server nama tertentu untuk diajak bicara. Hanya perintah host yang menggunakan daftar pencarian di file /etc/resolv.conf; penggalian tidak, itu sebabnya seseorang harus selalu memberikan menggali FQDN untuk menyelesaikan apa pun. Kedua perintah itu sepenuhnya mandiri; misal, file /etc/resolv.conf adalah satu-satunya yang tidak ada dalam file biner yang mereka gunakan.
mDNSresponder adalah Bonjour. Saya belum menggali terlalu dalam, tapi saya curiga bahwa pengaturan konfigurasi ini tidak memperbaiki ini atau setidaknya, tidak secara langsung. Saya baru saja mengalami masalah yang sama pada Mac OS X 10.9.1 dan hanya me-restart mDNSresponder memperbaikinya untuk saya. Saya belum pernah melihat masalah ini sebelumnya pada 10.5 -> 10.8 / 10.9 pada sistem lain. Juga, aplikasi GUI tidak terpengaruh olehnya, itu hanya alat-alat baris perintah, seperti ping dan ssh yang rusak.
Jika saya menemukan waktu untuk menggali perpustakaan sedikit lebih banyak, saya akan melihat apakah saya dapat menemukan penjelasan yang lebih lengkap.
sumber
Saya telah membuat skrip shell untuk mengotomatisasi perbaikan (dan uninstaller jika Anda membutuhkannya nanti), di sini:
https://github.com/michthom/AlwaysAppendSearchDomains
Ini untuk diberikan kepada pengguna yang kurang teknis di tempat kerja yang mungkin menghindar dari mengedit file sistem secara manual.
sumber
.local dicadangkan untuk multicast. server mDNS dan DNS di jaringan yang sama menggunakan .local bisa bermasalah.
sumber
Host menambahkan sufiks .local dns. Ping tidak. Jika Anda menemukan ini membingungkan, Anda dapat menambahkan .local sebagai akhiran default dalam preferensi sistem jaringan dan sistem akan menambahkan bahwa ketika mencoba untuk menyelesaikan nama host.
sumber
ping abc.local
tidak berhasil juga (meskipunhost abc.local
demikian). Saya sudah memperbaiki pertanyaannya. pfSense secara otomatis menambahkan domain lokal sebagai domain pencarian ketika mengirimkan sewa DHCP, sehingga tidak akan menjadi masalah.ping abc.local.
Dalam kasus Anda mencoba semua di atas dan tidak ada yang berhasil maka Anda dapat menambahkan Anda nameserver dan mencari jalan untuk
System Preferences>Network>Advance(bottom right of the window)>DNS tab
Pembaruan /etc/resolv.conf dan ping ini sekarang akan berfungsi. Memperbarui jalur pencarian dengan mengedit /etc/resolv.conf tidak benar-benar berfungsi tetapi ini terjadi karena beberapa alasan.
MEMPERBARUI:
Mengedit /etc/resolv.conf tidak berfungsi karena OS menulis ulang file berdasarkan pengaturan panel Preferensi Sistem.
sumber
Saya kurang memiliki reputasi yang cukup untuk mengomentari posting Lamont Peterson . Restart mDNSresponder bekerja untuk saya di Mac OS X 10.7 (Lion). Tidak seperti Lamont Peterson, masalah ini menyebabkan masalah dengan satu aplikasi GUI untuk saya - Safari tidak dapat menyelesaikan nama host publik atau pribadi. Berikut adalah langkah-langkah khusus yang saya lakukan dan saya curiga Lamont Peterson juga melakukannya:
The
unload
Menutup Down mDNSResponder danload
mulai itu lagi.Ini segera menyelesaikan masalah; tidak perlu reboot.
Anda dapat memeriksa apakah telah berhasil dimulai kembali dengan menggunakan
list
perintah:Kehadiran ID Proses (PID) berarti sedang berjalan.
708
akan bervariasi karena ditugaskan oleh OS. Jika status menunjukkan sesuatu selain tanda hubung atau nol, ada yang salah.Saya tidak tahu bagaimana
mDNSResponderHelper
berinteraksi denganmDNSResponder
; Saya hanya perlu me-restartmDNSResponder
.sumber
Dalam satu baris:
sumber
mohon dicatat pada nama OSX bisa non-standar, jadi untuk kelengkapan:
Nama Mac TIDAK secara umum: dua perbaikan harus dilakukan: a) ubah spasi menjadi "-" b) tambahkan .local
jadi misalnya Mac saya: ingconti's MacBook Pro
akan ping di: ingcontis-MacBook-Pro.local
Dan pembukaan prefs bisa Anda lihat:
sumber