dnstapによるログ

dnstapはDNSソフトウェア向けの柔軟な構成化バイナリログフォーマットです。

dnstapはDNSソフトウェア向けの柔軟な構成化バイナリログフォーマットです1Protocol Buffersを使用して、実装ニュートラルなフォーマットでDNSソフトウェア内で行われるイベントを符号化します。

dnstapはサーバで交換されたすべてのDNSメッセージを、リモートコンピューター(IPアドレス、ポート)と時間に関する情報と共に符号化できます。クライアントのクエリや応答のみならず、他のネームサーバからリクエストされたプロキシ要求やその他の情報も含まれます。

この例ではdnstapコマンドラインツールの出力を表示して、dnstapが提供できる情報の種類を示します。

type: MESSAGE
message:
  type: CLIENT_RESPONSE
  socket_family: INET
  socket_protocol: UDP
  query_address: 127.0.0.1
  query_port: 47969
  response_message: |
    ;; opcode: QUERY, status: NOERROR, id: 47163
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;example.org.       IN       A

    ;; ANSWER SECTION:
    example.org.        86339   IN      A       93.184.216.34

dnstapプラグインはCoreDNS-010に追加されています.現在のところ、クライアントレベルのメッセージのみをログできます。追加の種類の交換に対するロギングは実装される予定です。

dnstapプラグインはdnstapコマンドラインツールと組み合わせて使用されます。ソケットを使用して通信します。つまり、このツールがリッスンされている限り、プラグインはログを送信します。

dnstapプラグインを使用して開始するには、サーバブロックのCorefileに追加します。

dnstap /tmp/dnstap.sock full

dnstapプラグインにfullオプションを指定すると、DNSメッセージの全(バイナリ)データも含まれます。dnstapツールを使用して、CoreDNSが書き込みを行っているソケットから読み取ることができるようになりました。

$ dnstap -u /tmp/dnstap.sock

または、dnstapソケットでリッスンし、メッセージペイロードをバイナリdnstap形式ログファイルに格納します。

$ dnstap -u /tmp/dnstap.sock -w /tmp/july.dnstap

その後、7月のログをYAML形式で読み取ります。

$ dnstap -r /tmp/july.dnstap -y

  1. https://dnstap.info ↩︎

Antoine D.
発行: 、タグ付け: dnstap, logplugin、単語数 290