キャッシュにnscdを使用しないDNSクエリ


10

nscd(ネームサービスキャッシュデーモン)を使用してDNSをローカルにキャッシュしようとしているので、バインドの使用をやめることができます。私はそれを始めました、そしてntpdはそれを使用しようとするようです。しかし、ホストの他のすべてはそれを無視しているようです。たとえば、apache.orgを3回掘る場合、どれもキャッシュにヒットしません。キャッシュ統計情報を使用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にヒットしていない理由はわかりませんでしたが、実際にはそうではありませんでした。


ncsdのためにマシンをリブートする必要はありません。それをフラッシュするか、サービスを再起動することができます。

回答:


14

キャッシュヒットが見当たらない理由は、digが直接DNSにクエリを送信するためです。キャッシュがgetent次のコマンドで機能するかどうかを確認できます。

getent hosts host.example.com

別のキャッシュDNSを実行することは良い考えですが、可能であればネットワークレベルで実行することを検討する必要があります。各ホストがデータを個別にキャッシュする場合でも、同じホストに対して複数のクエリを実行します。シングルキャッシュはこの問題を回避します。

Nscd自体はNSS機能のキャッシュデーモンです。したがって、焦点はネイティブキャッシングネームサーバーとは少し異なります。したがって、キャッシングネームサーバーだけが必要な場合は、nscd以外のものを使用してください。代わりに、共有のユーザー名やホストデータなどを通常のDNSシステムの外にキャッシュしたい場合は、nscdを使用してください。

そして記録のために、私はpowerdnsリゾルバー(pdns-resolver)がかなり好きになりました。


しかし、dig以外のものはそれを使用しているように見えるべきではありませんか?これはデスクトップシステムです。一部のソフトウェア(私のパッケージマネージャーなど)は、独自のキャッシュを実装していません。
xenoterracide 2010

また、私のISPの外では、これがネットワーク上の唯一のコンピュータです;)接続が遅いので、遅延を回避しようとしています。
xenoterracide 2010

2
他のソフトウェアは確かにnscdキャッシュにヒットするはずです。nscdを起動した後、必ずソフトウェアを再起動してください。

私はシステムを再起動しました... nscdを使用しようとしているように見えるソフトウェアはntpだけでした。
xenoterracide

3

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 <madcoder@debian.org>  Sat, 28 Apr 2007 11:10:56 +0200

2
実際に私はこれを持っていますが、問題のファイルをスクロールする必要があります。
ゼノテラサイド

2

nscdについては、DNSルックアップで頻繁に問題が発生し、常に無効にしていた(または少なくともホストルックアップの一部である)ことを除いて、nscdについてはあまり知りません。Nscdを使用すると、存続時間の値を設定できます。DNSがそれらの値を「所有」し、すべてのリゾルバーがそれらを尊重することを期待していることを知っています。DNSのTTLが守られない場合、奇妙な結果になる可能性があります。DNSのキャッシュにnscdを使用しないことをお勧めします。ローカルボックスで既にキャッシュネームサーバーが実行されているようです。DNSルックアップを2回キャッシュする必要はありません。


私はそれを無効にしたいと思っていましたが、それは本当に問題ではありません(私のボックスは非常に強力なので、キャッシュのバインドの重みは問題ではありません)。これは、部分的には、何か新しいことを学ぶだけの問題です。それを動作させることができないのは少し迷惑です。
xenoterracide

1

nscdは、DNSだけでなく、すべてに対して本当に信頼できません。何らかの理由で必死にそれを必要としない限り、それは避ける価値があります。DNSをローカルにキャッシュしたい場合は、専用のDNSキャッシングデーモンを使用する必要があります(これは良いアイデアです!)。

私のお気に入りの2つは、djbdnsのdnsmasqdnscacheです。


nscdを使用するには、最初にそれがどのように機能するかを理解する必要があります。それは、システムキャッシュシステムであり、プレーンなDNSキャッシュデーモンではないことです
higuita

1

地獄にDNSキャッシングがある場合、それはnscdによって提供されます。しないでください。使用する。それ。

ただ、異なるようにする:pdnsdは、実際には非常に素晴らしい代替品です。またはunscd(少なくともopenSUSEではデフォルトで使用されます)。


+1これ。小規模ネットワークのNSCD、または恐ろしいDNSサーバーのある場所では、これは深刻なPITAです。これは、「初心者」が私が働いた場所でLinuxおよびSolarisサーバーをリブートする最も頻繁な理由の1つでなければなりません。
Signal15、2014年

1
リンクpdnsdがダウンしています。多分これは代わりに良いリンクです:members.home.nl/parombouts/pdnsd
Ehtesh Choudhury

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.