掌握 AD DNS 转发器和条件转发器

Windows DNS转发器和DNS条件转发器是您DNS基础设施的重要组成部分。在本教程中,我们将介绍AD DNS转发器以及如何在您的环境中管理它们。

您会发现,偶尔您需要添加或管理这些转发器地址。其中一些更改需要在您企业的多个DNS服务器上进行。幸运的是,使用诸如PowerShell的Set-DnsServerForwarder cmdlet等命令,您可以轻松管理这两种DNS服务。

本博文有一段配套视频,由

替换DNS转发器

DNS转发器由DNS服务器用于查找不包含在服务器权限范围内的任何区域中的地址的查询。这为您的DNS服务器提供了一种有效的解析名称的方法。如果没有设置转发器,则您的DNS服务器将不得不查询根提示服务器以开始解析未知地址。

虽然这些转发器地址在每个DNS服务器上单独配置,但使用PowerShell可以通过允许我们使用Set-DnsServerForwarder cmdlet来更轻松地管理它们。

开始查看本地DNS服务器的当前配置的转发器。我们将使用Get-DnsServerForwarder cmdlet进行此操作。我们首先使用Get-* cmdlet,因为您首先需要查找所有现有的转发器。

如下所示,配置了两个转发器,IP地址为8.8.8.8和8.8.4.4。

PS> Get-DnsServerForwarder
Finding existing DNS server forwarders

现在添加一个额外的转发器。这个转发器可能是您在DMZ中配置的新DNS服务器,或者可能是使用ISP提供的转发地址。在这种情况下,您将使用Set-DnsServerForwarder cmdlet来设置新地址,然后使用Get-DnsServerForwarder来确认地址是否设置正确。

Set-DnsServerForwarder -IPAddress 192.168.1.1
Get-DnsServerForwarder
Confirming DNS server forwarder change

不幸的是,这没有达到期望的结果。如上所示,使用Set-DnsServerForwarder cmdlet实际上是替换了转发器列表而不是添加到其中。为了将地址添加到列表中,而不是替换整个列表,您需要使用Add-DnsServerForwarder

为了纠正这个问题,替换列表为原始的两个转发器,添加新地址,然后检查您是否成功。

Set-DnsServerForwarder -IPAddress 8.8.8.8, 8.8.4.4
Add-DnsServerForwarder -IPAddress 192.168.1.1
Get-DnsServerForwarder
Confirming DNS server forwarder addition

您现在已经添加了所有三个转发器。

移除DNS转发器

假设您想要移除一个转发器地址,您将使用Remove-DnsServerForwarder cmdlet如下所示。然后,您将检查地址是否已被移除。

如果Set-DnsServerForwarder替换了DNS转发器,Remove-DnsServerForwarder将完全移除它。

Remove-DnsServerForwarder -IPAddress 192.168.1.1
Get-DnsServerForwarder
Confirming DNS server forwarder removal

扩展到多个DNS服务器

有时,您需要能够在多个DNS服务器上添加或删除转发器地址。在这种情况下,Set-DnsServerForwarder将无法工作。幸运的是,PowerShell使得将此任务扩展到多个DNS服务器相对容易。如果您使用Invoke-Command,包括我们所有DNS服务器的列表,然后将Add-DnsServerForwarder放入脚本块参数值中,您可以使用单个命令修改所有DNS服务器。然后使用类似的命令查看我们更改的结果。

Invoke-Command -ComputerName DC01, DC02, DC03 -ScriptBlock {
    Add-DnsServerForwarder -IPAddress 192.168.1.1
}
Invoke-Command -ComputerName DC01, DC02, DC03 -ScriptBlock { Get-DnsServerForwarder }
Adding DNS server forwarders on multiple DNS Servers

DNS条件转发器

A special type of forwarder, called a conditional forwarder, cannot be modified with the Set-DnsServerForwarder cmdlet. This type of forwarder can be used when you have been provided with the IP address(es) of the DNS server(s) for a known DNS domain name.

DNS条件转发器在使用本文中先前列出的服务器转发器之前由DNS服务器使用。

例如,如果您为tailspintoys.com配置了一个条件转发器,那么您的DNS服务器将在检查它是否是其具有权威性的域之后,检查条件转发器并发现存在条目。在此时,您的DNS服务器将查询tailspintoys.com域中所需地址的DNS服务器。

DNS条件转发器的一个好处是它们可以像任何Active Directory集成的DNS区域一样复制到其他DNS服务器。

首先,通过使用Get-DnsServerZone cmdlet来检查是否已配置了条件转发器。

PS> Get-DnsServerZone
Finding DNS server zones

在这个列表中,条件转发器显示为ZoneTypeforwarder。在这种情况下,我们没有配置任何转发器。所以,您将使用Add-DnsServerConditionalForwarderZone来创建条件转发器,将其设置为复制到整个Active Directory林,并确认已创建。

PS> Add-DnsServerConditionalForwarderZone `
    -Name tailspintoys.com `
    -MasterServers 10.10.14.240,10.10.14.241 `
    -ReplicationScope Forest

PS> Get-DnsServerZone
Verifying new DNS server conditional forwarder zone

输出显示您已经配置了我们的条件转发器,并且准备就绪。

总结

PowerShell确实使管理DNS转发器变得轻而易举!现在,您应该能够使用PowerShell以许多不同的方式管理和自动化AD DNS转发器。我们几乎涵盖了这些转发器的各个方面。

Source:
https://adamtheautomator.com/dns-conditional-forwarder/