是否有一个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服务器。 这就是说,这种方法有许多问题:
最终,你要求的是名称服务器记住最后一个已知的非错误响应,这不是当前存在于DNS空间中的function。 目前正在制定一个标准草案来解决这个问题,这是由于DDoS攻击的目标权威DNS系统日益stream行。 一旦超过草稿状态,我们可能会在不久的将来看到这个实现。
虽然我自己从来没有使用过,但是unbound
cachingparsing器有一个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时间。