如何记录我所有的DNS查询?


18

如何为计算机进行的每个DNS查询及其响应生成日志?

logs  dns 

Answers:


14

你可以有 tcpdump记录所有端口53的UDP和TCP活动。


6
有什么细节吗?
e-sushi

这是最好的答案,因为我们不能确定OP(或其他读取器)可以访问DNS服务器-仅访问其本地计算机。要回答@ e-sushi的问题,请使用实用程序进行tcpdump(查看手册页带有示例良好入门书)。最好的选择是转储到文件,然后将数据拉入Wireshark以进行审查和分析。
James Shewey

1
github.com/gamelinux/passivedns似乎就是这样做的,请参见./doc/How-it-works.txt
mxmlnkn

5
tcpdump udp port 53
布兰农

1
它可能不会被默认选择出站网络接口,所以你需要多一点:tcpdump --list-interfacestcpdump udp port 53 --interface (pickone)。还要考虑冗长:-vv
nobar

9

最简单的方法是在本地安装Bind。大多数发行版的Bind默认安装都是非自动缓存。

只需添加一个logging {}配置块(如Bind 9 Configuration Reference中所述),然后将系统设置为使用127.0.0.1::1作为DNS解析器。


2
考虑到绑定的大小及其安全记录的欠佳,我认为许多人会出于安装日志的唯一目的而安装类似的东西。
jw013

是否没有绑定问题,即未使用/etc/resolv.conf中的名称服务器,但必须在绑定配置中明确列出名称服务器?
Bananguin 2012年

/etc/resolv.conf是系统解析器列表。Bind的默认配置是查找权威名称服务器并询问它们。您可以将所有请求转发到特定的服务器(或设置,例如ISP,OpenDNS或Google Public DNS),但是在配置中不需要这样做。我一直都这样做。我什至无法计算设置仅缓存名称服务器的次数。
bahamat 2012年

6

与BIND相比,将dnsmasq配置为DNS聚合器/缓存守护进程要容易得多,为此,性能可能会更好。如果您将日志记录设置为“调试”,则所有问题和答案都会显示在任何地方syslog为调试消息配置的内容中。

Dnsmasq还可以通过将整个域都别名为127.0.0.1来轻松摆脱辱骂广告客户和侵害“分析”蠕变的污垢隐私。


1

如果我没记错的话,Snort可以根据用户定义的规则选择性地监控流量。但是,当您的计算机(即解析器)可以从其缓存中回答问题时,Snort不会为DNS请求创建日志。


1

显示并保存到所有文件 A DNS请求,请运行以下命令:

script -q -c "sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f8" | tee dns.log

输出示例:

google.com。
wikipedia.org。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.