我可以logging绑定9的具体查询吗?

我想知道哪些主机进行特定的DNS查询,并在什么时候。 有没有什么办法可以在绑定9上获取特定的日志

例如,我可能想loggingxyzzy.net所有A查询。

在logging.conf文件中放入正确的频道节。

  channel "client" { file "/var/log/client_named.log"; severity info; print-time yes; }; 

可能会做的伎俩。 这应该让你这样的数据:

 22-Apr-2011 12:06:53.294 client xxx.xxx.xxx.xxx#56202: view external-in: query: st.in.multi.surbl.org IN A + 

编辑:警告 – 启用这种日志logging将非常快速地生成非常大的日志文件,并且可以很容易地填满磁盘,而不需要某种日志轮换/压缩,并且可能最适合于简短的数据收集会话,而不是一个永久的configuration。

如果(后处理生成的日志文件)太多,你可以使用像tcpdump这样的工具来做到这一点。

 tcpdump -i eth0 dst port 53 | egrep 'A' | egrep 'xyyzyy.com' 

或者甚至更好,编写一个filter来匹配你想要过滤的DNS数据包的正确位(在这种情况下是A?型)

可能更容易,但是,使用像dnstop的工具。 dnstop网页将为您完成所有协议解码,而IIRC则可以使用-n过滤它的输出,以限制其捕获的内容到单个域。

不, 日志logging语句不支持filter。 您可以将绑定日志发送到系统日志,然后仅在您的系统日志规则中筛选客户端IP和Alogging。 这可能是最简单的方法。