首先,我对 DNS 服务器一无所知。我一直在努力解决 DNS 服务器的问题,因为我发现我们的一个系统存在问题,并确定这是由 DNS 解析引起的。
我们使用外部 Web 服务执行一些关键操作。我们的软件与外部服务保持持续通信。外部提供商实际上有两个主机(每个都有自己的 IP 地址)提供此服务,并更改 DNS 记录,以便一个名称(称为 criticalservice.example.com)始终解析为当前活动的主机。
我们的软件会定期检查与外部系统的连接。只要名称解析为正确的活动主机,一切就都正常。但是,提供商偶尔会更改活动主机(以及匹配的 DNS 记录)。我们的系统会将主机名的旧 IP 地址缓存起来,直到 TTL 过期。在它过期并获得正确的 IP 地址之前,我们的系统会报告通信错误并且无法使用。一旦 IP 地址赶上,我们的系统就会自动重新连接并恢复工作。离线时间可以是任何时间,最长为整个 TTL 周期 - 我们的 DNS 服务器似乎使用 3600 秒作为默认 TTL。
该服务并不像生死攸关那么重要,而是无法尽快通知可能需要处理生死攸关情况的人员。鉴于此,我们非常希望缩短系统等待 DNS TTL 的时间。
来自 ISP 的 DNS 服务器对于 criticalservice.example.com 的 TTL 非常短,ISP 建议直接使用他们的 DNS 或者在我们的内部 DNS 服务器上使用非常短的 TTL。
由于我们的 DNS 服务器也是 Active Directory 域服务器,因此我认为更改整个 DNS 服务器的 TTL 不是一个好主意。
我最好的想法是仅为 criticalservice.example.com 设置 TTL。
如何在 Windows 2008 Server 中为 criticalservice.example.com 创建 DNS 条目,以将缓存时间限制为 1 分钟以内,但仍允许我们的 DNS 服务器从 ISP DNS 服务器获取正确的 IP 地址?据我所知,如果我添加将名称映射到 IP 地址的记录,我只能设置 TTL - 而我无法这样做,因为 IP 地址会发生变化。
或者,我可以对我们机器上使用 criticalservice.example.com 的 DNS 客户端做些什么,以便它绕过我们的 DNS 服务器,但只针对 criticalservice.example.com 吗?
附加信息:nslookup -qa=A criticalservice.example.com local.dns.server 返回 3600 秒的 TTL。nslookup -qa=A criticalservice.example.com isp.dns.com 返回 15 秒的 TTL。
答案1
我只是让您的 DNS 服务器执行 DNS 的设计功能。不要尝试在您的 DNS 服务器中配置域。您的 DNS 服务器将缓存提供商指定的 TTL 的 DNS 条目。最糟糕的情况是,您将获得提供商指定的 TTL 的过时条目。
如果您确实在 DNS 中设置了条目,请将 TTL 设置为不大于提供商指定的值。您仍然需要一个系统来检查提供商的 DNS 并更新您的 DNS。这将增加您的设置的复杂性,并增加失败的风险。您还将生成至少与上述指定一样多的 DNS 流量。
可以按条目定义 TTL,尽管我没有在 Active Directory 中这样做的经验。您的提供商很可能在他们的服务器上这样做。