1.4. dnstap を使用した DNS クエリーの記録
Domain Name System (DNS) のトラフィックパターンを分析し、DNS サーバーのパフォーマンスを監視し、関連する問題をトラブルシューティングするには、dnstap インターフェイスを使用して DNS の詳細情報を記録します。dnstap は受信する名前クエリーを監視およびログに記録して Web サイトと IP アドレスの詳細を収集するために、named サービスが送信するメッセージを記録します。
前提条件
- 管理者権限がある。
-
bindパッケージをインストールした。
すでに BIND がインストールおよび実行されている場合、新しいバージョンの BIND を追加すると、既存のバージョンが上書きされます。
手順
/etc/named.confファイルのoptionsブロックで、dnstapとターゲットファイルを有効にします。options { # ... dnstap { all; }; # Configure filter dnstap-output file "/var/named/data/dnstap.bin" versions 2; # ... }; # 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 ) ]; … };
-
記録されたパケットに対する
dnstapユーティリティーの動作をカスタマイズするには、dnstap-outputオプションにパラメーターを追加して変更します。-
size(unlimited | <size>):dnstapファイルのサイズが指定された制限に達したときに、ファイルの自動ロールオーバーを有効にします。 -
versions(unlimited | <integer>): 保持する自動ロールオーバーファイルの数を指定します。 suffix(increment | timestamp): ロールアウトされたファイルの命名規則を選択します。デフォルトでは、増分は.0から始まります。ただし、timestamp値を設定することで、UNIX タイムスタンプを使用することもできます。以下の例では、
auth応答のみ、clientクエリー、および動的updatesのクエリーと応答の両方を要求します。Example: dnstap {auth response; client query; update;};
-
変更を適用するために、
namedサービスを再起動します。# systemctl restart named.serviceアクティブなログの定期的なロールアウトを設定します。
# 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-
cronスケジューラーは、ユーザーが編集したスクリプトの内容を 1 日に 1 回だけ実行します。 -
rollオプションに3という値を指定すると、dnstapが最大 3 つのバックアップログファイルを作成可能になります。 -
この
3という値により、dnstap-output変数のversionパラメーターがオーバーライドされます。この値によってバックアップログファイルの数が 3 つに制限されます。また、このオプションにより、バイナリーログファイルが別のディレクトリーに移動され、名前が変更されます。バックアップログファイルがすでに 3 つ存在する場合でも、サフィックスが.2に達することはありません。 - サイズ制限に基づくバイナリーログの自動ローリングで十分な場合は、このステップを省略できます。
-
dnstap-readユーティリティーを使用して、出力ログをYAMLファイルなどの人間が読みやすい形式で読み込んで出力します。# dnstap-read -p /var/named/data/dnstap.bin