私はdnsmasq
をDebianサーバー上のキャッシュ専用DNSサーバーとして構成しましたが、うまく機能しています(Digを介したDNS応答時間の改善が見られます)。
ただし、dnsmasq
がキャッシュしている内容をいつでも理解できるようにしたいので、達成している効率(ヒット率)について考え始めることができます。
私はmanページとwebを見回しましたが、どの時点でもdnsmasq
がキャッシュしているものを確認する方法を見つけることができません(たとえば、 dnsmasq.leaseファイル)。
dnsmasq
DNSキャッシュはメモリにのみ保持されますか?または、ログファイルを変更する必要がありますか?
私はdnsmasq
にアクセスできませんが、このタイトルの dnsmasqはキャッシュしていますか? シグナルUSR1をdnsmasq
プロセスに送信して、システムに統計をダンプさせることができますログ。
$ Sudo pkill -USR1 dnsmasq
次に、システムログを調べます。
$ Sudo tail /var/log/syslog
Jan 21 13:37:57 dnsmasq[29469]: time 1232566677
Jan 21 13:37:57 dnsmasq[29469]: cache size 150, 0/475 cache insertions re-used unexpired cache entries.
Jan 21 13:37:57 dnsmasq[29469]: queries forwarded 392, queries answered locally 16
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.222.222#53: queries sent 206, retried or failed 12
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.220.220#53: queries sent 210, retried or failed 6
注:dnsmasq
はキャッシュをRAMに保持していると思います。
したがって、キャッシュをダンプする場合は、dnsmasq
が呼び出されたときに-q
スイッチを有効にする必要があります。これは、dnsmasq
のマニュアルページで説明されています。
-d, --no-daemon
Debug mode: don't fork to the background, don't write a pid file,
don't change user id, generate a complete cache dump on
receipt on SIGUSR1, log to stderr as well as syslog, don't fork new
processes to handle TCP queries. Note that this option is for use in
debugging only, to stop dnsmasq daemonising in production, use -k.
-q, --log-queries
Log the results of DNS queries handled by dnsmasq. Enable a full
cache dump on receipt of SIGUSR1.
Manページからこの情報を取得する別の方法:
キャッシュ統計情報は、ドメインバインドのクラスCHAOSおよびタイプTXTのクエリへの回答としてDNSでも利用できます。ドメイン名は、cachesize.bind、insertions.bind、evictions.bind、missesです。 bind、hits.bind、auth.bind、servers.bind。Digユーティリティを使用してこれをクエリするコマンドの例は次のようになります。
Dig +short chaos txt cachesize.bind
Dig +short chaos txt hits.bind
Dig +short chaos txt misses.bind
システムにsystemd-resolveのようなものがある場合は、次のコマンドでサーバーに直接クエリする必要があります。
Dig +short chaos txt hits.bind @serverIP