Permintaan DNS tidak menggunakan nscd untuk caching


10

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 -guntuk 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


Anda tidak perlu me-reboot mesin untuk ncsd, Anda dapat menyiramnya atau me-restart layanan, bekerja untuk saya.

Jawaban:


14

Alasan mengapa Anda melewatkan hit cache adalah karena menggali permintaan DNS secara langsung. Anda dapat mencoba dan melihat apakah cache berfungsi dengan getentperintah:

getent hosts host.example.com

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).


tetapi bukankah hal-hal lain selain penggalian tampaknya menggunakannya? ini adalah sistem desktop. Saya tahu bahwa beberapa perangkat lunak (seperti manajer paket saya) tidak menerapkan cache sendiri.
xenoterracide

Juga di luar ISP saya, ini adalah satu-satunya komputer di jaringan;) Saya hanya mencoba menghindari latensi karena koneksi saya lambat.
xenoterracide

2
Perangkat lunak lain memang harus menekan cache nscd. Pastikan Anda me-restart perangkat lunak setelah memulai nscd.

Saya reboot sistem .... hanya perangkat lunak yang tampaknya mencoba menggunakan nscd adalah ntp.
xenoterracide

3

Anda melewatkan konfigurasi host di nscd.conf. Saya memposting milik saya sebagai contoh:

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

Ini akan merusak beberapa hal. Informasi berikut ini dari paket Debian:

  Since this release, hosts caching in nscd is off by default: for some of the
  libc calls (gethostby* calls) nscd does not respect the DNS TTLs.  It can
  lead to system lockups (e.g. if you are using pam-ldap and change the IP of
  your authentication server) hence is not considered safe.

  See debian bug #335476 and how upstream answered to that in
  http://sourceware.org/bugzilla/show_bug.cgi?id=4428.

 -- Pierre Habouzit <madcoder@debian.org>  Sat, 28 Apr 2007 11:10:56 +0200

2
sebenarnya saya punya ini, Anda hanya perlu menggulir file dalam pertanyaan.
xenoterracide

2

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.


Saya berharap untuk menonaktifkannya, meskipun itu tidak terlalu penting (kotak saya sangat kuat sehingga berat ikatan untuk caching tidak menjadi masalah). Ini sebagian masalah sekarang hanya belajar sesuatu yang baru. Tidak bisa menjalankannya sedikit mengganggu.
xenoterracide

1

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 .


Untuk menggunakan nscd, Anda harus terlebih dahulu memahami cara kerjanya, bahwa ini adalah sistem cache sistem, bukan daemon cache dns polos
higuita

1

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).


Beri ini +1. Untuk jaringan kecil NSCD, atau tempat-tempat dengan server DNS yang mengerikan, ini adalah PITA yang serius. Ini harus menjadi salah satu alasan paling sering saya melihat "pemula" me-reboot server Linux & Solaris di tempat saya pernah bekerja.
Signal15

1
tautan ke pdnsdbawah. Mungkin ini adalah tautan yang bagus: members.home.nl/parombouts/pdnsd
Ehtesh Choudhury

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.