我们公司有一个脑裂 DNS 场景,我们有相同的条目指向不同的 IP。
Example1:
Internal DNS: email.company.net (A) 172.20.1.1
External DNS: email.company.net (A) 22.191.72.18
因此,电子邮件只是我们必须“拆分”的少数条目之一。我们的公共 DNS 区域中确实有很多其他 DNS 条目,它们也需要在内部区域中保持不变。让我们看另一个例子:
Example2:
Internal DNS: video.company.net (A) -not present-
External DNS: video.company.net (A) 22.191.72.49
因此,当我想从公司内部访问videoportal.company.net时,DNS 服务器报告它没有找到该查询的 DNS 条目。为了使其正常工作,我还必须在内部 DNS 区域上重新创建所有外部 DNS 条目,并随着时间的推移维护所有这些记录。这会导致大量重复工作。我想做的是:
创建一个包含一些条目的区域,并为其分配一个策略:“解决您可以在其中找到的内容,但将您找不到的任何内容转发给您的解析器/根提示”
有没有这样的事情可以用政策来完成?甚至如何调用这样的功能?
我知道我可以创建一个带有 email.company.net 的区域和一个空的 A 记录。这会在外部转发任何 somethingelse.company.net 记录。我问的原因要复杂得多,我想问一个尽可能简短的问题。所以只是假设这个解决方案现在不适用于这里。如果您能专注于上述问题,我将不胜感激。
编辑:所以最后,内部 DNS 服务器应该做这样的事情:
- DNS 服务器从客户端获取 email.company.net 的请求
- DNS 服务器在他的内部区域 company.net 中进行查找
- DNS 服务器返回 IP 172.20.1.1 给客户端
- DNS 服务器从客户端获取 video.company.net 的请求
- DNS 服务器在他的内部区域 company.net 中进行查找
- DNS 服务器找不到 video.company.net 的条目
- 然后 DNS 服务器通过他的根提示进行递归查找
- DNS服务器最终得到答案并将IP 22.191.72.49返回给客户端
不幸的是,你想要的是不可能的;当您在内部 DNS 服务器中创建一个区域并将其定义为主要区域时,该服务器将假定对该区域具有权威性,因此将以“此记录不存在”来回答任何它不知道的记录请求.
唯一的解决方法是您已经知道的解决方法:您可以仅为您实际要屏蔽的记录定义子区域,然后在其中创建空记录;空记录映射到区域的全名,因此最终效果是相同的,但是这样的区域不会掩盖主区域中的所有其他名称,这将使用标准递归来解决。
在您的示例中,您应该创建一个名为的区域
email.company.net
,然后在其中创建一个指向 172.20.1.1 的空 A 记录;内部查询email.company.net
将通过 172.20.1.1 得到答复,但这不会影响对 的查询video.company.net
,这将通过查询公共 DNS 继续得到解决。顺便说一句,这个技巧不仅适用于 A 记录,而且适用于任何可以为空的记录(例如 SRV)。