如何创建我的计算机发出的每个 DNS 查询及其收到的响应的日志?
答案1
您可以tcpdump
记录所有端口 53 UDP 和 TCP 活动。
答案2
要显示所有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。
维基百科.org。
更新(2023):改变的输出格式tcpdump
;域名位于字段 #9,而不是字段 #8。
固定单线:
script -q -c "sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f9" | tee dns.log
答案3
最简单的方法是在本地安装 Bind。大多数发行版默认安装的 Bind 都是非自动缓存。
只需添加一个logging {}
配置块(如Bind 9 配置参考)然后将您的系统设置为使用127.0.0.1
或::1
作为 DNS 解析器。
答案4
对于您感兴趣的请求,过滤 DNS 的一种简单方法是 grep 下一行,其中grep -A 2
-A 位于之后,之后 2 行。如果服务器有很多 DNS 请求,则从 2 增加到 4-5
tcpdump -l port 53 |grep -A 2 redis
第二行是 DNS -> IP, CNAME,none , other 的答案