Linux守护进程在DNS失败期间“坚持”DNS答案

是否有一个Linux的工具,可以在DNS服务器失败期间“坚持”IP地址? 因此,即使远程DNS服务器暂时失败,域仍然可以在本机上parsing。

情况是,我有一台机器上部署了我的Web应用程序。 应用程序必须连接到远程资源。 这个资源不在我的控制之下 – 它是由其他公司提供的第三方Web服务,但是在我的客户的域名下。 客户的DNS服务器有时会失败,所以我的应用程序无法parsing域名,但是这个第三方WS仍然可用(客户的DNS失败与它无关),所以我可以通过IP访问它并完成我的工作。

因此,我正在寻找一种工具(DNScaching?),只要DNS服务器启动,就会通过DNSparsing域名,并在DNS服务器closures时返回最后获得的值。 减lessDNS请求计数是不是我在这种情况下感兴趣,所以“经典”DNScaching不是在这里(我认为)的解决scheme。

编辑:

具有本地DNScaching的scheme不适用于我:
1.远程DNS运行良好
2.本地DNScaching正在caching来自远程DNS的响应
3.在响应的TTL到期之前,远程DNS崩溃
4.直到响应的TTL到期,caching提供caching响应; 到现在为止还挺好
5.响应的TTL过期,caching刷新条目,不能获得新的响应,因为远程DNS仍然closures; 不是很好

正如其他人所build议的那样,最接近的是服务器caching,可以是nscd,也可以是本地recursion服务器。 这就是说,这种方法有许多问题:

  • 默认情况下,这些解决scheme没有configuration为无限地记住名字(正如您所要求的),并且会使每个与各个DNSlogging相关的TTL的caching条目过期。 许多logging在五分钟附近TTL很短。
  • 该软件可能不允许您执行防止数据过期的“最小TTL”策略。
  • 即使软件允许您执行最小的TTL,也会引入自己的问题。 有些logging有一个短的TTL的原因。 忽略那些短的TTL可能会导致意想不到的问题。

最终,你要求的是名称服务器记住最后一个已知的非错误响应,这不是当前存在于DNS空间中的function。 目前正在制定一个标准草案来解决这个问题,这是由于DDoS攻击的目标权威DNS系统日益stream行。 一旦超过草稿状态,我们可能会在不久的将来看到这个实现。

虽然我自己从来没有使用过,但是unboundcachingparsing器有一个serve-expired设置,听起来可能适合这个法案:

如果启用,未绑定的尝试从响应中的TTL为0的caching提供旧响应,而不等待实际分辨率完成。 实际的解决scheme答案稍后会在caching中结束。 默认是“否”。

什么可能会绊倒你的是,当“实际的解决scheme的答案”是SERVRFAIL ,这将过期的条目。 不过,这不应该花费太多精力来testing。

可以使用DNS定期查询远程主机名,然后用这些信息更新本地/etc/hosts文件。

最终结果是/etc/hosts文件充当域名IP的本地caching,应用程序将使用该文件作为IP地址的源。

我不知道任何可以做到这一点的现成的软件。

是的,例如可以通过名称服务caching守护进程 nscd来实现

是为最常见的名称服务请求提供caching的守护进程。

看看你的分布。 我知道Ubuntu(> = 12.04),弟兄们已经有一个dnsmasq DNS服务器在他们的本地盒做caching和做其他DNS欺骗。 您可能可以利用类似的东西来使DNScaching具有更长的caching/ TTL时间。