Saya mencoba menggunakan nscd (Nameservices Cache Daemon) untuk melakukan cache DNS secara lokal sehingga saya dapat berhenti menggunakan Bind untuk melakukannya. Saya sudah memulainya dan ntpd tampaknya berusaha menggunakannya. Tetapi segala sesuatu yang lain untuk host tampaknya mengabaikannya. misal jika saya menggali apache.org 3 kali tidak satupun dari mereka akan menekan cache. Saya melihat statistik cache menggunakan nscd -g
untuk menentukan apakah sudah digunakan. Saya juga telah menaikkan level log debug untuk melihat apakah saya dapat melihatnya memukul dan kueri bahkan tidak menekan nscd.
nsswitch.conf
# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
publickey: files
hosts: cache files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: files
# End /etc/nsswitch.confenter code here
nscd.conf
#
# /etc/nscd.conf
#
# An example Name Service Cache config file. This file is needed by nscd.
#
# Legal entries are:
#
# logfile <file>
# debug-level <level>
# threads <initial #threads to use>
# max-threads <maximum #threads to use>
# server-user <user to run server as instead of root>
# server-user is ignored if nscd is started with -S parameters
# stat-user <user who is allowed to request statistics>
# reload-count unlimited|<number>
# paranoia <yes|no>
# restart-interval <time in seconds>
#
# enable-cache <service> <yes|no>
# positive-time-to-live <service> <time in seconds>
# negative-time-to-live <service> <time in seconds>
# suggested-size <service> <prime number>
# check-files <service> <yes|no>
# persistent <service> <yes|no>
# shared <service> <yes|no>
# max-db-size <service> <number bytes>
# auto-propagate <service> <yes|no>
#
# Currently supported cache names (services): passwd, group, hosts, services
#
logfile /var/log/nscd.log
threads 4
max-threads 32
server-user nobody
# stat-user somebody
debug-level 9
# reload-count 5
paranoia no
# restart-interval 3600
enable-cache passwd yes
positive-time-to-live passwd 600
negative-time-to-live passwd 20
suggested-size passwd 211
check-files passwd yes
persistent passwd yes
shared passwd yes
max-db-size passwd 33554432
auto-propagate passwd yes
enable-cache group yes
positive-time-to-live group 3600
negative-time-to-live group 60
suggested-size group 211
check-files group yes
persistent group yes
shared group yes
max-db-size group 33554432
auto-propagate group yes
enable-cache hosts yes
positive-time-to-live hosts 3600
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
persistent hosts yes
shared hosts yes
max-db-size hosts 33554432
enable-cache services yes
positive-time-to-live services 28800
negative-time-to-live services 20
suggested-size services 211
check-files services yes
persistent services yes
shared services yes
max-db-size services 33554432
resolv.conf
# Generated by dhcpcd from eth0
nameserver 127.0.0.1
domain westell.com
nameserver 192.168.1.1
nameserver 208.67.222.222
nameserver 208.67.220.220
sebagai jenis catatan saya menggunakan Arch Linux.
catatan: ini telah dipindahkan dua kali, saya tidak pernah tahu mengapa aplikasi, kecuali menggali, tidak memukul cache nscd, browser, IM, IRC, semua seharusnya, tetapi mereka tidak
sumber
Jawaban:
Alasan mengapa Anda melewatkan hit cache adalah karena menggali permintaan DNS secara langsung. Anda dapat mencoba dan melihat apakah cache berfungsi dengan
getent
perintah:Menjalankan DNS caching yang terpisah adalah ide yang bagus, tetapi Anda harus mempertimbangkan menjalankannya di tingkat jaringan jika memungkinkan. Jika setiap host menyimpan data secara terpisah, mereka masih akan menjalankan beberapa permintaan untuk host yang sama. Tembolok tunggal mengatasi masalah ini.
Nscd sendiri adalah daemon caching untuk fungsi NSS. Jadi fokusnya sedikit berbeda dari nameserver caching asli. Jadi, jika Anda hanya ingin server nama caching, gunakan sesuatu yang lain dari nscd. Jika sebaliknya Anda ingin melakukan cache hal-hal seperti nama pengguna dan data host bersama di luar sistem DNS normal, gunakan nscd.
Dan sebagai catatan, saya sudah cukup menyukai powerdns resolver (pdns-resolver).
sumber
Anda melewatkan konfigurasi host di nscd.conf. Saya memposting milik saya sebagai contoh:
Ini akan merusak beberapa hal. Informasi berikut ini dari paket Debian:
sumber
Saya tidak tahu banyak tentang nscd kecuali bahwa itu sering menyebabkan masalah dengan pencarian DNS yang saya selalu menonaktifkannya (atau setidaknya host lookup bagian dari itu). Nscd memungkinkan Anda mengatur nilai time-to-live dan saya tahu DNS berharap untuk "memiliki" nilai-nilai itu dan semua resolver menghormatinya. Anda dapat berakhir dengan hasil yang aneh jika TTL dalam DNS tidak dihormati. Rekomendasi saya adalah tidak menggunakan nscd untuk caching DNS. Sepertinya Anda sudah memiliki server nama caching yang berjalan di kotak lokal Anda, jadi tidak perlu melakukan cache DNS dua kali.
sumber
nscd benar-benar tidak dapat diandalkan untuk semuanya, bukan hanya DNS. Sebaiknya hindari kecuali Anda sangat membutuhkannya untuk beberapa alasan. Anda harus menggunakan daemon caching DNS yang dibuat khusus jika Anda ingin melakukan cache DNS secara lokal (yang merupakan ide bagus!).
Dua favorit saya adalah dnsmasq dan dnscache dari djbdns .
sumber
Jika ada caching DNS di Neraka, ini disediakan oleh nscd. Jangan. Menggunakan. Itu.
Hanya berbeda: pdnsd sebenarnya adalah pengganti yang sangat bagus. Atau unscd (digunakan secara default setidaknya di openSUSE).
sumber
pdnsd
bawah. Mungkin ini adalah tautan yang bagus: members.home.nl/parombouts/pdnsdSaya ingin menambahkan bahwa ketika Anda telah mengaktifkan berbagi statistik Anda tidak akan mencerminkan dengan benar:
host bersama ya
http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/
Saya tidak melihat orang lain menyebutkan ini dan saya butuh beberapa waktu untuk mencari tahu mengapa hit rate saya terus menunjukkan 0%
sumber