У цій статті ми розглянемо два способи організації умовного дозволу імен в DNS сервері на Windows Server 2016: Умовна переадресація DNS і Політика DNS. Ці технології дозволяють налаштувати умовний дозвіл DNS імен в залежності від запитаного імені, IP адреси і місця розташування клієнта, часу доби і т.д.

Умовна пересилання DNS (Conditional Forwarding) дозволяє перенаправити DNS запити про певний домен на певні DNS-сервера. Зазвичай Conditional Forwarders використовується, коли потрібно налаштувати швидке вирішення імен між декількома внутрішніми приватними доменами, або ви не хочете, щоб DNS запити з вашого сервера пересилалися через публічну мережу Інтернет. В цьому випадку ви можете створити на DNS сервері правило DNS пересилання DNS запитів для певної доменної зони (только !!!) на певний DNS сервер.

Налаштування DNS Conditional Forwarder в Windows Server

Спробуємо налаштувати умовне перенаправлення DNS запитів для певної доменної зони на Windows Server 2016. Наприклад, я хочу, щоб все DNS запити до зони corp.winitpro.ru пересилалися на DNS сервер 10.1.10.11.

  1. Запустіть консоль управління DNS (dnsmgmt.msc);
  2. Розгорніть ваш DNS сервер, клацніть правою кнопкою по розділу Умовні експедитори і виберіть Новий умовний експедитор;
  3. В полі DNS-домен вкажіть FQDN ім’я домену, для якого потрібно включити умовну пересилання;
  4. В полі IP-адреси головних серверів вкажіть IP адресу DNS сервера, на який потрібно пересилати всі запити для зазначеного простору імен; додати DNS conditional forwarder в windows server
  5. Якщо ви хочете зберігати правило умовної переадресації не тільки на цьому DNS сервері, ви можете інтегрувати його в AD. Виберіть опцію “Зберігайте цей умовний пересилач в Active Directory”;
  6. Виберіть правило реплікації записи conditional forwarding (Усі DNS-сервери в цьому лісі, Усі DNS-сервери в цьому домені або Усі контролери домену в цьому домені). настройка умовної пересилання dns в windows server 216

Налаштування DNS Conditional Forwarding за допомогою PowerShell

Ви можете створити правило Conditional Forward для певної DNS зони за допомогою PowerShell. Скористайтеся командлети Add-DnsServerConditionalForwarderZone:

Add-DnsServerConditionalForwarderZone -Name dmz.winitpro.ru -MasterServers 192.168.1.11,192.168.101.11 -ReplicationScope Forest

Щоб вивести список DNS Conditional Forwarders на певному сервері, виконайте наступний PowerShell скрипт:

$DNSServer = "DC01"
$Zones = Get-WMIObject -Computer $DNSServer -Namespace "rootMicrosoftDNS" -Class "MicrosoftDNS_Zone"
$Zones | Select-Object Name,MasterServers,DsIntegrated,ZoneType | where {$_.ZoneType -eq "4"} | ft -AutoSize

powershell вивести список правил Conditional Forwarders на DNS сервері з windows server

Фільтрація запитів DNS, політики розпізнавання імен в Windows Server 2016

У Windows Server 2016 з’явилася нова фіча в службі DNS сервера – DNS політики. DNS політики дозволяють налаштувати DNS сервер так, щоб він повертав різні відповіді на DNS запити в залежності від місця розташування клієнта (з якого IP адреси або підмережі прийшов запит), інтерфейсу DNS сервера, часу доби, типу запитаної записи (A, CNAME, PTR, MX ) і т.д. DNS політики в Windows Server 2016 дозволяють реалізувати сценарії балансування навантаження, фільтрації DNS трафіку, повернення DNS записів в залежності від геолокації (IP адреси клієнта) і багато інших складних сценарії.

Ви можете створити політику як на рівні DNS сервера, так і на рівні всієї зони. Налаштування DNS політик в Windows Server 2016 можлива тільки з командного рядка PowerShell.

Спробуємо створити просту політику, яка дозволяє повернути різний відповідь на DNS запит в залежності від геолокації клієнта. Припустимо, ви хочете, щоб клієнти в кожному офісі використовували власний проксі на майданчику. Ви створили політику призначення проксі в домені (на всіх клієнтах буде вказано proxy.winitpro.ru). Але клієнт з кожного офісу повинен ні перетворювати цю адресу по-різному, щоб використовувати для доступу свій локальний проксі-сервер.

Я створив 3 підмережі для різних офісів компанії:

Add-DnsServerClientSubnet -Name "MSK_DNS_Subnet" -IPv4Subnet "192.168.1.0/24"
Add-DnsServerClientSubnet -Name "EKB_DNS_Subnet" -IPv4Subnet "192.168.11.0/24"
Add-DnsServerClientSubnet -Name "SPB_DNS_Subnet" -IPv4Subnet "192.168.21.0/24"

Ці команди доведеться виконати на всіх DNS серверах, на яких повинна працювати умовна політика DNS. Ці записі не реплицируются в DNS і зберігаються локально в реєстрі DNS сервера. Ви можете вказати ім’я сервера за допомогою параметра -ComputerName dc01.

Щоб вивести список всіх IP підмереж клієнтів, виконайте:

Get-DnsServerClientSubnet

створити окремі DNS підмережі для різних IP підмереж (офісів (

Тепер потрібно для кожного офісу створити окрему DNS область:

Add-DnsServerZoneScope -ZoneName “winitpro.ru” -Name “MSKZoneScope”
Add-DnsServerZoneScope -ZoneName “winitpro.ru” -Name “EKBZoneScope”
Add-DnsServerZoneScope -ZoneName “winitpro.ru” -Name “SPBZoneScope”

Наступні команди додадуть 3 DNS записи з одним ім’ям, але вказують на різні IP адреси в різних областях DNS:

Add-DnsServerResourceRecord -ZoneName “winitpro.ru” -A -Name “proxy” -IPv4Address “192.168.1.10” -ZoneScope “MSKZoneScope”
Add-DnsServerResourceRecord -ZoneName “winitpro.ru” -A -Name “proxy” -IPv4Address “192.168.11.10” -ZoneScope “EKBZoneScope”
Add-DnsServerResourceRecord -ZoneName “winitpro.ru” -A -Name “proxy” -IPv4Address “192.168.21.10” -ZoneScope “SPBZoneScope”

Ви можете вивести всі ресурсні DNS записи для області за допомогою команди:

Get-DnsServerResourceRecord -ZoneName “winitpro.ru” -ZoneScope SPBZoneScope

вивести список записів в dns області Get-DnsServerResourceRecord

Тепер потрібно створити DNS політики, які зв’яжуть IP підмережі, DNS області і A записи.

Add-DnsServerQueryResolutionPolicy -Name “MSKResolutionPolicy” -Action ALLOW -ClientSubnet “eq,MSK_DNS_Subnet” -ZoneScope “MSKZoneScope,1” -ZoneName “winitpro.ru” –PassThru
Add-DnsServerQueryResolutionPolicy -Name “EKBResolutionPolicy” -Action ALLOW -ClientSubnet “eq,EKB_DNS_Subnet” -ZoneScope “EKBZoneScope,1” -ZoneName “winitpro.ru” -PassThru
Add-DnsServerQueryResolutionPolicy -Name “SPBResolutionPolicy” -Action ALLOW -ClientSubnet “eq,SPB_DNS_Subnet” -ZoneScope “SPBZoneScope,1” -ZoneName “winitpro.ru” –PassThru

У DNS політиках доступні наступні дії:

  • -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 winitpro.ru

політики DNS на сервері Windows Get-DnsServerQueryResolutionPolicy

Тепер з пристроїв з різних офісів перевірте, що DNS сервер на один і той же запит повертає різні IP адреси проксі:

nslookup proxy.winitpro.ru

Можна заборонити DNS сервера повертати DNS адреси для певного простору імен (домену):

Add-DnsServerQueryResolutionPolicy -Name 'BlockFidhingPolicy' -Action IGNORE -FQDN "EQ,*.cberbank.ru"

Leave a Reply

Your email address will not be published. Required fields are marked *