Nscd(ネームサービスキャッシュデーモン)を使用してDNSをローカルにキャッシュしようとしているので、バインドの使用をやめることができます。私はそれを始めました、そしてntpdはそれを使用しようとするようです。しかし、ホストの他のすべてはそれを無視しているようです。たとえば、Apache.orgを3回Digした場合、どれもキャッシュにヒットしません。 nscd -g
を使用してキャッシュの統計情報を表示し、それが使用されているかどうかを確認しています。また、デバッグログレベルを上げて、それがヒットし、クエリが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
私はArch Linuxを使用しています。
注:これは2回移動されました。Digを除くアプリがnscdキャッシュ、ブラウザー、IM、IRCにヒットしなかった理由はわかりませんでしたが、実際にはそうではありませんでした
キャッシュヒットが見当たらない理由は、DigがDNSを直接クエリするためです。キャッシュがgetent
コマンドで機能するかどうかを確認できます。
getent hosts Host.example.com
別のキャッシュDNSを実行することは良い考えですが、可能であればネットワークレベルで実行することを検討する必要があります。各ホストがデータを個別にキャッシュする場合でも、同じホストに対して複数のクエリを実行します。シングルキャッシュはこの問題を回避します。
Nscd自体はNSS機能のキャッシュデーモンです。したがって、焦点はネイティブキャッシングネームサーバーとは少し異なります。したがって、キャッシングネームサーバーだけが必要な場合は、nscd以外のものを使用してください。代わりに、通常のDNSシステムの外部にある共有ユーザー名やホストデータなどをキャッシュしたい場合は、nscdを使用してください。
そして、記録のために、私はpowerdnsリゾルバー(pdns-resolver)がかなり好きになりました。
Nscd.confにホスト構成がありません。私は例として私のものを投稿しています:
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
これはいくつかのことを壊します。次の情報は、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 <[email protected]> Sat, 28 Apr 2007 11:10:56 +0200
Nscdについてはあまりよくわかりませんが、DNSルックアップで頻繁に問題が発生し、常に無効にしていた(または少なくともホストルックアップの一部である)ことがよくありました。 Nscdを使用すると、存続時間の値を設定できます。DNSがこれらの値を「所有」し、すべてのリゾルバーにそれらを尊重させることを期待していることを知っています。 DNSのTTLが守られない場合、奇妙な結果になる可能性があります。 DNSのキャッシュにnscdを使用しないことをお勧めします。ローカルボックスで既にキャッシュネームサーバーが実行されているようです。DNSルックアップを2回キャッシュする必要はありません。
nscdは、DNSだけでなく、すべてに対して本当に信頼できません。何らかの理由で必死にそれを必要としない限り、それは避ける価値があります。 DNSをローカルにキャッシュしたい場合は、専用のDNSキャッシングデーモンを使用する必要があります(これは良いアイデアです!)。
私のお気に入りの2つは dnsmasq と djbdnsからのdnscache です。
地獄にDNSキャッシングがある場合、それはnscdによって提供されます。しないでください。使用する。それ。
ただ違うだけです: pdnsd は実際には非常に良い代替品です。またはunscd(少なくともopenSUSEではデフォルトで使用されます)。
共有を有効にすると、統計が正しく反映されないことを付け加えておきます。
共有ホストはい
http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/
他の人がこれについて言及しているのを見たことがなく、なぜ私のヒット率が0%と表示され続けるのかを理解するのにかなりの時間がかかりました