如何将 Active Directory 与 Split-Horizo​​n DNS 结合起来?

如何将 Active Directory 与 Split-Horizo​​n DNS 结合起来?

我很为难。

我需要在办公室实施水平分割 DNS基于子网。 例如:

  • 10.170.0.0/16 中的用户需要将“srv01.extra.company.com”解析为10.170.0.5 10.25.0.170
  • 10.180.0.0/16 中的用户需要将“srv01.extra.company.com”解析为10.180.0.5 10.25.0.180
  • 10.0.0.0/8 中的其他设备需要将“srv01.extra.company.com”解析为 10.25.0.5

现在,使用 BIND 可以轻松实现这一点。不幸的是,我的网络基于 Active Directory;我不可能将所有工作站的 DNS 服务器更改为仅指向 BIND 服务器,对吗?它们需要指向域控制器。

我一直在考虑使用存根区域或者有条件转发器但根据我的理解,这些方法会让域控制器自己执行 DNS 解析,而不是让工作站联系相关的名称服务器。

您能建议什么来帮助解决这个水平分割问题?


附加信息:

  • AD FQDN 实际上是id.company.com,而不是 company.com。
  • 我上面的 IP 地址有误。已修复。

答案1

您几乎自己就找到了解决方案。

我假设这srv01.extra.company.com是您自己公司的服务器,因此您的名称服务器对此负责。

您说得对,您实际上不能使用存根区域或条件转发器,因为为此目的设置的名称服务器只能看到来自您的 AD DC 的查询。1

但一个常见的误解是,Active Directory 必须将 DC 设置为其名称服务器,或者客户端需要通过 DC 进行解析2

在这种特殊情况下,您需要设置一个适当的 BIND 来彻底解决所有问题(其中包括你的 AD!)。验证操作正确后,您可以extra.company.com向此服务器添加一个区域(有效地屏蔽真正的子域)。然后,您可以在那里根据自己的喜好覆盖记录。

但请注意,当这个 BIND 翻倒时,你的整个广告将停止,因为您的客户端的所有查询都通过此服务器。因此请进行相应设置(故障转移、备份、待机等)。

1从技术上讲,这并不适用于所有情况:如果客户端的解析器能够遵循引用,则权威名称服务器将看到来自客户端的查询。但是,由于几乎所有操作系统解析器都是存根解析器,因此这并不适用。

2安全地将 AD 的权威 NS 设置为 BIND 服务器,但这肯定不是某种一劳永逸的解决方案,它需要一些工作;例如添加特定记录并允许您的 DC 更新这些记录。Microsoft 对此有详尽的记录,请参阅微软 Technet 上的这篇文章首先。我通常会完全避免这种情况,而是company.com使用 BIND 提供服务,并将子域委托ad.company.com给 AD。不过,我认为在现有 AD 中这样做不值得,就像你的情况一样。

答案2

如果您想继续使用 Windows DNS,那么可能对您有帮助的功能称为网络掩码排序使用轮循机制。当您为同一主机配置多个 A 记录时,DNS 将根据客户端 IP 地址和子网返回具有优先级的结果。您可以定义地址掩码的哪一部分用于网络掩码排序,由于您的情况是 /16,因此您还需要使用以下方式覆盖默认值(即 /24)

Dnscmd /Config /LocalNetPriorityNetMask 0x0000FFFF

不幸的是,这只能涵盖示例中的前两种情况,第三种情况会比较棘手,因为只有来自 10.25.xx 的客户端才会匹配主机掩码。

答案3

如果 DNS 是您执行此操作的唯一方法,那么我认为您唯一真正的选择是使用 BIND 视图。

AD 工作站可以直接指向 BIND,只要 BIND 将所有针对您的 AD 域的请求转发到 AD DNS 服务器进行解析即可。实际上,我在一家非常大的组织中这样做,并且一切运行正常(包括动态更新等)。

这些服务器运行的是什么服务?如果它们是 HTTP,您是否可以使用 HTTP 重定向之类的方法将用户跳转到其本地服务器,而不是使用 DNS 拆分?

相关内容