Назад | Перейти на главную страницу

Политики DNS не разрешают должным образом CNAME в областях зоны, если политика разрешения запросов включает оператор NE для клиентских подсетей.

Я почти уверен, что обнаружил ошибку, но я пытаюсь разобраться в ней и, возможно, проверить работоспособность.

Сценарий

Политика, в которой если запрос ищет конкретную запись AND IP-адрес клиента не находится в определенной подсети, политика совпадает и приводит к CNAME запись, цель которой не охвачена политикой и не существует в области.

Пример:

QRP с EQ для клиентской подсети

Это даст ожидаемые результаты, а именно:

QRP с NE для клиентской подсети

Это приведет к неожиданным результатам:


Дополнительные замечания


PowerShell для демонстрации

(Я провел свои собственные тесты, но не напрямую с этим кодом, дайте мне знать, если он сломан)

$myZone = 'example.com'
$myScope = 'MyScope'
$mySubnetName = 'MySubnet'
$mySubnetCIDR = '10.8.8.0/24'
$commonName = 'testme'
$commonValue = '10.1.2.3'
$otherName = 'testOther'
$otherValue = '10.11.11.11'
$myPolicy = 'MyQRP'

$myCommonFqdn = "${commonName}.${myZone}."
$myOtherFqdn = "${otherName}.${myZone}."

$myDC = 'My2016DC'

Import-Module DnsServer

$PSDefaultParameterValues = @{
    '*-DnsServer*:ComputerName' = $myDC
}

Add-DnsServerClientSubnet -Name $mySubnetName -IPv4Subnet $mySubnetCIDR

Add-DnsServerZoneScope -ZoneName $myZone -Name $myScope

Add-DnsServerResourceRecord -ZoneName $myZone -Name $commonName -A -IPv4Address $commonValue
Add-DnsServerResourceRecord -ZoneName $myZone -Name $otherName -A -IPv4Address $otherValue

Add-DnsServerResourceRecord -ZoneName $myZone -ZoneScope $myScope -Name $commonName -CName -HostNameAlias $myOtherFqdn

# Add the policy with EQ that works correctly
Add-DnsServerQueryResolutionPolicy -ZoneName $myZone -ZoneScope $myScope -Name $myPolicy -Fqdn "EQ,$myCommonFqdn" -ClientSubnet "EQ,$mySubnetName"

# Uncomment these to change it around

# Use NE instead of EQ
# Set-DnsServerQueryResolutionPolicy -ZoneName $myZone -ZoneScope $myScope -Name $myPolicy -Fqdn "EQ,$myCommonFqdn" -ClientSubnet "NE,$mySubnetName" -Action REPLACE
# Set it back to using EQ
# Set-DnsServerQueryResolutionPolicy -ZoneName $myZone -ZoneScope $myScope -Name $myPolicy -Fqdn "EQ,$myCommonFqdn" -ClientSubnet "EQ,$mySubnetName" -Action REPLACE

Это должно создать воспроизводимый сценарий в вашей среде (при необходимости измените переменные). Оттуда вы можете использовать nslookup или dig по мере необходимости для проверки результатов. Обратите внимание, что вы должны проверять только один DC, к которому это применяется, если вы находитесь в среде AD. (политики / подсети не реплицируются).

Обновление - среда, 24 мая

Я веду дело с Microsoft по этой проблеме. Они заявляют, что не могут его воспроизвести.

Кто-нибудь готов попробовать это?

Обновление - ср 26 июл.

Microsoft может воспроизвести проблему после неоднократных демонстраций. Я жду более глубокого ответа от внутренней команды.

Ожидаемое поведение: Для CNAME / DNAME / ДОПОЛНИТЕЛЬНЫХ СЕКЦИЙ • Для каждой части связанного ответа политики должны применяться снова и снова. Критерии этой политики будут сопоставлены со значениями в исходном запросе (например, TimeOfDay, клиентская подсеть и т. Д.), За исключением QTYPE и FQDN. • Если какая-либо из политик, используемых в цепочке, приводит к DENY / IGNORE, DNS-сервер должен отправить частичный ответ клиенту, если он доступен. Запретить / игнорировать будет применяться только для этого FQDN или зоны.

Думаю, результаты ожидаются.

Кумар Ашутош [Я разработал политики DNS-сервера]

Итак, вот как прошел мой случай с Microsoft.

В конце концов, он попал к разработчику (который отправил ответ на этот вопрос), и поэтому официальный ответ - «вот как он был разработан».

Я лично не удовлетворен этим ответом, поскольку такое поведение не задокументировано и не имеет интуитивного смысла, но оно есть.

Мне сказали, что для того, чтобы решить эту проблему дальше, нам придется открыть заявку на поддержку Premier (у нас нет основной поддержки). Учитывая, что это заняло много месяцев, и моя компания больше не нуждается в этой функции, этого не произойдет.