我在 Debian Stretch 上运行了 unbound 1.9.0 的递归 DNS 解析器。它会定期记录有关递归处理时间的统计信息。最新的是:
[2195:0] info: server stats for thread 0: 157732 queries, 87671 answers from cache, 70061 recursions, 0 prefetch, 0 rejected by ip ratelimiting
[2195:0] info: server stats for thread 0: requestlist max 145 avg 20.751 exceeded 0 jostled 0
[2195:0] info: average recursion processing time 0.014740 sec
[2195:0] info: histogram of recursion processing times
[2195:0] info: [25%]=0.0260698 median[50%]=0.0470106 [75%]=0.106954
[2195:0] info: lower(secs) upper(secs) recursions
[2195:0] info: 0.000000 0.000001 1792
[2195:0] info: 0.000256 0.000512 3
[2195:0] info: 0.000512 0.001024 71
[2195:0] info: 0.001024 0.002048 186
[2195:0] info: 0.002048 0.004096 490
[2195:0] info: 0.004096 0.008192 876
[2195:0] info: 0.008192 0.016384 2321
[2195:0] info: 0.016384 0.032768 19920
[2195:0] info: 0.032768 0.065536 21561
[2195:0] info: 0.065536 0.131072 8427
[2195:0] info: 0.131072 0.262144 8884
[2195:0] info: 0.262144 0.524288 3188
[2195:0] info: 0.524288 1.000000 1468
[2195:0] info: 1.000000 2.000000 493
[2195:0] info: 2.000000 4.000000 278
[2195:0] info: 4.000000 8.000000 70
[2195:0] info: 8.000000 16.000000 4
[2195:0] info: 16.000000 32.000000 18
[2195:0] info: 32.000000 64.000000 5
[2195:0] info: 64.000000 128.000000 4
[2195:0] info: 128.000000 256.000000 1
[2195:0] info: 256.000000 512.000000 1
大多数处理时间看起来都一样,但有几个请求需要几秒钟甚至几分钟才能处理。
我对这些请求很好奇,想调查一下。有没有什么已知的方法可以做到这一点?例如,如果我可以要求 Unbound 记录任何需要超过 4 秒才能处理的递归,我会很高兴。
答案1
您可以配置 Unbound 来启用该dnstap
功能:
dnstap
是跨软件通信 DNS 数据包的事实“标准”。有关它的各种解释可以在https://dnstap.info/
您可以在此处查看介绍https://jpmens.net/2017/09/11/dns-query-response-logging-with-dnstap/dnstap-read
;例如,您可以将内容存储在磁盘上一段时间,然后使用或读取它们,kdig
然后应用您想要的所有过滤。
然后,您可以将“所有内容”无限制地发送给其他收集器,然后这些收集器可以深入挖掘内容并为您提供所需的内容。
我无法完全回答哪种软件能够准确且立即地提供您所需的信息,但上述内容应该是最明智的选择。
需要注意的一些接收器选项: