Apa yang dapat menyebabkan pencarian DNS mengabaikan entri file host?

13

Saya mengalami masalah penyelesaian DNS yang memengaruhi kinerja situs web saya yang dihosting secara lokal saat menjelajahinya di mesin lokal saya. Jika saya melampirkan suffix DNS jaringan saya ke nama mesin lokal saya ketika saya pergi ke URL di browser saya, situs memiliki waktu muat yang mengerikan (100+ kali lebih lambat) daripada tanpa akhiran DNS.

Saya pikir saya bisa memperbaikinya dengan menggunakan file host saya untuk menghindari perlunya pencarian. Saya menambahkan entri ke file host saya seperti ini

127.0.0.1    myMachine.MyDnsSuffix

Tapi ini tidak mengubah waktu pemuatan, bahkan setelah reboot. Meskipun tidak penting untuk menyelesaikan masalah khusus ini, saya benar-benar ingin tahu mengapa ini terjadi.

Juga, ketika saya menjalankan nslookup di domain myMachine.MyDnsSuffix, saya perhatikan itu menggunakan server DNS jaringan saya untuk menemukan IP. Mungkinkah ini terkait dengan masalah saya atau apakah saya hanya salah memahami cara kerja nslookup?

Dan Herbert
sumber

Jawaban:

20

Saya percaya nslookup digunakan untuk menguji server DNS itu sendiri, bukan menggunakan file HOSTS Anda. http://support.microsoft.com/kb/200525 tampaknya menunjukkan hal yang sama.

Coba ping sederhana. Apakah ping myMachine.MyDnsSuffixtekad ke alamat loopback yang telah Anda tentukan dalam file HOSTS Anda?

Christopher Karel
sumber
Anda membuat poin bagus tentang nslookup. Saya baru saja mencoba ping myMachine.MyDnsSuffixdan diselesaikan ke IP saya di jaringan, tidak 127.0.0.1seperti yang ditentukan dalam file HOSTS saya.
Dan Herbert
Apa OS kamu? Saya pikir Windows7 dan mungkin Vista memiliki beberapa perlindungan UAC yang aneh pada file HOSTS. Apakah Anda yakin perubahan Anda menyimpan dengan benar?
Christopher Karel
OS saya adalah Windows XP. Perubahan tampaknya diselamatkan dengan benar.
Dan Herbert
Hmm ... tidak ada tanda pagar di awal entri HOSTS itu, kan? (yang akan membuatnya menjadi komentar) Dan Anda yakin itu ada di host C: \ Windows \ System32 \ drivers \ etc \? Bisakah Anda menambahkan entri boneka di sana, dan melihat apakah itu menyelesaikan seperti yang Anda tentukan?
Christopher Karel
3
Oh, dan jangan lupa untuk menghapus cache nama Anda. ipconfig /flushdns. Dan NetBIOS-cache juga: nbtstat -R. (Case sensitif di windows - WTF, mengapa?!?)
Christopher Karel
8

Pencarian DNS tidak menggunakan file host. Pernah.

adaptr
sumber
2
@ BartDeVos tidak, tidak salah. Pencarian host generik (yaitu gethostbyname()dapat pergi melalui file host, atau melalui DNS, tetapi pencarian khusus DNS (seperti yang dilakukan oleh nslookup) tidak akan menggunakan file host.
Alnitak
Yang mengatakan, gethostinfo / getaddrinfo (versi modern dari gethostbyname) adalah POSIX, dan belum tentu apa yang digunakan Windows.
adapttr
2

OK, pendekatan baru. Biarkan Anda menghapus cache IP dan NETBIOS Anda. ipconfig /flushdnsdan nbtstat -R. Kemudian jalankan sniffer paket seperti Wireshark, dan lakukan ping saat sedang berjalan.

Dari paket capture, kami ingin melihat apakah A) Ada permintaan DNS yang keluar, dan jika demikian, nama apa yang diminta. B) Jika ada permintaan NETBIOS keluar. Mungkin saja nama ini diselesaikan melalui NETBIOS dan bukan DNS yang tepat.

Jika kami tidak melihat salah satu di atas meskipun Anda membersihkan cache, kemungkinan nama tersebut ditarik dari host atau lmhosts.

Christopher Karel
sumber
1

Beberapa orang di forum web mengklaim bahwa membuat file host baru dan memulai kembali layanan klien DNS memperbaiki masalah, tetapi saya tidak yakin mengapa itu akan berhasil jika Anda sudah mencoba me-reboot.

Saya menyadari ini adalah sebuah kesimpulan panjang, tetapi tidak ada kata-kata yang berhubungan dengan Microsoft seperti MSDN, Microsoft, atau MSN dalam entri file host, bukan? Microsoft telah menulis dnsapi.dll untuk mengabaikan entri file hosts yang cocok dengan nama-nama tertentu. Sebagai contoh, jika saya menambahkan entri berikut, Windows melewatkannya dan menyelesaikan kedua nama host di entri menggunakan DNS:

127.0.0.1 www.microsoft.com www.mysite.com
terima kasih
sumber
Saya tidak memiliki hal-hal terkait microsoft di file HOSTS saya. Saya hanya memiliki beberapa domain uji internal yang ditugaskan. File HOSTS saya cukup mendasar.
Dan Herbert
Hmm menarik. Saya tahu bahwa mereka mengkodekan domain MS untuk mengabaikan HOSTSfile tersebut, tetapi bahkan domain non-MS akan diabaikan jika berbagi entri dengan domain MS? Itu hanya pemrograman yang buruk di pihak mereka. Ini jelas sesuatu yang harus diwaspadai jika “memperkecil” suatu HOSTSfile.
Synetech
0

Saat menggunakan nama DNS lengkap browser Anda mencoba untuk pergi melalui server proxy Anda - klik untuk IE .

File host atau urutan resolusi nama tidak ada hubungannya dengan masalah ini, dan luka bernanah di bagian belakang umat manusia yaitu file host harus diambil kembali dan ditembak dengan berisik.

Maximus Minimus
sumber
Saya tidak terhubung ke proxy.
Dan Herbert
1
@ mh: saya akan setuju dengan Anda tentang pemotretan host, selama server root mengizinkan saya untuk menambah / menghapus / mengedit catatan.
Ian Boyd
0

http://geekswithblogs.net/JanS/archive/2009/06/17/beware-of-spacing-in-windows7-hosts-file.aspx

Ini tampaknya menjadi penyebab sebenarnya. Serahkan pada Microsoft untuk tiba-tiba dan tanpa peringatan mengabaikan konvensi berusia 25 tahun.

Michael McNally
sumber
2
Harap sertakan inti jawaban / penyebab dalam jawaban Anda. Ini jauh lebih bagus daripada sekadar tautan.
Jacob
Berikut adalah bagian penting dari URL tertaut Namun, sepertinya tidak ada yang berhasil. Sampai saya melihat beberapa contoh lain host file yang diformat sebagai <ip address> <single space> <value>
Tun