我很为难。
我需要在办公室实施水平分割 DNS基于子网。 例如:
- 10.170.0.0/16 中的用户需要将“srv01.extra.company.com”解析为
10.170.0.510.25.0.170 - 10.180.0.0/16 中的用户需要将“srv01.extra.company.com”解析为
10.180.0.510.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 拆分?