Saya menjalankan Ubuntu 10.04.2 LTS Desktop. Menjadi pengembang web, tentu saja saya membuat "me.com" di /etc/hosts
file saya . Sayangnya, resolusi nama saya keluar ke DNS sebelum memeriksa entri host lokal saya dan saya tidak tahu mengapa.
Hasil akhirnya adalah jika /etc/resolv.conf saya berisi nameserver 127.0.0.1
di sana terlebih dahulu, maka saya mendapatkan respons kembali di browser web saya dari me.com (lokal) dalam waktu kurang dari satu detik. Tetapi jika saya tidak memiliki entri itu, maka respons saya kadang-kadang memakan waktu hingga 5 detik jika ISP saya agak lambat.
Masalahnya sangat merepotkan sehingga saya benar-benar harus mengajukan pertanyaan di sini (dan seseorang mengatasinya) untuk cara memasukkan entri itu ke dalam secara otomatis /etc/resolv.conf
. Tetapi salah satu pengguna (@shellholic) di sini sangat merekomendasikan (dan berkomentar bolak-balik dengan saya tentang hal itu) bahwa saya harus mengajukan pertanyaan ini.
Apakah Anda tahu mengapa resolusi nama workstation saya harus menekan server DNS terlebih dahulu sebelum memukul /etc/hosts
entri file saya ? Untuk saat ini, saya menggunakan trik resolv.conf .
sumber
/etc/nsswitch.conf
. Entri pada sistem saya sedikit tidak jelas, tetapi Anda bisa menguji pencarian dengan hanyafiles
sebagai opsi dan melihat apakah itu membuat perbedaan.cat /etc/nsswitch.conf
dancat /etc/host.conf
? Juga: bagaimana Anda menguji ini (melalui ping, browser, packet sniffing dll)?time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts
. Jangan ragu untuk mengaburkan rasionalitas.Jawaban:
File
/etc/nsswitch.conf
akan memungkinkan Anda mengkonfigurasi ulang urutan resolusi nama. Secara default, file host adalah yang pertama, lalu DNS yang dikonfigurasi. Mungkin ada lebih banyak opsi.File
/etc/hosts
hanya mencantumkan alamat IP dan nama host (beberapa nama untuk satu IP jika Anda mau)File
/etc/resolv.conf
akan mencantumkan domain pencarian default, dan juga akan mencantumkan secara berurutan nama server yang akan digunakan.sumber
nscd
dapat men-cache permintaan resolusi nama, tetapi tidak menghormati ttl (dan karenanya caching host dinonaktifkan secara default).systemd-resolved
juga akan me-cache entri. Jika tidak ada yang dikonfigurasikan, host Linux tidak melakukan cache tanggapan DNS . (Peramban sepertinya melakukannya di lapisan aplikasi)