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

23 logs dns

如何为我的计算机发出的每个 DNS 查询以及它得到的响应创建日志?

Aar*_*sco 18

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

  • `tcpdump udp 端口​​ 53` (9认同)
  • 有关于如何的详细信息吗? (6认同)
  • 默认情况下它可能不会选择出站网络接口,因此您需要更多一点:“tcpdump --list-interfaces”、“tcpdump udp port 53 --interface (pickone)”。还要考虑冗长:`-vv` (3认同)

bah*_*mat 10

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

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

  • 考虑到绑定有多大以及它的安全记录乏善可陈,我认为很多人会犹豫是否为了记录日志而安装类似的东西。 (2认同)

Bru*_*ger 6

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

Dnsmasq 还可以通过将整个域别名为 127.0.0.1 来轻松摆脱滥用广告商和侵犯“分析”蠕虫的垃圾隐私


Van*_*nni 6

要显示所有ADNS 请求并将其保存到文件,请运行以下命令:

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

示例输出:

谷歌网站。
维基百科。

  • @Herohtar tcpdump 的输出格式已更改。现在域名位于字段 #9,而不是字段 #8。尝试 `script -q -c "sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f9" | tee dns.log` (2认同)

Ban*_*uin 0

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