使用 dnstap 记录日志

dnstap 是一个灵活且结构化的二进制日志格式,用于 DNS 软件。

dnstap 是一个灵活且结构化的二进制日志格式,用于 DNS 软件1。它使用 Protocol 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

如果将 `full` 选项给到 dnstap 插件,你还可以包括 DNS 消息的完整(二进制)数据。现在你可以使用 dnstap 工具从 CoreDNS 写入的套接字进行读取。

$ dnstap -u /tmp/dnstap.sock

或在 dnstap 套接字上进行监听,并将消息有效负载存储到二进制 dnstap 格式日志文件

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

然后以 YAML 格式读取 7 月的日志

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

  1. https://dnstap.info ↩︎

Antoine D.
发布日期:,并使用 290 个单词标记 dnstaplogplugin