
В этой статье мы рассмотрим два способа организации условного разрешения имен в DNS-сервере на Windows Server 2016/2019/2022: Условная переадресация DNS и Политики DNS. Эти технологии позволяют настраивать условное разрешение имен DNS на основе запрашиваемого имени, IP-адреса, местоположения клиента, времени суток и т. д.
Условная переадресация DNS позволяет перенаправлять DNS-запросы о конкретном домене на определенные DNS-серверы. Обычно условные переадресации используются, когда вы хотите настроить быстрое разрешение имен между несколькими частными внутренними доменами, или если вы не хотите, чтобы DNS-запросы с вашего сервера отправлялись через Интернет. В этом случае вы можете создать на своем DNS-сервере правило для перенаправления DNS-запросов для определенной доменной зоны (только!!!) на указанный DNS-сервер.
Как настроить условный переадресатор DNS на Windows Server?
Давайте попробуем настроить условную переадресацию DNS для определенной доменной зоны на Windows Server 2019. Например, все DNS-запросы к corp.woshub.com
должны перенаправляться на DNS-сервер 10.1.10.11
.
- Откройте консоль управления DNS (
dnsmgmt.msc
); - Разверните свой DNS-сервер, щелкните правой кнопкой мыши Условные переадресаторы, и выберите Новый условный пересыльщик;
- Введите FQDN домена, для которого вы хотите включить условную переадресацию, в поле DNS-домен поле;
- Укажите IP-адрес DNS-сервера, на который должны перенаправляться все запросы для указанного пространства имен в поле IP-адреса главных серверов поле;
- Если вы хотите хранить правило условной переадресации не только на одном DNS-сервере, вы можете интегрировать его с AD. Отметьте опцию Хранить этот условный переадресатор в Active Directory;
- Настройте параметр репликации с условной пересылкой (Все DNS-серверы в этом лесу, Все DNS-серверы в этом домене, или Все контроллеры домена в этом домене).
Настройка условной переадресации DNS с помощью PowerShell
Вы можете создать правило условной переадресации для зоны DNS с помощью PowerShell. Для этого используйте Add-DnsServerConditionalForwarderZone команда:
Add-DnsServerConditionalForwarderZone -Name dmz.woshub.com -MasterServers 192.168.1.11,192.168.101.11 -ReplicationScope Forest
Запустите следующий сценарий PowerShell, чтобы перечислить условные переадресаторы DNS на определенном сервере:
$DNSServer = "DC01"
$Zones = Get-WMIObject -Computer $DNSServer -Namespace "root\MicrosoftDNS" -Class "MicrosoftDNS_Zone"
$Zones | Select-Object Name,MasterServers,DsIntegrated,ZoneType | where {$_.ZoneType -eq "4"} | ft -AutoSize
Фильтрация DNS-запросов с помощью политик Windows Server DNS
В Windows Server 2016 добавлена функция политика DNS функция для DNS-сервера. DNS-политики позволяют настроить DNS-сервер на возврат различных ответов на DNS-запросы в зависимости от местоположения (в зависимости от IP-адреса или подсети, с которой был отправлен запрос), интерфейса DNS-сервера, времени суток, типа запрашиваемой записи (A, CNAME, PTR, MX) и т. д. Политики DNS в Windows Server позволяют реализовать балансировку нагрузки, фильтрацию DNS-трафика, возврат DNS-записей на основе географического положения (IP-адреса клиента) и другие сложные сценарии.
Вы можете создать политику на уровне DNS-сервера или определенной доменной зоны. Настройка политик DNS в Windows Server может быть выполнена только из командной строки PowerShell.
Давайте попробуем создать простую политику, которая будет возвращать разные ответы на DNS-запросы в зависимости от местоположения клиента. Предположим, вы хотите, чтобы клиенты в каждом филиале использовали свой локальный прокси-сервер на сайте.
Вы создали GPO для настройки параметров прокси в домене (proxy.woshub.com будет указан на всех клиентах). Однако, чтобы использовать локальный прокси-сервер, клиенты из разных офисов должны по-разному разрешать это FQDN.
Я создал 3 подсети для филиалов компании:
Add-DnsServerClientSubnet -Name "BER_DNS_Subnet" -IPv4Subnet "192.168.1.0/24"
Add-DnsServerClientSubnet -Name "HH_DNS_Subnet" -IPv4Subnet "192.168.11.0/24"
Add-DnsServerClientSubnet -Name "MCH_DNS_Subnet" -IPv4Subnet "192.168.21.0/24"
-ComputerName dc01
опцию.Список всех доступных IP-подсетей на DNS-сервере:
Get-DnsServerClientSubnet
Теперь нужно создать отдельную зону DNS для каждого офиса:
Add-DnsServerZoneScope -ZoneName "woshub.com" -Name "BERZoneScope"
Add-DnsServerZoneScope -ZoneName "woshub.com" -Name "HHZoneScope"
Add-DnsServerZoneScope -ZoneName "woshub.com" -Name "MCHZoneScope"
Следующие команды добавят 3 DNS-записи с одним и тем же именем, указывающие на разные IP-адреса в разных DNS-зонах:
Add-DnsServerResourceRecord -ZoneName "woshub.com" -A -Name proxy -IPv4Address "192.168.1.10" -ZoneScope "BERZoneScope"
Add-DnsServerResourceRecord -ZoneName "woshub.com" -A -Name proxy -IPv4Address "192.168.11.10" -ZoneScope "HHZoneScope"
Add-DnsServerResourceRecord -ZoneName "woshub.com" -A -Name proxy -IPv4Address "192.168.21.10" -ZoneScope "MCHZoneScope"
Get-DnsServerResourceRecord -ZoneName "woshub.com" -ZoneScope BERZoneScope
Затем создайте политики DNS, связывающие IP-подсети, зоны DNS и записи A.
Add-DnsServerQueryResolutionPolicy -Name BERResolutionPolicy -Action ALLOW -ClientSubnet "eq,BER_DNS_Subnet" -ZoneScope "BERZoneScope,1" -ZoneName woshub.com –PassThru
Add-DnsServerQueryResolutionPolicy -Name HHResolutionPolicy -Action ALLOW -ClientSubnet "eq,HH_DNS_Subnet" -ZoneScope "HHZoneScope,1" -ZoneName woshub.com -PassThru
Add-DnsServerQueryResolutionPolicy -Name MCHResolutionPolicy -Action ALLOW -ClientSubnet "eq,MCH_DNS_Subnet" -ZoneScope "MCHZoneScope,1" -ZoneName woshub.com –PassThru
-Action ALLOW
-Action DENY
-Action IGNORE
В фильтрах DNS можно использовать следующие параметры:
-InternetProtocol "EQ,IPv4,NE,IPv6"
-TransportProtocol "EQ,UDP,TCP"
-ServerInterfaceIP "EQ,192.168.1.21"
-QType "EQ,A,AAAA,NE,PTR"
-TimeOfDay "EQ,9:00-18:00"
Вы можете отобразить список политик DNS для зоны DNS на сервере:
Get-DnsServerQueryResolutionPolicy -ZoneName woshub.com
Теперь проверьте, что DNS-сервер возвращает разные IP-адреса прокси для одного и того же запроса, отправленного с устройств в разных офисах:
nslookup proxy.woshub.com
Вы можете запретить DNS-серверу возвращать DNS-адреса для пространства имен (домена):
Add-DnsServerQueryResolutionPolicy -Name 'BlockDNSQuery' -Action IGNORE -FQDN "EQ,*.spamorg.org"