4.9. dnstap を使用して DNS クエリーを記録する
ネットワーク管理者は、ドメインネームシステム (DNS) の詳細を記録して、DNS トラフィックパターンの分析、DNS サーバーのパフォーマンスの監視、DNS 問題のトラブルシューティングを行うことができます。受信する名前クエリーの詳細を監視してログに記録する高度な方法が必要な場合は、named
サービスから送信されたメッセージを記録する dnstap
インターフェイスを使用します。DNS クエリーをキャプチャーおよび記録して、Web サイトまたは IP アドレスに関する情報を収集できます。
前提条件
-
bind-9.11.26-2
パッケージ以降のバージョンがインストールされている。
BIND
バージョンがすでにインストールされ、実行されている場合、新しいバージョンの BIND
を追加すると、既存のバージョンが上書きされます。
手順
/etc/named.conf
ファイルのoptions
ブロックを編集して、dnstap
とターゲットファイルを有効にします。options { # ... dnstap { all; }; # Configure filter dnstap-output file "/var/named/data/dnstap.bin"; # ... }; # end of options
ログに記録する DNS トラフィックのタイプを指定するには、
/etc/named.conf
ファイルのdnstap
ブロックにdnstap
フィルターを追加します。次のフィルターを使用できます。-
auth
: 権威ゾーンの応答または回答。 -
client
: 内部クライアントクエリーまたは回答。 -
forwarder
: 転送クエリーまたは応答。 -
resolver
: 反復的解決クエリーまたは応答。 -
update
: 動的ゾーン更新要求。 -
all
: 上記のオプションのいずれか。 query
またはresponse
:query
またはresponse
キーワードを指定しない場合、dnstap
は両方を記録します。注記dnstap
フィルターでは、dnstap {}
ブロック内に;
で区切った複数の定義を含めます。次の構文を使用してください。dnstap { ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ]; … };
-
変更を適用するために、
named
サービスを再起動します。# systemctl restart named.service
アクティブなログの定期的なロールアウトを設定します。
次の例では、
cron
スケジューラーは、ユーザーが編集したスクリプトの内容を 1 日に 1 回実行します。roll
オプションに値3
指定し、dnstap
が最大 3 つのバックアップログファイルを作成できるようにしています。この値3
は、dnstap-output
変数のversion
パラメーターをオーバーライドし、バックアップログファイルの数を 3 に制限します。また、バイナリーログファイルは別のディレクトリーに移動されて名前が変更されます。3 つのバックアップログファイルがすでに存在する場合でも、ファイルの接尾辞が.2
に達することはありません。サイズ制限に基づくバイナリーログの自動ローリングで十分な場合は、このステップを省略できます。Example: sudoedit /etc/cron.daily/dnstap #!/bin/sh rndc dnstap -roll 3 mv /var/named/data/dnstap.bin.1 /var/log/named/dnstap/dnstap-$(date -I).bin # use dnstap-read to analyze saved logs sudo chmod a+x /etc/cron.daily/dnstap
dnstap-read
ユーティリティーを使用して、人間が判読できる形式でログを処理および分析します。次の例では、
dnstap-read
ユーティリティーは出力をYAML
ファイル形式で出力します。Example: dnstap-read -y [file-name]