如何配置 AD 中的 DNS 以便为域中的某些名称返回本地地址,并为其他名称使用外部 DNS?

如何配置 AD 中的 DNS 以便为域中的某些名称返回本地地址,并为其他名称使用外部 DNS?

我对 Active Directory 还比较陌生。

在局域网中,我们需要为某些名称返回一些本地地址,但对于其他名称,我们只想从外部 DNS 获取原样 IP。

示例:IN LAN:name1.domain.com : 192.168.1.114(这将由 AD 解析并指向 LAN 服务器)name2.domain.com : 52.45.123.21(这将由公共 DNS 解析)

局域网外: name1.domain.com : 34.54.12.56(这将由公共 DNS 解析) name2.domain.com : 52.45.123.21(这将由公共 DNS 解析)

我们如何才能在不复制 Active Directory DNS 中的公共服务器的所有 DNS 条目的情况下做到这一点?

我现在看到的是,为了使 IN-LAN 示例正常工作,我需要同时定义 name1 和 name2(即使我不想修改 name2 的 IP——我想要的是公共 DNS 值)。

换句话说,我希望重新定义某些 DNS 条目,但不希望重新定义其他条目。

有什么办法吗?

谢谢

答案1

不幸的是,手动设置是这种情况的终极解决方案。正如 @Seth 在其评论中指出的那样,您谈论的是我们所谓的 Split-Brain DNS 设置。虽然有多种方法可以实现这一点,但具体取决于您的确切网络布局和运行各种服务的软件,它们都归结为“手动维护”。

域名系统的设计理念是每个区域只有一个权限记录。也就是说,如果您的区域是,domain.com那么以结尾的每个记录domain.com都定义相同。它可能在多个名称服务器之间复制,但这是出于冗余的原因,而不是出于“不同位置的不同值”的原因。这反过来意味着name1.domain.com,根据 DNS 设计,应该在任何地方返回相同的值。

您可以通过在您完全控制的网络内施加压倒性的控制来“劫持”它。

一种常见的方法是 Split-Brain DNS。如果您的网络上有一个私有的内部 DNS 服务器,那么您可以用与公开信息不匹配的本地区域加载它(一个大脑在互联网上,另一个在 LAN 上)。现​​在,您的本地服务器将使用其区域配置中的信息进行回答,假设它是最新信息的主要权威机构;同样,公共 DNS 也会认为它是负责人。两者都不会向对方寻求信息,因为他们认为对方是主要来源。但这就是关键所在,每个人都认为自己是负责人,所以没有理由去其他地方寻找。这导致您必须维护两个单独的区域配置(并不总是很有趣,但对我们大多数人来说,这是日常生活的一部分)。如果任何一个服务器意识到它需要去其他地方寻找,它就会承认它不是该区域的权威,它需要在其他地方寻找每一个对其提出的请求。

您仍会经常看到的另一种方法是 DNS 重写(又称 DNS 篡改)。此方法仅在名称domain.com不是您的 AD 域时才有效(阅读:内部不需要能够使用内置 Windows DNS 客户端自动更新此域上的 DNS 条目)。如果您有domain.com除 AD-DS 以外的其他服务的现有外部设置,但您希望内部用户访问不同的 IP(内部门户版本、更快的路由等),那么您可以进行重写。在此设置中,唯一的 DNS 服务器是 Internet/公共 DNS,并且您的网络边缘有修改 DNS 响应的元素。这曾经是许多 NAT 设备上制作静态映射时的常见设置(例如设置 DMZ 元素时)。NAT 看到 DNS 响应通过,响应值为 34.54.12.56,它会自动替换有效负载中的数据,以便客户端收到的响应为 192.168.1.114。在这种情况下,您在外部服务器中维护完整的 DNS 区域;然后,您就可以使重写规则保持最新,仅包含网络中需要“不同”的内容。 同样,这里也需要手动维护,但这种方法的优点是您只需重复输入需要修改的特定项目,而不是每条记录(缺点是您必须在 LAN 边缘打开/检查/修改流经网络的数据包)。

无论哪种方式都需要人工干预和双重输入数据。更常见和稳定的方法是 Split-Brain 方法。但是,正如 DNS Doctoring 所示,还有其他方法可以实现您的目标;每种方法都有各自的优点和缺点。

结论 如果您想要最常用的标准方法,并且我们知道该方法通过大量经验是有效的,那么您应该坚持使用 Split-Brain DNS。它适用于 AD,即使在主 AD/DS 域上也是如此。但它确实需要在内部和外部世界中都拥有完全权威的区域。

相关内容