Найти в Дзене
IT-Прогулка

Как сделать, чтобы DNS сервер выдавал разные ответы, в зависимости от того из какой сети клиент пришел.

Задача #1: Имеется DNS-сервер на базе Windows Server 2016. На DNS-сервере настроена А-запись, которая разрешается всеми клиентами DNS, но есть группа клиентов в определенной подсети, которым нужно выдавать другое значение. Как это сделать? Дано: Пусть у нас имеется зона sb.loc, в ней имеется A-запись geo, она разрешается в адрес 192.168.33.30. Но есть клиенты в подсети 10.10.145.0/24, которые должны при запросе geo получить адрес 10.10.145.1. Решение: Необходимо настроить DNS policies. Для этого: 1) Создать подсети для клиентов из 10.10.145.0/24 Add-DnsServerClientSubnet -Name 'Subnet145' -IPv4Subnet '10.10.145.0/24' 2) Создать области (в ZoneName указываем имя DNS зоны на сервере, в которой А-запись) Add-DnsServerZoneScope -ZoneName 'sb.loc' -Name 'Scope145' Посмотреть, текущие области можно командой Get-DnsServerZoneScope -ZoneName 'sb.loc' Мы видим область, которую только что создана Scope145 и область по умолчанию sb.loc. Область sb.loc это та область, что мы видим в оснастк
Оглавление

Задача #1:

Имеется DNS-сервер на базе Windows Server 2016. На DNS-сервере настроена А-запись, которая разрешается всеми клиентами DNS, но есть группа клиентов в определенной подсети, которым нужно выдавать другое значение. Как это сделать?

Дано:

Пусть у нас имеется зона sb.loc, в ней имеется A-запись geo, она разрешается в адрес 192.168.33.30. Но есть клиенты в подсети 10.10.145.0/24, которые должны при запросе geo получить адрес 10.10.145.1.

Решение:

Необходимо настроить DNS policies.

Для этого:

1) Создать подсети для клиентов из 10.10.145.0/24

Add-DnsServerClientSubnet -Name 'Subnet145' -IPv4Subnet '10.10.145.0/24'

2) Создать области (в ZoneName указываем имя DNS зоны на сервере, в которой А-запись)

Add-DnsServerZoneScope -ZoneName 'sb.loc' -Name 'Scope145'

Посмотреть, текущие области можно командой

Get-DnsServerZoneScope -ZoneName 'sb.loc'
-2

Мы видим область, которую только что создана Scope145 и область по умолчанию sb.loc. Область sb.loc это та область, что мы видим в оснастке DNS Manager. А в область Scope145 мы сможем добавлять любые другие записи, но они не отобразяться в оснастке. И идея в том, чтобы разным клиентам выдавать значения из разных областей.

4) Теперь сделаем политики, чтобы запросы из соответствующей подсети относились к правильной области

Add-DnsServerQueryResolutionPolicy -Name 'Policy145' -Action ALLOW -ClientSubnet 'eq,Subnet145' -fqdn 'eq,geo.sb.loc' -ZoneScope 'Scope145,1' -ZoneName 'sb.loc' -ProcessingOrder 1

Если не назначить параметр –fqdn, то будет передавать вся подзона. Это плохо, так как перестанут видеться остальные записи в зоне, и будут видны только те, которые были созданы скриптами. Поэтому если у нас есть существующая зона с кучей записей и мы создаем новую запись для DNS-политик и нам нужно, чтобы и остальные записи разрешались, как и раньше, то нужно указать параметр –fqdn.

5) Создадим А-запись geo в области Scope145 с адресом 10.10.145.1.

Add-DnsServerResourceRecord -ZoneName 'sb.loc' -A -Name 'geo' -IPv4Address '10.10.145.1' -ZoneScope 'Scope145'

Проверим, что получилось.

Ниже скриншот с клиента с адресом 10.10.145.17

Изначально geo разрешался в адрес 192.168.33.30. Потом, после создания политики, запрос стал перенаправляться в пустую область Scope145, и хост был не найден. После пункта 5 адрес, получаем ответ 10.10.145.1

-3

А на клиенте с адресом 192.168.33.31 разрешается по-прежнему в 192.168.33.30

-4

Задача #2:

Имеется DNS сервер на базе Windows Server 2016. Есть клиенты, расположенные в двух разных подсетях (в лабе и в основной сети).

Cеть33 192.168.33.0/24,

Сеть145 10.10.145.0/24

Нужно, чтобы А-запись geo (или geo.sb.loc) разрешалась клиентам из 145 сети в ip-адрес 10.10.145.1, а клиентам из 33 сети в 192.168.33.100. А остальным клиентам в адрес 192.168.33.30.

Решение:

Сначала необходимо выполнить решение из Задачи №1 и дополнительно следующие команды:

1) Создать подсети для клиентов из 192.168.33.0/24

Add-DnsServerClientSubnet -Name 'Subnet33' -IPv4Subnet '192.168.33.0/24'

2) Создать области (в ZoneName указываем имя DNS зоны на сервере, в которой А-запись)

Add-DnsServerZoneScope -ZoneName 'sb.loc' -Name 'Scope33'

3) Посмотреть, текущие области можно командой

Get-DnsServerZoneScope -ZoneName 'sb.loc'
-5

теперь видим 3 области.

4) Теперь сделаем политики, чтобы запросы из соответствующей подсети относились к правильной области

Это уже было выполнено в задаче #1

Add-DnsServerQueryResolutionPolicy -Name 'Policy145' -Action ALLOW -ClientSubnet 'eq,Subnet145' -fqdn 'eq,geo.sb.loc' -ZoneScope 'Scope145,1' -ZoneName 'sb.loc' -ProcessingOrder 1

Теперь сделаем, аналогичное правило для 33 сети:

Add-DnsServerQueryResolutionPolicy -Name 'Policy33' -Action ALLOW -ClientSubnet 'eq,Subnet33' -fqdn 'eq,geo.sb.loc' -ZoneScope 'Scope33,1' -ZoneName 'sb.loc' -ProcessingOrder 2

5) Создадим А-запись geo в области Scope145 с адресом 10.10.145.1.

Add-DnsServerResourceRecord -ZoneName 'sb.loc' -A -Name 'geo' -IPv4Address '192.168.33.100' -ZoneScope 'Scope33'

Проверим на клиенте с адресом 192.168.33.31

-6

На клиенте 10.10.145.17, разрешается в адреc10.10.145.1

-7

А на всех остальных клиентах в 192.168.33.30

-8

Команды для проверки:

Get -DnsServerQueryResolutionPolicy -Name 'Policy33' -ZoneName 'sb.loc'
-9
get-DnsServerResourceRecord -ZoneName 'sb.loc' -ZoneScope 'Scope33'
-10