使用针对拆分式 DNS 部署的 DNS 策略

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

可以使用本主题来了解如何在 Windows Server® 2016 中为拆分式 DNS 部署配置 DNS 策略,其中包含单个区域的两个版本 - 一个版本供组织 Intranet 上的内部用户使用,一个版本供外部用户(通常是 Internet 上的用户)使用。

注意

有关如何在 Active Directory 集成 DNS 区域中为拆分式 DNS 部署使用 DNS 策略的信息,请参阅在 Active Directory 中为拆分式 DNS 使用 DNS 策略

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

拆分式部署的另一种配置方案是用于 DNS 名称解析的选择性递归控制。 在某些情况下,企业 DNS 服务器既要通过 Internet 为内部用户执行递归解析,又要为外部用户充当权威名称服务器并为外部用户阻止递归。

本主题包含以下各节:

DNS 拆分式部署示例

以下示例说明如何使用 DNS 策略来实现前面所述的拆分式 DNS 方案。

本部分包含以下主题。

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

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

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

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

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

下图描绘了此方案。

Split-Brain DNS Deployment

DNS 拆分式部署的工作原理

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

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

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

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

如何配置 DNS 拆分式部署

若要使用 DNS 策略配置 DNS 拆分式部署,必须使用以下步骤。

以下部分提供了详细的配置说明。

重要

以下部分包括示例 Windows PowerShell 命令,其中包含许多参数的示例值。 运行这些命令之前,请确保将这些命令中的示例值替换为适合部署的值。

创建区域范围

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

注意

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

可以使用以下示例命令将区域范围 contoso.com 分区,以创建内部区域范围。 内部区域范围用于保留 www.career.contoso.com 的内部版本。

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

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

将记录添加到区域范围

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

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

将记录添加到默认区域范围时,以下示例命令中未提供 –ZoneScope 参数。 这类似于将记录添加到普通区域。

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

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

创建 DNS 策略

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

注意

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

当 DNS 服务器通过专用接口接收查询时,将从内部区域范围返回 DNS 查询响应。

注意

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

在以下示例命令中,10.0.0.56 是专用网络接口上的 IP 地址,如上图所示。

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

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

DNS 选择性递归控制示例

以下示例说明如何使用 DNS 策略来实现前面所述的 DNS 选择性递归控制方案。

本部分包含以下主题。

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

在 DNS 拆分式部署示例中,同一个 DNS 服务器响应外部和内部客户端,并为它们提供不同的答复。

某些 DNS 部署除了要求同一 DNS 服务器充当外部客户端的权威名称服务器之外,还可能要求它为内部客户端执行递归名称解析。 这种情况称为 DNS 选择性递归控制。

在旧版 Windows Server 中,启用递归意味着在整个 DNS 服务器上为所有区域启用递归。 由于 DNS 服务器还要侦听外部查询,因此这为内部和外部客户端启用了递归,导致 DNS 服务器成了一个开放的解析器。

配置为开放解析器的 DNS 服务器可能容易受到资源耗尽的影响,并可能被恶意客户端滥用以创建反射攻击。

因此,Contoso DNS 管理员不希望 contoso.com 的 DNS 服务器为外部客户端执行递归名称解析。 只有内部客户端需要递归控制,对于外部客户端可以阻止递归控制。

下图描绘了此方案。

Selective Recursion Control

DNS 选择性递归控制的工作原理

如果收到针对非权威性 Contoso DNS 服务器的查询(例如,对 https://www.microsoft.com 的查询),则会根据 DNS 服务器上的策略评估名称解析请求。

由于这些查询不属于任何区域,因此不会评估区域级别的策略(如拆分式示例中所定义)。

DNS 服务器评估递归策略,并且通过专用接口接收的查询与 SplitBrainRecursionPolicy 匹配。 此策略指向启用递归的递归范围。

然后,DNS 服务器执行递归以从 Internet 获取 https://www.microsoft.com 的答复,并在本地缓存响应。

如果通过外部接口接收查询,则不会有任何 DNS 策略匹配,并且会应用默认递归设置(在本例中为“已禁用”)。

这可以防止服务器既充当外部客户端的开放解析器,又充当内部客户端的缓存解析器。

如何配置 DNS 选择性递归控制

若要使用 DNS 策略配置 DNS 选择性递归控制,必须使用以下步骤。

创建 DNS 递归范围

递归范围是用于控制 DNS 服务器递归的一组设置的唯一实例。 递归范围包含转发器列表,并指定是否启用递归。 一个 DNS 服务器可以有多个递归范围。

旧递归设置和转发器列表称为默认递归范围。 不能添加或删除由句点(“.”)标识的默认递归范围。

在此示例中,默认递归设置已禁用,而内部客户端的新递归范围是在启用递归的情况下创建的。

Set-DnsServerRecursionScope -Name . -EnableRecursion $False
Add-DnsServerRecursionScope -Name "InternalClients" -EnableRecursion $True

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

创建 DNS 递归策略

可以创建 DNS 服务器递归策略来为一组匹配特定条件的查询选择递归范围。

如果 DNS 服务器对某些查询没有权威性,则可以通过 DNS 服务器递归策略来控制如何解析这些查询。

在此示例中,启用递归的内部递归范围与专用网络接口相关联。

可以使用以下示例命令配置 DNS 递归策略。

Add-DnsServerQueryResolutionPolicy -Name "SplitBrainRecursionPolicy" -Action ALLOW -ApplyOnRecursion -RecursionScope "InternalClients" -ServerInterfaceIP "EQ,10.0.0.39"

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

现在,为 DNS 服务器配置了所需的 DNS 策略,该服务器是拆分式名称服务器,或者是为内部客户端启用了选择性递归控制的 DNS 服务器。

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

有关详细信息,请参阅 DNS 策略方案指南