Функция DNS Policies в Windows Server 2016

Одним из интересных нововведений в DNS сервере входящем в состав Windows Server 2016 стало появление политик DNS (DNS Policies), позволяющих контролировать обработку запросов в зависимости от параметров клиента – IP-адреса клиента или подсети, IP-адреса интерфейса принявшего DNS запрос, домена, протокола (TCP или UDP), типа запроса ((A, SRV, TXT …) и времени суток. Политики можно создавать на уровне сервера или зоны, все критерии можно комбинировать. В итоге мы получаем возможность очень просто реализовать ряд популярных сценариев – распределение трафика в зависимости от времени суток или региона посетителя, балансировка нагрузки, Split-brain DNS (различные сайты для внешних и внутренних пользователей), игнорирование запросов от определенных клиентов. DNS Manager не предлагает (во всяком случае пока) настроек связанных с DNS Policies. Для создания и управления политиками следует использовать новые командлеты модуля DNSServer v.2: *-DnsServerQueryResolutionPolicy (собственно управление политиками), *-DnsServerZoneTransferPolicy (политика передачи зоны на уровне сервера или на уровне зоны) и Enable|Disable-DnsServerPolicy (включение или отключение политики полностью или для какой то зоны).
Например, компания имеет отдельную версию сайта для локальных пользователей, остальные посетители должны получать IP адрес общего сайта. Реализуем такую политику.
Указываем клиентскую подсеть. В дальнейшем ее пользователи будут получать «свой» IP:

PS> Add-DnsServerClientSubnet -Name "LocalSubnet" -IPv4Subnet 192.168.0.0/24

Добавляем область:

PS> Add-DnsServerZoneScope -ZoneName "example.com" -Name "LocalZoneScope"

И создаем две DNS записи, один IP будем выдавать для локальной зоны, вторая общая.

PS> Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "www" -IPv4Address "192.168.0.1" -ZoneScope "LocalZoneScope"
PS> Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "www" -IPv4Address "172.1.1.1"

В политике возможно использование операторов EQ (совпадение) или NE (отсутствие совпадения), для сопоставления нескольких критериев используется параметр -Condition = OR/AND. Создадим простую политику, в которой все клиенты пришедшие из LocalSubnet будут получать IP из LocalZoneScope.

PS> Add-DnsServerQueryResolutionPolicy -Name "LocalPolicy" -Action ALLOW -ClientSubnet "eq,LocalSubnet" -ZoneScope "LocalZoneScope,1" -ZoneName "example.com"

Вот собственно и все. Теперь клиенты из LocalSubnet на запрос example.com, будут получать IP- 192.168.0.1, все остальные — 172.1.1.1.
Командлет по умолчанию ничего не выводит, чтобы сделать его разговорчивей можно добавить «-PassThru». В параметре ZoneScope, кроме имени зон, указывается и вес. Проверяем:

PS> Get-DnsServerQueryResolutionPolicy -ZoneName "example.com"

Создание политики при помощи Add-DnsServerQueryResolutionPolicy
Создание политики при помощи Add-DnsServerQueryResolutionPolicy

Чтобы правило действовало в течение определенного (например, рабочего) времени, можно использовать параметр –TimeOfDay “EQ,08:00-18:00”.
Кроме ALLOW, в качестве значения для -Action, можно использовать DENY или IGNORE, которые позволят отбросить или проигнорировать запрос попадающий под правило. Например, разрешим серверу отвечать на запросы только с определенных сетей.

PS> Add-DnsServerClientSubnet -Name "AllowedSubnet" -IPv4Subnet 192.168.0.0/24
PS> Add-DnsServerZoneTransferPolicy -Name "AllowedSubnetPolicy" -Action IGNORE -ClientSubnet "ne,AllowedSubnet" -PassThru

Созданную политику можно отключить, использовав параметр Disable или удалить при помощи командлета Remove-DnsServerZoneTransferPolicy.

PS> Remove-DnsServerZoneTransferPolicy -Name "AllowedSubnet" -PassThru

Теги: , ,

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Комментариев пока что нет

Оставить комментарий

(required)

(required)