質問
どのリゾルバーとネーム サーバーがネーム サーバーにクエリを実行しているかを調べたいと考えています。
答え
問題のトラブルシューティングを行う場合、バインド クエリ ログは非常に便利です。ただし、大量の出力が非常に迅速に生成されます。そのため、ネームサーバーが混雑している場合は、問題を解決するまでの間、ネームサーバーを有効にしておいてください。
バインド クエリのログをオンにする
1. クライアントの DNS クエリを識別するには、バインド クエリ ログを有効にする必要があります。 BIND 9 の場合、次のコマンドでクエリ ログを有効にします。
# rndc querylog
BIND 8 の場合、次のコマンドを使用してクエリ ログを有効にします。
# ndc querylog
2. クエリは /var/log/messages ファイルに記録されます。ネーム サーバーは、クエリを受信するたびに 1 行のメッセージをログに記録します。 BIND 9 の場合、メッセージは次のようになります:
Feb 5 09:12:11 ns1 named[80090]: client 192.168.10.12#3261: query: www.server.example IN A
これは、ネームサーバーがクライアントから 192.168.10.12、ポート 3261 で Internet クラスの www.server.example に添付された A レコードのクエリを受信したことを示しています。
3. BIND 8 ネーム サーバーでは、メッセージは次のようになります。
Feb 5 09:53:52 ns1 named[80323]: XX+/192.168.10.12/www.server.example/A/IN
ここでの情報のほとんどは、フォーマットを除いて Bind 9 の情報と同じです。 「XX+」 先頭の ” は、再帰クエリであることを示します。非再帰クエリは「XX.」のみを表示します。 「.
バインド クエリ ログをオフにする
Bind クエリ ログをオフにするには、有効にしたコマンドと同じコマンドを使用します。
# rndc querylog
構成でクエリログを永続的に有効にする
1. クエリ ロギングは、named.conf のログ セクションでクエリ カテゴリをチャネルに明示的に指定するか、querylog yes を指定することによっても有効にできます。 named.conf のオプション セクションにあります。
# vi /etc/named.conf ... options { querylog yes; } ... logging { channel querylog { file "/var/log/querylog"; severity debug 3; }; };
クエリは /var/log/querylog に記録されます。
2. クエリが記録されるログファイルを作成します。
touch /var/log/querylog
3. 所有権を変更します。
# chown named.named /var/log/querylog
4. 名前付きサービスを再起動します
# service named restart