在 Active Directory 中为拆分式 DNS 使用 DNS 策略

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

你可以按照本主题的说明,在 Windows Server 2016 中使用 Active Directory 集成的 DNS 区域,利用 DNS 策略的流量管理功能进行拆分式部署。

在 Windows Server 2016 中,DNS 策略支持已扩展到 Active Directory 集成的 DNS 区域。 Active Directory 集成为 DNS 服务器提供多主服务器高可用性功能。

以前,此方案需要 DNS 管理员维护两个不同的 DNS 服务器,其中每个服务器为每组用户(内部和外部)提供服务。 如果区域中只有少量记录已拆分,或者区域的两个实例(内部和外部)都委托给同一个父域,则就会形成一个管理难题。

注意

  • 如果单个区域有两个版本,一个版本用于组织 Intranet 上的内部用户,另一个版本用于外部用户(通常为 Internet 上的用户),则 DNS 部署是拆分式的。
  • 使用 DNS 策略进行拆分式 DNS 部署主题介绍了如何使用 DNS 策略和区域范围在单个 Windows Server 2016 DNS 服务器上部署拆分式 DNS 系统。

Active Directory 中的示例拆分式 DNS

此示例使用一家虚构公司 Contoso,该公司在 www.career.contoso.com 上维护一个招聘网站。

该网站有两个版本,一个版本供内部用户使用,其中提供内部职位公告。 此内部站点可通过本地 IP 地址 10.0.0.39 访问。

第二个版本是该网站的公开版本,可以通过公共 IP 地址 65.55.39.10 访问。

在没有 DNS 策略的情况下,管理员需要将这两个区域托管在不同的 Windows Server DNS 服务器上,并分开进行管理。

如果使用 DNS 策略,这些区域可以托管在同一个 DNS 服务器上。

如果 contoso.com 的 DNS 服务器是 Active Directory 集成的,并且正在两个网络接口上进行侦听,则 Contoso DNS 管理员可以按照本主题中的步骤实现拆分式部署。

DNS 管理员使用以下 IP 地址配置 DNS 服务器接口。

  • 面向 Internet 的网络适配器配置了公共 IP 地址 208.84.0.53,用于外部查询。
  • 面向 Intranet 的网络适配器配置了专用 IP 地址 10.0.0.56,用于内部查询。

下图描绘了此方案。

Split-Brain AD integrated DNS Deployment

Active Directory 中的拆分式 DNS 的 DNS 策略如何工作

为 DNS 服务器配置所需的 DNS 策略后,将根据 DNS 服务器上的策略评估每个名称解析请求。

此示例中使用服务器接口作为区分内部和外部客户端的条件。

如果用于接收查询的服务器接口与任何策略匹配,则关联的区域范围将用于响应查询。

因此,在本示例中,通过专用 IP (10.0.0.56) 接收的、针对 www.career.contoso.com 的 DNS 查询将收到包含内部 IP 地址的 DNS 响应;通过公共网络接口接收的 DNS 查询将收到包含默认区域范围内的公共 IP 地址的 DNS 响应(这与常规查询解析相同)。

仅默认区域范围支持动态 DNS (DDNS) 更新和清理。 由于内部客户端由默认区域范围提供服务,因此 Contoso DNS 管理员可以继续使用现有机制(动态或静态 DNS)来更新 contoso.com 中的记录。 对于非默认区域范围(例如本例中的外部范围),DDNS 或清理支持不可用。

策略的高可用性

DNS 策略不是 Active Directory 集成的。 因此,DNS 策略不会复制到托管同一 Active Directory 集成区域的其他 DNS 服务器。

DNS 策略存储在本地 DNS 服务器上。 可以使用以下示例 Windows PowerShell 命令轻松地将 DNS 策略从一台服务器导出到另一台服务器。

$policies = Get-DnsServerQueryResolutionPolicy -ZoneName "contoso.com" -ComputerName Server01
$policies |  Add-DnsServerQueryResolutionPolicy -ZoneName "contoso.com" -ComputerName Server02

有关详细信息,请参阅以下 Windows PowerShell 参考主题。

如何在 Active Directory 中为拆分式 DNS 配置 DNS 策略

若要使用 DNS 策略配置 DNS 拆分式部署,必须按照以下部分提供的详细配置说明进行操作。

添加 Active Directory 集成区域

可以使用以下示例命令将 Active Directory 集成的 contoso.com 区域添加到 DNS 服务器。

Add-DnsServerPrimaryZone -Name "contoso.com" -ReplicationScope "Domain" -PassThru

有关详细信息,请参阅 Add-DnsServerPrimaryZone

创建区域的范围

可以使用此部分对区域 contoso.com 进行分区以创建外部区域范围。

区域范围是区域的唯一实例。 一个 DNS 区域可以有多个区域范围,且每个区域范围都包含自己的一组 DNS 记录。 同一记录可以存在于具有不同 IP 地址或相同 IP 地址的多个范围中。

由于你要在 Active Directory 集成的区域中添加这个新的区域范围,因此区域范围及其中的记录将通过 Active Directory 复制到域中的其他副本服务器。

默认情况下,每个 DNS 区域中都存在一个区域范围。 此区域范围与区域同名,旧的 DNS 操作在此范围中运行。 此默认区域范围将托管 www.career.contoso.com 的内部版本。

可以使用以下示例命令在 DNS 服务器上创建区域范围。

Add-DnsServerZoneScope -ZoneName "contoso.com" -Name "external"

有关详细信息,请参阅 Add-DnsServerZoneScope

将记录添加到区域范围

下一步是将代表 Web 服务器主机的记录添加到两个区域范围 – 外部区域范围和默认区域范围(用于内部客户端)。

在默认内部区域范围内,为记录 www.career.contoso.com 添加了 IP 地址 10.0.0.39,这是一个专用 IP 地址;在外部区域范围内,为同一记录 (www.career.contoso.com) 添加了公共 IP 地址 65.55.39.10。

记录(在默认的内部区域范围和外部区域范围内)及其各自的区域范围将自动跨域复制。

可以使用以下示例命令将记录添加到 DNS 服务器上的区域范围。

Add-DnsServerResourceRecord -ZoneName "contoso.com" -A -Name "www.career" -IPv4Address "65.55.39.10" -ZoneScope "external"
Add-DnsServerResourceRecord -ZoneName "contoso.com" -A -Name "www.career" -IPv4Address "10.0.0.39”

注意

将记录添加到默认区域范围时,不包括 –ZoneScope 参数。 此操作与将记录添加到普通区域的操作相同。

有关详细信息,请参阅 Add-DnsServerResourceRecord

创建 DNS 策略

确定外部网络和内部网络的服务器接口并创建区域范围后,必须创建用于连接内部和外部区域范围的 DNS 策略。

注意

此示例使用服务器接口(下面的示例命令中的 -ServerInterface 参数)作为区分内部和外部客户端的标准。 区分外部和内部客户端的另一种方法是使用客户端子网作为条件。 如果可以识别内部客户端所属的子网,则可以配置 DNS 策略以根据客户端子网进行区分。 有关如何使用客户端子网条件配置流量管理的信息,请参阅在主服务器上使用 DNS 策略进行基于地理位置的流量管理

配置策略后,在公共接口上收到 DNS 查询时,将从区域的外部范围返回答案。

注意

映射默认的内部区域范围不需要任何策略。

Add-DnsServerQueryResolutionPolicy -Name "SplitBrainZonePolicy" -Action ALLOW -ServerInterface "eq,208.84.0.53" -ZoneScope "external,1" -ZoneName contoso.com

注意

208.84.0.53 是公共网络接口上的 IP 地址。

有关详细信息,请参阅 Add-DnsServerQueryResolutionPolicy

现在,DNS 服务器配置了使用 Active Directory 集成 DNS 区域的拆分名称服务器所需的 DNS 策略。

可以根据流量管理要求创建数以千计的 DNS 策略,所有新策略都会动态应用于传入的查询,且无需重启 DNS 服务器。