DNS 查询响应日志记录

Sam*_*rat 5 linux logs dns bind

我已经用 bind9 配置了一个 CC TLD。我也成功配置了查询日志记录。但我无法记录查询响应。

请看一下我为查询日志配置的内容:

logging {
    channel queries_file {
        file "/var/named/chroot/var/log/named/queries.log" versions 10 size 10G;
        severity dynamic;
        print-category yes;
        print-severity yes;
        print-time yes;
    };
    category queries { queries_file; };
};
Run Code Online (Sandbox Code Playgroud)

此脚本仅记录来自外部的查询。

如何记录这些请求的服务器响应。

Rui*_*iro 5

BIND 中没有规定用logging指令记录查询的答案。

此外,除了隐私方面的考虑之外,DNS 服务远程记录它们而不是记录在文件中会更有效。

人们经常运行dnscap来捕获/嗅探 DNS 查询以进行安全分析。

dnscap 是专为 DNS 流量设计的网络捕获实用程序。它以 pcap(3) 格式生成二进制数据。此实用程序类似于 tcpdump(1),但具有许多针对 DNS 事务和协议选项量身定制的功能。

还有一个名为dnstap的捕获/日志记录功能,但它只存在于某些版本的 BIND 中,并且似乎总是在 BIND 的最后一个版本(此时为 9.11)之后正式包含在内,该版本可能尚未在多个发行版中采用,因此涉及编译 BIND。

它更有趣,因为它与 BIND 集成,并且对资源的负担比dnscap.

dnstap 是一种解决方案,它为 DNS 服务器引入了灵活的二进制日志格式以及协议缓冲区,这是一种用于序列化结构化数据的机制。Robert Edmonds 有 dnstap 的想法并创建了第一个实现,并考虑了两个特定的用例:

  • 通过消除同步 I/O 瓶颈和消息格式,加快查询日志记录
  • 通过捕获完整消息而不是被动 DNS 的数据包来避免复杂的状态重建

使用 dnstap 的 DNS 查询/响应日志记录

options {
   dnstap { all; };
   // dnstap { auth; resolver query; resolver response; };

   /* where to capture to: file or unix (socket) */
   // dnstap-output file "/tmp/named.tap";
   dnstap-output unix "/var/run/dnstap.sock";

   dnstap-identity "tiggr";
   dnstap-version "bind-9.11.2";
};
Run Code Online (Sandbox Code Playgroud)