Bagaimana DNS digunakan oleh proses individual?


6

Saat menyelesaikan FQDN atau nama mesin ke alamat IP di jaringan lokal saya (mycompany.internal) saya bisa menggunakan menggali di baris perintah (linux / mac) atau nslookup (windows) untuk meminta server yang dikonfigurasi dan mendapatkan respons. Tetapi mencoba memasukkan FQDN atau bahkan hanya nama mesin dalam perintah ping atau dalam browser web menghasilkan kesalahan 'Host Tidak Dikenal' atau DNS. Ini contohnya, ini dari Mac:

mac:~ atroon$ dig server.mycompany.internal


; <<>> DiG 9.6.0-APPLE-P2 <<>>
server.mycompany.internal ;; global
options: +cmd ;; Got answer: ;;
->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5219 ;; flags: qr aa rd
ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0,
ADDITIONAL: 0

;; QUESTION SECTION:
;server.mycompany.internal.  IN A

;; ANSWER SECTION:
server.mycompany.internal. 1200 IN A 172.16.254.36

;; Query time: 0 msec ;; SERVER:
172.16.254.8#53(172.16.254.8) ;; WHEN: Wed Dec 16 11:39:15 2009 ;; MSG SIZE 
rcvd: 55

mac:~ atroon$ ping server.mycompany.internal<br>
ping: cannot resolve server.mycompany.internal: Unknown host

Saya tidak bisa seumur hidup saya mencari tahu hal ini. Server DNS adalah kotak SBS 2003 yang menangani AD, beberapa file / cetak, dll untuk jaringan perusahaan kecil. Masalah ini terjadi pada saya sekitar tiga kali seminggu, dan ketika saya terhubung ke jaringan lokal secara langsung, saklar yang sama seperti server genap. Saya dapat membuat koneksi yang saya inginkan dengan alamat IP, saya hanya tidak bisa membuat DNS berfungsi. Selain itu, pada saat yang sama saya mengalami ini, pengguna lain baik-baik saja, yang membuat saya berpikir itu masalah pada Mac saya. Tapi masalah macam apa? Bagaimana cara menggali mengirim kueri dan mendapatkan balasan, dan ping mengatakan 'host tidak dikenal'?

Saya memposting di sini vs serverfault karena saya pikir ini adalah masalah lokal bukan masalah server ... tetapi jika ada yang bisa mengarahkan saya ke server, saya kira kita akan menuju jalan satu atau dua domain.


Apa versi Mac OS X? Versi yang berbeda memiliki metode yang berbeda untuk menghapus cache DNS. . (misalnya 10.4 memiliki lookupd, 10,5 DNS disimpan dengan Layanan Direktori Informasi, sedangkan 10,6 itu dikelola melalui mDNSResponderuntuk sebagian besar item.
Chealion

Jawaban:


12

Tergantung pada versi Mac OS X Anda menggunakan cara DNS ditangani oleh sistem telah berubah.

Pada dasarnya ada dua mekanisme penyelesaian DNS di Mac OS X. Pendekatan UNIX standar ( /etc/resolv.conf) yang digunakan oleh digdan kemudian pendekatan yang digunakan oleh seluruh sistem.

Dalam Mac OS X 10.4 dan 10.5 kedua pendekatan itu lebih erat diikat bersama; menyegarkan satu cenderung menyegarkan keduanya. Namun dalam 10.6 dan pada tingkat yang jauh lebih rendah 10.5 dimungkinkan untuk digmemberi Anda nilai yang tepat sementara mekanisme penyelesaian sistem masih memiliki nilai buruk.

Untuk membersihkan cache DNS untuk masing-masing versi Mac OS X:

  • 10.4: lookupd -flushcache
  • 10.5: dscacheutil -flushcache
  • 10.6: sudo dscacheutil -flushcacheatau sudo killall -HUP mDNSResponder(Perintah pertama harus melakukan perintah kedua untuk Anda sekarang, tetapi dalam versi 10.6 yang lebih lama tidak muncul)

pingjika saya ingat menggunakan sistem pencarian - mekanisme penyelesaian sangat berbeda. /etc/resolv.confakan selalu menggunakan server DNS secara berurutan, sedangkan mDNSRespondermencoba menjadi 'pintar' yang dapat menggigit Anda di belakang tergantung pada pengaturan Anda.

Juga, apakah Anda memiliki beberapa server DNS yang ditentukan pada Mac Anda dan / atau melalui DHCP? Snow Leopard telah memperkenalkan perilaku berbeda (bug?) Di mana urutan server DNS akan berubah. Ini memainkan malapetaka pada DNS split (secara internal Anda menggunakan satu IP, tetapi secara eksternal yang berbeda) karena ada kalanya ia akan berhenti menanyakan server DNS internal terlebih dahulu sebelum menanyakan server kedua (eksternal kali ini) sejalan. Ini seharusnya merupakan metode untuk menghubungi server DNS tercepat untuk menghindari keterlambatan terkait DNS. Perbaikan termudah sebelum 10.6.3 adalah hanya melayani server DNS internal melalui DHCP dan pastikan pengaturan penerusan Anda pada server DNS diatur sesuai.

Sekarang pada 10.6.3 dimungkinkan untuk memberi tahu mDNSResponder untuk selalu menggunakan urutan yang tepat dan tidak mencoba dan mengoptimalkan waktu permintaan DNS. Anda dapat melakukan ini dengan menambahkan kunci StrictUnicastOrderingdan menyetelnya ke true ke plist Daemon Launch mDNSResponder (dan muat ulang seperlunya).

Di Mac OS X v10.6, perilaku pencarian server DNS default adalah bahwa ketika server tidak mengembalikan hasil (mengembalikan SERV_FAIL untuk kueri), dan server lain tersedia untuk kueri, server dinonaktifkan untuk sementara dalam urutan pencarian untuk sekitar tiga puluh detik. Jika ada lebih dari satu server untuk permintaan dan semuanya telah mengembalikan SERV_FAIL, server akan ditanyai dalam urutan bahwa mereka dinonaktifkan (yaitu, server yang telah dinonaktifkan paling lama akan digunakan terlebih dahulu).

(Sumber: support.apple.com dan terima kasih kepada Yar yang memasang ini sebelum saya melakukannya.)

Anda dapat mengotomatiskan ini (sedikit lebih cepat dan lebih mudah daripada perintah Apple) dengan menjalankan perintah berikut:

sudo /usr/libexec/PlistBuddy -c "Add :StrictUnicastOrdering bool true" /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

dan balikkan dengan menjalankan:

sudo /usr/libexec/PlistBuddy -c "Delete :StrictUnicastOrdering" com.apple.mDNSResponder.plist

Setelah salah satu atau Anda harus memuat ulang pekerjaan di launchd untuk me-restart mDNSResponder dengan menjalankan:

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


Upgrade Snow Leopard Bodoh .... Aku bersumpah itu rusak lebih banyak hal. Penerusan memang diatur dengan benar tetapi ada string server DNS lain yang datang dari server DHCP ditambahkan lama dengan server DNS ISP. Ketika DHCP diperbarui, muncul di /etc/resolv.conf, dan masalahnya muncul kembali. Menghapus ini di server memperbaiki masalah. Jadi, itu adalah masalah klien dengan solusi server berkat Snow Leopard. Tangkapan yang sangat bagus, terima kasih.
atroon

@atroon - Butuh waktu 2 atau 3 hari untuk mencari tahu mengapa komputer uji Snow Leopard saya kadang-kadang benar-benar panik ketika datang ke DNS. Ini adalah perubahan yang sangat baik untuk pengguna rumahan, tetapi tidak bermain bagus dengan DNS split. Berharap itu lebih banyak didokumentasikan.
Chealion

Jadi ketika situasi DNS Anda serba salah, Anda cukup me-restart nDNSResponder, atau itu tidak membantu?
Dan Rosenstark

@Yar: Terkadang itu akan membantu tetapi itu tidak memperbaiki akar masalah: Jika Anda memerlukan DNS internal, Anda seharusnya tidak memiliki server DNS eksternal dalam pengaturan Anda (melalui DHCP atau secara manual).
Chealion

lihat jawaban baru saya di bawah ini. Meskipun aku yakin kamu sudah tahu tentang itu.
Dan Rosenstark

3

Akhirnya, perbaikan berkat 10.6.3 dan sedikit mengutak-atik . Pada dasarnya Anda memodifikasi com.apple.mDNSResponder.plistdan kemudian restart dnsresponder.

Saya bisa saja salah, tetapi saya pikir instruksinya tidak aktif, dan harus mengatakan di sudo cpmana mereka mengatakan sudo mvdi awal.


1

Lihat apa yang ada di dalam /etc/resolv.confuntuk melihat server nama yang digunakan Mac Anda. Anda juga dapat menambahkan server nama di preferensi jaringan - pilih adaptor yang Anda gunakan, klik tombol "Advanced ..." dan kemudian klik pada tab "DNS".

Pada mac alat baris perintah untuk menyiram cache DNS adalah:

dscacheutil -flushcache

Perbarui :

Saya menemukan banyak hal bagus di utas ini di diskusi.apple.com . Sebagai contoh:

dig (1) (dan host (1) dan nslookup (1)) semuanya langsung menggunakan resolver DNS dan dengan demikian pemesanan server DNS seperti yang ada di /etc/resolv.conf.

Namun, ping (8) menggunakan sistem resolusi nama Mac OS X internal yang menggunakan "klien pencarian DNS super" yang menggunakan hasil yang dapat didaftarkan melalui scutil --dns untuk memesan permintaan.

Anda dapat melihat apa yang telah di-cache dengan menjalankan sudo killall -INFO mDNSResponderdan kemudian melihat ke dalam/var/log/system.log


Saya mencoba ini hari lain (berkali-kali) tetapi tidak berhasil. Resolv.conf saya memiliki pemberitahuan standar tentang yang dibuat secara otomatis dan cocok dengan pengaturan jaringan di System Preferences. Ini memiliki server nama 172.16.254.8.
atroon

0

Sebagian besar aplikasi akan bergantung pada layanan Klien DNS (well, mereka bergantung pada OS yang menggunakan layanan ...) - Saya akan memeriksa ulang apakah masih berjalan. Mungkin bahkan me-restart layanan ketika Anda mengalami masalah.

Anda juga dapat mencoba membersihkan cache DNS Anda, tetapi perlu diketahui bahwa beberapa aplikasi (khususnya browser web) akan men-cache entri DNS secara internal, jadi Anda mungkin perlu me-restart mereka juga.

ipconfig /flushdns

Terakhir, ada kemungkinan malware menyebabkan hal-hal menjadi berantakan. Banyak malware akan membajak DNS atau host tertentu. Mungkin perlu memeriksa itu juga.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.