BIND(转发器+caching) – 如果转发器失败,则caching服务

我想configurationBIND作为DNS转发器,并利用caching。

如果转发器失败,我怎么能configuration它来提供caching结果(即使超出TTL)?

这个问题已经在这里提出,但没有答复张贴 – 如何使BIND返回旧的caching的物品,如果所有的转发器都失败了?

我需要这样做的原因,我有非常糟糕的ISP(并没有在我的领域有更好的select)。 通常,所有DNS查询请求都失败了,我尝试了很多免费的DNS提供程序,在这段时间内它们都失败了。 互联网连接不下来,只有DNS查询失败。

这就是我的要求背后的原因,所以当发生这种情况时,我仍然可以继续做我的工作,cachingDNS结果(显然已经存在于caching中)。

使用过期的数据在标准中是一个非常强大的“绝对不能”,所以如果有可能得到BIND,那将会让我大吃一惊。 您可能希望查看更加紧密地针对个人使用的替代parsing器,或者(因为听起来像您的ISP间歇性地阻塞到端口53的stream量)尝试获取VPN隧道并让您的BIND使用它。

Calle是正确的,你不会得到BIND违反TTL(除了降低最大值,这在这里没有帮助)。 也就是说,如果你的ISP太糟糕了,你不能可靠地击中转发器,我不太确定使用转发器的价值应该是什么

许多域提供比通常最终被configuration的转发器数量更多的权威域名服务器(2)。 这反过来意味着在查看包丢失的情况下查询得到更多的机会。 在我看来,比使用转发器configuration你自己做recursion更多的里程。

您可能还想尝试支持预取function的更新版本的BIND。 结合自己的recursion,服务器将自动尝试对logging从caching到期之前的logging的所有名称服务器执行刷新。 只有在logging到期前,查询才会到来,但在这里可能仍然有帮助。

预取

当接收到即将到期的caching数据的查询时,named可立即刷新来自权威服务器的数据,确保caching始终具有可用的答案。

预取指定当前查询预取的“触发”TTL值:在查询处理过程中遇到TTL值较低的cachinglogging时,将进行刷新。 有效的触发TTL值是1到10秒。 大于10秒的值将被静默地减less到10.将触发器TTL设置为零(0)导致预取被禁用。 默认触发TTL是2。

可选的第二个参数指定“资格”TTL:logging可接受的最小原始TTL值,以便有资格进行预取。 资格TTL必须至less比触发TTL长六秒; 如果不是,名字会默默地向上调整。 默认资格TTL是9。

ftp://ftp.isc.org/isc/bind9/cur/9.10/doc/arm/Bv9ARM.ch06.html

BIND是DNS服务器,它遵循标准并服从TTL规则。 您需要的是具有DNScaching支持的caching代理。 例如,positive_dns_ttl设置为一些大值的squid可以解决,或者您喜欢的任何其他代理。