我正在build立一个内部DNScaching,因为我的防火墙在处理由DNS请求创build的所有会话时遇到了问题。 我尝试使用bind9,dnsmasq和DJB dnscache,它们都有助于减less离开我的networking的请求的数量,但是仍然有很多请求正在进行。
查看日志文件以及tcpdump和dnstop输出,看起来返回SERVFAIL的请求根本不会被caching。 而许多失败的请求是AAAA请求,这是一个耻辱,因为我没有在任何服务器上启用ipv6。
我已经研究了几种方法来帮助解决这个问题,我想如果能够以某种方式阻止DNScaching转发的AAAAlogging请求,那么会显着减less请求的数量。
我发现最接近的是BIND9中的filter-aaaa-on-v4选项。 但是,这只会从服务器响应中删除logging,并不会阻止它转发它。
任何帮助,将不胜感激。
我不认为这是可能的任何标准的DNSparsing器。 此外:隐藏来自客户端的IPv6响应可能会破坏DNSSECvalidation,具体取决于您validation的地方。
一个权威的DNS服务器不应该返回一个SERVFAIL时,要求它没有的数据,所以真正的问题是这些服务器。 我个人很less看到这样的不良行为,但你似乎更经常看到这种行为。 如果只有less数服务器这样做的话,那么让运营商或域名持有者知道这个问题是一个好主意。
一些防火墙可以处理某些无状态的stream量。 你可以过滤像
internal DNS cache address port > 1024 <--> * port 53
并使所有的交通状态。 你不会失去太多的保护,你的防火墙将会有更低的负载。 说实话,我很惊讶你的防火墙处理DNS查询会话有问题。 你从来没有指定你正在使用的品牌和型号。 我在Juniper SRX 210上为BitTorrent服务器做了这个。 如果您认为DNS请求会导致很多会话… 😉
如果一切都失败了,你可以把工作移到外部的DNSparsing器。 如果您将DNScachingconfiguration为将所有查询转发给外部parsing器(您的ISPparsing器和8.8.8.8/8.8.4.4出现),那么您的DNScaching将不必漫游DNS树本身,这将降低数量的查询很多。
您可以尝试在根区域设置您的服务器权威,并添加通配符AAAAlogging。 所有其他logging查询应像往常一样转发。