我想我已经知道了一半的答案,但需要帮助完成最后的步骤......
我正在尝试将我们的 Windows 2016 DNS 服务器配置为作为内部子网上的客户端的递归服务器响应,但仅响应来自外部子网上的客户端对我们域的请求。
我主要通过以下方法实现了这一点(网络号码已更改)
Set-DnsServerRecursionScope -Name . -EnableRecursion $False
Add-DnsServerRecursionScope -Name "Internal" -EnableRecursion $true -Forwarder X.X.X.X,Y.Y.Y.Y
Add-DnsServerClientSubnet -Name "10.1" -IPv4Subnet 10.1.0.0/16 -PassThru
Add-DnsServerClientSubnet -Name "172.20" -IPv4Subnet 172.20.0.0/16 -PassThru
Add-DnsServerClientSubnet -Name "172.21" -IPv4Subnet 172.21.0.0/16 –PassThru
Add-DnsServerClientSubnet -Name LoopBackSubnet -IPv4Subnet 127.0.0.0/8 -IPv6Subnet ::1/128
Add-DnsServerQueryResolutionPolicy -Name "Allow10.1" -Action ALLOW - ApplyOnRecursion -RecursionScope "Internal" -ClientSubnet "EQ,10.1" -PassThru
Add-DnsServerQueryResolutionPolicy -Name "Allow172.20" -Action ALLOW -ApplyOnRecursion -RecursionScope "Internal" -ClientSubnet "EQ,172.20" -PassThru
Add-DnsServerQueryResolutionPolicy -Name "Allow172.21" -Action ALLOW -ApplyOnRecursion -RecursionScope "Internal" -ClientSubnet "EQ,172.21" –PassThru
Add-DnsServerQueryResolutionPolicy -Name "AllowLocal" -Action ALLOW -ApplyOnRecursion -RecursionScope "Internal" -ClientSubnet "EQ,LoopBackSubnet" –PassThru
如果客户端不在定义的子网之一上,则这会产生不执行递归查找的预期效果,但是如果答案在缓存中,服务器仍将响应递归查找。
我尝试了一种不同的方法(首先删除上述策略并在默认范围内重新启用递归查找):
Set-DnsServerRecursionScope -Name . -EnableRecursion $true -Forwarder X.X.X.X,Y.Y.Y.Y
Add-DnsServerQueryResolutionPolicy -Name "DenyRecursion" -Action DENY -ClientSubnet "NE,10.1,172.20,172.21,LoopBackSubnet" -PassThru –FQDN “NE,*.TESTDOMAIN.COM”
这并没有达到我预期的效果,因为内部子网和外部子网都没有提供递归答案。
有没有办法在第一次设置时禁用缓存,或者有人可以指出我在第二次尝试中遗漏了什么,以便我的内部子网可以使用 DNS 服务器作为“完整”(递归)服务器,但外部客户端只能查询我区域中的主机(而看不到任何缓存的答案)?