使用针对基于地理位置的流量管理和主要-辅助部署的 DNS 策略

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

你可以使用本主题了解当你的 DNS 部署包括主 DNS 服务器和辅助 DNS 服务器时,如何为基于地理位置的流量管理创建 DNS 策略。

前面的方案“使用 DNS 策略对主服务器进行基于地理位置的流量管理”提供了在主 DNS 服务器上为基于地理位置的流量管理配置 DNS 策略的说明。 然而,在 Internet 基础架构中,DNS 服务器广泛部署在主要/辅助模型中,其中区域的可写副本存储在选定的安全主服务器上,而区域的只读副本则保存在多个辅助服务器上。

辅助服务器使用区域传输协议授权传输 (AXFR) 和增量区域传输 (IXFR) 来请求和接收区域更新,其中包括对主 DNS 服务器上区域的新更改。

注意

有关 AXFR 的更多信息,请参阅互联网工程任务组 (IETF) 征求意见 5936。 有关 IXFR 的更多信息,请参阅互联网工程任务组 (IETF) 征求意见 1995

基于主要/辅助地理位置的交通管理示例

下面是一个示例,说明如何在主要/辅助部署中使用 DNS 策略,根据执行 DNS 查询的客户端的物理位置实现流量重定向。

此示例使用两个虚构的公司 - 提供 Web 和域托管解决方案的 Contoso 云服务;以及 Woodgrove Food Services(伍德格罗夫食品服务公司),该公司在全球多个城市提供食品配送服务,并拥有一个名为 woodgrove.com 的网站。

为了确保 woodgrove.com 客户从其网站获得快速响应的体验,Woodgrove 希望将欧洲客户定向到欧洲数据中心,将美国客户定向到美国数据中心。 位于世界其他地方的客户可以被定向到任何一个数据中心。

Contoso 云服务有两个数据中心,一个在美国,另一个在欧洲,Contoso 在这两个数据中心上托管 woodgrove.com 的订餐门户。

Contoso DNS 部署包括两个辅助服务器 SecondaryServer1 和 SecondaryServer2,IP 地址分别为 10.0.0.2 和 10.0.0.3。 这些辅助服务器在两个不同的地区充当名称服务器,SecondaryServer1 位于欧洲,SecondaryServer2 位于美国。

在 PrimaryServer(IP 地址 10.0.0.1)上有一个主可写区域副本,在其中进行区域更改。 通过定期将区域传输到辅助服务器,辅助服务器始终能够及时了解主服务器上区域的任何新更改。

下图描述了此方案。

Primary-Secondary Geo-Location Based Traffic Management Example

DNS 主要/辅助系统的工作原理

当你在主要/辅助 DNS 部署中部署基于地理位置的流量管理时,在了解区域范围级别传输之前,了解正常的主要/辅助区域传输的进行方式非常重要。 以下各节提供了有关区域和区域范围级别传输的信息。

DNS 主要/辅助部署中的区域传输

你可以通过以下步骤创建 DNS 主要/辅助部署并同步区域。

  1. 安装 DNS 时,将在主 DNS 服务器上创建主要区域。
  2. 在辅助服务器上,创建区域并指定主服务器。
  3. 在主服务器上,可以将辅助服务器作为受信任的辅助服务器添加到主区域中。
  4. 辅助区域发出完整的区域传输请求 (AXFR) 并接收该区域的副本。
  5. 需要时,主服务器会向辅助服务器发送有关区域更新的通知。
  6. 辅助服务器发出增量区域复制请求 (IXFR)。 因此,辅助服务器与主服务器保持同步。

DNS 主要/辅助部署中的区域作用域级别传输

流量管理场景需要额外的步骤来将区域划分为不同的区域范围。 因此,需要额外的步骤来将区域范围内的数据传输到辅助服务器,并将策略和 DNS 客户端子网传输到辅助服务器。

使用主服务器和辅助服务器配置 DNS 基础结构后,DNS 将使用以下过程自动执行区域作用域级别传输。

为了确保区域范围级别传输,DNS 服务器使用 DNS (EDNS0) OPT RR 的扩展机制。 来自具有作用域的区域的所有区域传输(AXFR 或 IXFR)请求都源自 EDNS0 OPT RR,其选项 ID 默认设置为“65433”。 有关 EDNSO 的更多信息,请参阅 IETF 征求意见 6891

OPT RR 的值是正在发送请求的区域作用域名称。 当主 DNS 服务器从受信任的辅助服务器接收到此数据包时,主 DNS 服务器会将该请求解释为来自该区域范围。

如果主服务器具有该区域范围,则主 DNS 服务器使用来自该范围的传输 (XFR) 数据进行响应。 响应包含具有相同选项 ID“65433”和设置为相同区域范围的值的 OPT RR。 辅助服务器接收此响应,从响应中检索范围信息,并更新区域的特定范围。

在此过程之后,主服务器将维护已发送此类区域范围请求通知的受信任辅助服务器的列表。

对于区域范围内的任何进一步更新,将使用相同的 OPT RR 向辅助服务器发送 IXFR 通知。 接收该通知的区域范围发出包含该 OPT RR 的 IXFR 请求,并执行与上述相同的过程。

如何为基于主要/辅助地理位置的流量管理配置 DNS 策略

在开始之前,请确保已完成使用 DNS 策略对主服务器进行基于地理位置的流量管理主题中的所有步骤,并且主 DNS 服务器已配置了区域、区域作用域、DNS 客户端子网和 DNS 策略。

注意

本主题中有关将 DNS 客户端子网、区域作用域和 DNS 策略从 DNS 主服务器复制到 DNS 辅助服务器的说明用于初始 DNS 设置和验证。 将来,你可能希望更改主服务器上的 DNS 客户端子网、区域范围和策略设置。 在这种情况下,你可以创建自动化脚本以使辅助服务器与主服务器保持同步。

要为基于主要/辅助地理位置的查询响应配置 DNS 策略,必须执行以下步骤。

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

重要

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

执行以下过程需要 DnsAdmins 的成员身份或同等身份。

创建辅助区域

你可以创建要复制到 SecondaryServer1 和 SecondaryServer2 的区域的辅助副本(假设从单个管理客户端远程执行 cmdlet)。

例如,可以在 SecondaryServer1 和 SecondarySesrver2 上创建 www.woodgrove.com 的辅助副本。

可以使用以下 Windows PowerShell 命令创建辅助区域。

Add-DnsServerSecondaryZone -Name "woodgrove.com" -ZoneFile "woodgrove.com.dns" -MasterServers 10.0.0.1 -ComputerName SecondaryServer1
Add-DnsServerSecondaryZone -Name "woodgrove.com" -ZoneFile "woodgrove.com.dns" -MasterServers 10.0.0.1 -ComputerName SecondaryServer2

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

在主要区域上配置区域传输设置

你必须配置主要区域设置,以便:

  1. 允许从主服务器到指定的辅助服务器进行区域传输。
  2. 区域更新通知由主服务器发送到辅助服务器。

可以使用以下 Windows PowerShell 命令在主要区域上配置区域传输设置。

注意

在以下示例命令中,-Notify 参数指定主服务器将发送有关辅助服务器选择列表更新的通知。

Set-DnsServerPrimaryZone -Name "woodgrove.com" -Notify Notify -SecondaryServers "10.0.0.2,10.0.0.3" -SecureSecondaries TransferToSecureServers -ComputerName PrimaryServer

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

复制 DNS 客户端子网

必须将 DNS 客户端子网从主服务器复制到辅助服务器。

可以使用以下 Windows PowerShell 命令将子网复制到辅助服务器。

Get-DnsServerClientSubnet -ComputerName PrimaryServer | Add-DnsServerClientSubnet -ComputerName SecondaryServer1
Get-DnsServerClientSubnet -ComputerName PrimaryServer | Add-DnsServerClientSubnet -ComputerName SecondaryServer2

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

在辅助服务器上创建区域作用域

必须在辅助服务器上创建区域作用域。 在 DNS 中,区域作用域也开始从主服务器请求 XFR. 对于主服务器上的区域范围的任何更改,包含区域范围信息的通知将发送到辅助服务器。 然后,辅助服务器可以使用增量更改来更新其区域范围。

可以使用以下 Windows PowerShell 命令在辅助服务器上创建区域作用域。

Get-DnsServerZoneScope -ZoneName "woodgrove.com" -ComputerName PrimaryServer|Add-DnsServerZoneScope -ZoneName "woodgrove.com" -ComputerName SecondaryServer1 -ErrorAction Ignore
Get-DnsServerZoneScope -ZoneName "woodgrove.com" -ComputerName PrimaryServer|Add-DnsServerZoneScope -ZoneName "woodgrove.com" -ComputerName SecondaryServer2 -ErrorAction Ignore

注意

在这些示例命令中,包含了 -ErrorAction Ignore 参数,因为每个区域上都存在默认的区域范围。 无法创建或删除默认区域作用域。 管道化将导致创建该作用域的尝试失败。 或者,你可以在两个辅助区域上创建非默认区域作用域。

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

配置 DNS 策略

创建子网、分区(区域范围)并添加记录后,必须创建连接子网和分区的策略,以便当查询来自其中一个 DNS 客户端子网中的源时,查询响应将从正确的区域范围返回。 映射默认区域范围不需要任何策略。

可以使用以下 Windows PowerShell 命令创建链接 DNS 客户端子网和区域范围的 DNS 策略。

$policy = Get-DnsServerQueryResolutionPolicy -ZoneName "woodgrove.com" -ComputerName PrimaryServer
$policy | Add-DnsServerQueryResolutionPolicy -ZoneName "woodgrove.com" -ComputerName SecondaryServer1
$policy | Add-DnsServerQueryResolutionPolicy -ZoneName "woodgrove.com" -ComputerName SecondaryServer2

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

现在,辅助 DNS 服务器配置了所需的 DNS 策略,以根据地理位置重定向流量。

当 DNS 服务器接收名称解析查询时,DNS 服务器会根据配置的 DNS 策略评估 DNS 请求中的字段。 如果名称解析请求中的源 IP 地址与任何策略匹配,将使用关联的区域范围来响应查询,并且会将用户定向到地理上最接近他们的资源。

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