在AD集成区域和较旧的DC上,Windows 2016 DNS策略/分割DNS是否可行?

Windows Server 2016支持DNS策略 ,它可以在其他场景中为裂脑DNS提供支持:

您可以configurationDNS策略来指定DNS服务器如何响应DNS查询。 DNS响应可以基于客户端IP地址(位置),一天的时间以及其他几个参数。 DNS策略支持位置感知DNS,stream量pipe理,负载平衡,裂脑DNS以及其他场景。

我已经阅读了“ DNS策略概述”页面,但似乎无法find关于AD集成区域如何工作的文档,但并非所有的DC都是Server 2016。

我无法想象它能够很好地工作,因为底层服务器不知道如何解释策略并采取相应的行动,但是由于信息是在AD中复制的,所以我可以预见到一种情况,旧的DC忽略新的属性,以某种“默认”的方式(不适用政策),而新的区议会则会根据政策作出反应。

我认为在某些情况下,你可以(或者已经)有客户端指向DC的一个子集,这样可以提供一种使用新特性而不一次升级所有DC的方法。

但是,我无法find任何有关我所描述的内容是实际上是如何工作的信息,或者是否在混合环境中根本不能使用这些新function,或者是否在两者之间使用这些新function。


警告

我最近发现,在DNS策略cmdlet上, -WhatIf-Verbose-ErrorAction参数被破坏; 投票在这里有固定的 。 并且要小心!

这吸引了我的好奇心 – 也是+1的一个有见地的问题 – 所以我build立了一个快速实验室来testing这个:

  • Win2012-DC :Windows Server 2012 R2,升级到新的test.local林/域的域控制器。
  • Win2016-DC :Windows Server 2016,升级为上述test.local域的第二个域控制器。

从今天(2016-10-29)开始,所有事情都已经完全修补并保持最新状态。 森林和域名的function级别是2012 R2。 这两台服务器也被configuration为这个testing域的DNS服务器。

总之,结果似乎是你后来预见到的:

较早的区议会忽略新的属性,并以某种“默认”的方式作出回应(不适用政策),而新的区议会则根据政策作出反应。

我浏览了https://technet.microsoft.com/en-us/windows-server-docs/networking/dns/deploy/dns-policies-overview中logging的大多数场景。 为简洁起见,以下是两个特定场景的细节:

阻止域查询

这在2016年的DC上没有问题 – 但是2012年的DC显然甚至不承认这个命令:

 Add-DnsServerQueryResolutionPolicy -Name "BlackholePolicy" -Action IGNORE -FQDN "EQ,*.treyresearch.com" 

当针对2016年DC发布针对www.treyresearch.com的DNS查询时,未给出任何响应,并且请求超时。 当针对2012年发行的同一查询时,它不知道该政策,并提供由上游Alogging组成的预期响应。

应用程序负载平衡与地理位置意识

本文包含的PowerShell命令供参考:

 Add-DnsServerZoneScope -ZoneName "contosogiftservices.com" -Name "DublinZoneScope" Add-DnsServerZoneScope -ZoneName "contosogiftservices.com" -Name "AmsterdamZoneScope" Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "www" -IPv4Address "151.1.0.1" -ZoneScope "DublinZoneScope” Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "www" -IPv4Address "141.1.0.1" -ZoneScope "AmsterdamZoneScope" Add-DnsServerQueryResolutionPolicy -Name "AmericaLBPolicy" -Action ALLOW -ClientSubnet "eq,AmericaSubnet" -ZoneScope "SeattleZoneScope,2;ChicagoZoneScope,1; TexasZoneScope,1" -ZoneName "contosogiftservices.com" –ProcessingOrder 1 Add-DnsServerQueryResolutionPolicy -Name "EuropeLBPolicy" -Action ALLOW -ClientSubnet "eq,EuropeSubnet" -ZoneScope "DublinZoneScope,1;AmsterdamZoneScope,1" -ZoneName "contosogiftservices.com" -ProcessingOrder 2 Add-DnsServerQueryResolutionPolicy -Name "WorldWidePolicy" -Action ALLOW -FQDN "eq,*.contoso.com" -ZoneScope "SeattleZoneScope,1;ChicagoZoneScope,1; TexasZoneScope,1;DublinZoneScope,1;AmsterdamZoneScope,1" -ZoneName "contosogiftservices.com" -ProcessingOrder 3 

这里的结果几乎比上面“糟糕”: www.contosogiftservices.com仅通过策略进行有效注册,2012 DC对此一无所知,并返回一个NXDOMAIN。 (在传统的DNSpipe理控制台上,无论是2012年还是2016年的服务器都没有wwwlogging)。2016服务器按照上述策略进行响应。

概要

我在这里没有看到阻止在function级别较低的域中使用2016function的任何内容。 如果可能的话,最简单和最不容易混淆的select可能就是停止使用剩余的2012年DC作为DNS服务器。 面临一些额外的复杂性风险,您可以针对特定需求的支持政策的2016年服务器,例如recursion策略来支持(有限的)裂脑部署scheme。