Pencarian Nama DNS (tadinya SSH) Tidak Berfungsi Setelah Snow Leopard Upgrade

14

Saya pikir ini dimulai dengan pembaruan Snow Leopard. Membersihkan direktori .ssh, masih mengalami masalah.

~: uname -a
Darwin california-example-com.local 10.0.0 Darwin Kernel Version 10.0.0: Jumat 31 Juli 22:47:34 PDT 2009; root: xnu-1456.1.25 ~ 1 / RELEASE_I386 i386

~: ssh -V
OpenSSH_5.2p1, OpenSSL 0.9.8k 25 Mar 2009

~: ls -l ~ / .ssh

~: nslookup nevada
Server: 10.94.62.3
Alamat: 10.94.62.3 # 53

Nama: nevada.example.com
Alamat: 10.94.62.3

~: ssh nevada
ssh: Tidak dapat menyelesaikan nama host nevada: nodename atau servname yang disediakan, atau tidak dikenal
Peter Cardona
sumber
Bisakah Anda ssh ke (a) nevada.example.com dan (b) 10.94.62.3?
Sven
2
Bisakah Anda ping nevada? Apa yang ditampilkan "ssh -v nevada"?
markdrayton
Pertanyaan aneh; Anda menggunakan Split DNS dan / atau ping nevada?
Chealion
Terima kasih atas tindak lanjutnya ... jawaban: ssh nevada.example.com = tidak ssh 10.94.62.3 = ya (dan harus mengonfirmasi kunci host karena saya telah membersihkan host yang dikenal) ping nevada = masalah resolusi nama telnet nevada (tho tidak menjalankan telnetd) = masalah resolusi nama Split DNS = tidak sengaja, tidak tahu apa itu :-) Dari panel pengaturan jaringan OS X, saya mendapatkan 10.94.62.3 sebagai server DNS yang terdaftar sebelum keduanya disediakan oleh ISP saya, dan example.com dalam daftar domain pencarian. Sistem lain di jaringan saya dapat menggunakan DNS secara normal untuk ssh ke nevada (dan lainnya).
Peter Cardona
maaf tentang kurangnya jeda baris dalam komentar di atas ...
Peter Cardona

Jawaban:

16

Saya mengalami masalah yang sama persis dan menemukan utas tentang Mac mini yang memiliki masalah DNS pada Diskusi Apple yang sangat membantu.

Inti dari masalah ini: mDNSResponder tampaknya sesekali mengubah urutan server DNS yang ditanyakannya dan jadi jika ia menanyakan server DNS ISP Anda terlebih dahulu, itu tidak akan mendapatkan catatan yang tepat (atau jika Anda menggunakan split DNS, Anda akan mendapatkan IP publik Anda).

Perbaikan terbaik untuk ini adalah untuk memastikan (seperti yang Anda lakukan) bahwa hanya server DNS yang diperlukan yang terdaftar dalam pengaturan DNS Anda. Ini mungkin perlu menghapus ISP server DNS dari DHCP Anda (seperti yang harus saya lakukan juga - semua permintaan diteruskan melalui server DNS lokal).

Alasan utilitas menyukai digdan nslookupakan berhasil seperti biasa adalah mereka menggunakan BIND dan /etc/resolv.confsecara langsung tidak seperti sistem operasi lainnya.

Untuk referensi di Snow Leopard cache DNS sekarang disimpan oleh mDNSResponder dan untuk menghapusnya Anda perlu me-restart proses menggunakan sudo killall -HUP mDNSResponder. Anda bisa mendapatkan lebih banyak info (logging, dump state internal, dll.) Dengan menggunakan berbagai flag pada killallperintah.

"sudo killall -USR1 mDNSResponder" to enable operation logging.
"sudo killall -USR2 mDNSResponder" to enable packet logging.
"sudo killall -HUP mDNSResponder" to clear the DNS cache.
"sudo killall -INFO mDNSResponder" to dump mDNSRepsonder's internal state.

Sumber: Snoop Dogg pada utas yang sama.

Chealion
sumber
Terima kasih, googling menuntun saya ke sini, ini memperbaikinya. "arp" melaporkan IP yang salah, menggali melaporkan "ip" yang benar. Tidak ada jumlah pembilasan dns yang diperbaiki sebelum saya mencoba ini. Saya mencatat bahwa saya harus menjalankan dscacheutil -flushcache juga. Saya juga menunjukkan bahwa router lokal dapat berperilaku aneh dan ISP kadang-kadang juga tidak adil dalam hal TTL.
Aitch
9

kami memiliki masalah seperti ini:

host example.com     <<< WORKED
ping example.com     <<< FAILED

Diselesaikan dengan sesuatu seperti ini:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Aplikasi pada Mac OS X tidak menggunakan mekanisme yang sama untuk DNS dengan "host / dig / nslookup".

Menggunakan "host / dig / nslookup" berguna untuk menentukan ini bukan masalah jaringan. Itu masalah dengan sistem lokal diselesaikan dengan perintah di atas.

Steve Harris
sumber
wow itu berhasil !!! Saya sudah mencari solusi di mana-mana !!!! saya baru saja akan memformat dan mengembalikan laptop saya, Anda menghemat banyak waktu! Terima kasih! maaf tapi saya tidak bisa memperbaiki :-( Catatan: DNS saya berhenti berfungsi setelah saya menjalankan Util OnyX, tidak tahu mengapa. Saya dapat menggunakan dig / nslookup tetapi tidak ada yang lain.
2

Saya pernah mengalami masalah yang sama ... Dan ketika me-restart mDNSResponder tampaknya "bekerja", me-restart beberapa kali setiap jam agak menyebalkan.

Jadi, untuk saat ini, saya telah "memecahkan" masalah dengan menjalankan dnsmasq secara lokal. Untuk melakukannya:

  • Bangun dnsmasq (unduh tgz dan makeatau brew install dnsmasq)
  • Masukkan ini ke dalam dnsmasq.conffile:
resolv-file = resolv.conf
pengguna = tidak ada
group = tidak ada
antarmuka = ​​lo0
ukuran cache = 1024
  • Masukkan ini dalam resolv.conffile yang ada di direktori yang sama dengan dnsmasq.conffile (nb: tidak /etc/resolv.conf ):
nameserver 8.8.8.8
nameserver 4.2.2.1
nameserver 4.2.2.2
  • Jalankan dnsmasqdengan sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf. Outputnya akan terlihat seperti:
...
dnsmasq: membaca resolv.conf
dnsmasq: using nameserver 4.2.2.1 # 53
dnsmasq: using nameserver 4.2.2.2 # 53
dnsmasq: using nameserver 8.8.8.8 # 53
dnsmasq: baca / etc / hosts - 6 alamat
  • Buka Preferensi Jaringan dan pastikan itu 127.0.0.1adalah satu-satunya server DNS (preferensi jaringan -> lanjutan -> DNS -> tambahkan 127.0.0.1)

Segala sesuatu harus mulai bekerja dengan baik lagi.

Setelah semuanya berfungsi, Anda dapat menjalankan dnsmasqtanpa opsi --no-daemondan --log-queries, sehingga akan dimulai di latar belakang dan Anda tidak perlu membuka jendela Terminal.

David Wolever
sumber
1

Saya perhatikan saya memiliki 10.94.62.3 dalam daftar server DNS (panel jaringan preferensi) diikuti oleh 2 dari ISP saya. Saya menghapus 2 lainnya, memaksa semua pencarian nama melalui 10.94.62.3 untuk Lokasi ini dan sekarang saya dapat menyelesaikan nama di jaringan saya dan juga di luar.

Tidak tahu mengapa ini berhasil.

Peter Cardona
sumber
1

Saya kira kita memiliki masalah yang sama, seperti yang saya jelaskan di sini: /apple/50457/nslookup-works-ping-and-ssh-dont-os-x-lion-10-7-3

Saya percaya, masalahnya terletak pada konfigurasi domain pencarian: ping / ssh mencoba menggunakan gethostbyname2()yang gagal karena nama tidak berjalan lagi (setidaknya di Lion) dan /etc/resolv.confdengan domain pencarian yang dikonfigurasi dengan demikian diabaikan. /etc/hostsadalah cara terakhir gethostbyname2()dan karenanya ssh bekerja lagi dengan entri yang tepat di /etc/hosts. Harus diperbaiki oleh Apple imho.

tholu
sumber
0

Sudahkah Anda mencoba nevada-example-com.local?

Jeremy L
sumber
Belum mencobanya, tetapi mendapat masalah resolusi yang sama. Mulai tampak seperti TIDAK ADA (ssh, telnet, ping, http) diselesaikan melalui server yang defaultnya adalah nslookup. Bagaimana bisa? Mungkin konflik antara pengaturan level OS X dan beberapa file / etc / apa pun yang peduli dengan implementasi BSD yang mendasarinya?
Peter Cardona
Tidak, OS X tidak menggunakan level init - bahkan sistem sistem BSD.
Jeremy L
0
dscacheutil -flushcache

Perintah itu menyegarkan cache DNS Anda.

Apakah 10.94.62.3 Server DNS yang Anda percayai? Jika demikian, mengapa hanya ada satu? Anda harus memiliki setidaknya 2 server DNS untuk merujuk untuk tujuan failover. Jika itu turun, Anda adalah bebek yang duduk.

churnd
sumber
0

Pencarian urutan DNS tampaknya bekerja secara berbeda di Snow Leopard. Jika Anda tidak dapat mencari domain, periksa untuk melihat apakah Anda memiliki server DNS tidak valid yang terdaftar di preferensi jaringan Anda. Jika Anda menggunakan pengaturan DHCP standar, maka Anda seharusnya tidak memiliki Server DNS yang terdaftar. Sebelum saya memutakhirkan, saya memiliki server DNS lama yang terdaftar, dan itu tidak mempengaruhi apa pun. Setelah saya upgrade saya benar-benar kehilangan dns.

Buka Preferensi Jaringan> Pilih Bandara> Tingkat Lanjut. Pilih tab DNS, dan hapus Server DNS apa pun yang tidak valid.


sumber
0

Sudahkah Anda melihat Konsol? (Aplikasi -> Utilitas -> Konsol) Anda mungkin menemukan bahwa mDNSResponder muncul di bawah: Informasi Diagnostik dan Penggunaan -> Laporan Diagnostik Sistem

Jika macet karena program lain yang memuat modul (seperti Little Snitch atau Hands Off), Anda mungkin melihatnya di sana.

jwilkins
sumber
-1

Saya memiliki masalah yang sama dengan nslookup menyelesaikan kotak windows saya, tetapi ping memberi saya "host tidak dikenal". Saya mencoba apa yang disarankan Navdeep dan pergi untuk membersihkan server nama di Network Preferences-> Advanced-> DNS tab. Itu tidak akan membiarkan saya mengurangi mereka, mereka berwarna abu-abu. Saya akhirnya menekan tanda + dan mereka menghilang. Saya membatalkan penambahan yang baru dan menerapkan perubahan, setelah tidak ada server DNS yang ditampilkan. Ping mulai bekerja setelah itu. Yang aneh adalah router / DHCP server lokal saya adalah yang pertama dalam daftar dan merupakan orang yang bertanggung jawab untuk menyelesaikan kotak Windows. Pasti ada yang aneh dengan pemesanan. Server nama lain yang tercantum, adalah NS yang berfungsi dan tidak akan dapat menyelesaikan host windows. TERIMA KASIH Navdeep!

Chris
sumber