如果对 URIBL 的查询被阻止,因为 URIBL “检测到”您的 DNS 查询正在使用已进行过多查询并超出限制的 dns 解析器 IP 地址...
如何使用像 Bind9 这样的本地 DNS 服务来解决这个问题?
我的有限理解是:
当开始对 URIBL 提供程序的查询时,
本地 Bind9 区域不会包含任何有关 URIBL 的记录
因此它需要去 DNS 转发器来解析 URIBL 编辑:我的术语不正确。Bind9 将查询 rootrvrs 以获取 gTLD 提示
但是如果您的服务器的 dns 转发器是 8.8.8.8(一个 Google dns 场),并且该 IP 地址已被拒绝向 URIBL 查询,
你如何绕过这个明显的catch-22?
编辑:在了解了 bind9 如何使用 root srvrs 之后,我删除了邮件服务器的 dns 转发器值 8.8.8.8 和名称服务器设置,bind9 返回了一个答案,因为它自己进行查找,而不是将其交给 8.8.8.8 名称服务器。
我已经阅读了至少 50 个有关此问题的网页,但没有一个详细说明它是如何解决的。
编辑:这个问题的其余部分已被删除,这是多余的,我会问一个单独的问题。
我认为您对 bind 作为缓存名称服务器的工作方式感到困惑。DNS 转发器仅在您从客户端的角度说话时才真正发挥作用,并且与配置缓存名称服务器的上下文无关。当向 bind 查询它没有的记录时,它会遵循解析域名的常规过程,从根服务器开始。我发现这个链接是一种有趣的方式来展示这个过程发生了什么。您还可以查看您感兴趣的任何域的整个丑陋过程 - 尝试使用
dig +trace serverfault.com
. 您所看到的将与 bind 遵循相同的解析链。一旦 bind 收到结果并假设为它启用了缓存,后续请求将从缓存中提供,直到记录 TTL 过期,在这种情况下,它会再次执行该过程以刷新其缓存。因此,如果您设置了一个缓存名称服务器,并且您试图通过它查询 URIBL并且它被拒绝了,那么它不会被 Google 拒绝——它将是您自己的服务器 IP。要确认,请尝试挖掘两个名称服务器 - 您自己的 (
dig @<your_bind_server> test.uribl.com.multi.uribl.com
) 和 Google 的 (dig @8.8.8.8 test.uribl.com.multi.uribl.com
),并查看拒绝发生的位置。另外,不,bind 不应该缓存拒绝。