В этой статье показано, как задать свойство ResolutionPolicy в Azure Частная зона DNS, чтобы включить обратный возврат к Интернету при получении достоверного ответа NXDOMAIN для зоны Приватный канал. NXDOMAIN также называется отрицательным ответом. Когда сопоставитель DNS получает (или кэшировал) отрицательный ответ, он не отправляет ОТВЕТ DNS клиенту DNS и запрос завершается сбоем.
Частная зона DNS запросы для сценариев Приватный канал Azure и сетевой изоляции в разных клиентах и группах ресурсов имеют уникальные пути разрешения имен. Это может повлиять на возможность доступа к ресурсам с поддержкой Приватный канал за пределами элемента управления клиента. Решения на основе виртуальных машин существуют для решения этой проблемы, но эти решения повышают операционную сложность и связаны с рисками безопасности и более высокими затратами.
Свойство ResolutionPolicy в Azure Частная зона DNS — это полностью управляемое собственное решение. Это свойство обеспечивает общедоступную рекурсию через рекурсивный флот сопоставителя Azure при получении авторитетного ответа NXDOMAIN для зоны приватного канала, а частный адрес не удается устранить. Политика разрешения включена на уровне канала виртуальной сети с параметром NxDomainRedirect . В портал Azure параметр NxDomainRedirect включен, выбрав "Включить резервный доступ к Интернету" в конфигурации канала виртуальной сети.
Свойство ResolutionPolicy доступно в API версии 2024-06-01 или выше. В следующем примере параметр resolutionPolicy имеет значение NxDomainRedirect на уровне ресурсов virtualNetworkLinks :
{
"id": "'string'",
"name": '"string'",
"type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
"location": "global",
"properties": {
"provisioningState": "Succeeded",
"registrationEnabled": bool,
"resolutionPolicy": "NxDomainRedirect",
"virtualNetwork": {
"id": "'string'"
}
}
}
Этот параметр доступен в портал Azure: Частная зона DNS зонах> виртуальная сеть Ссылки>позволяют вернуться к Интернету.
Ответ NXDOMAIN (RCODE3) означает, что запрашиваемое доменное имя (Приватный канал) не существует. Этот отрицательный ответ обычно предотвращает повторную попытку запроса до истечения срока действия кэшированного отрицательного ответа.
Если политика разрешения NxDomainRedirect включена по ссылке виртуальной сети, рекурсивный сопоставитель Azure повторяет запрос. Сопоставитель использует общедоступную конечную точку QNAME в качестве метки запроса при каждом получении ответа NXDOMAIN из PrivateEdge для этой области частной зоны.
Это изменение можно увидеть в разрешении цепочки CNAME.
C:\>nslookup remoteprivateendpoint.blob.core.windows.net
Server: UnKnown
Address: 168.63.129.16
Non-authoritative answer:
Name: blob.mwh20prdstr02e.store.core.windows.net
Address: 203.0.113.33
Aliases: remoteprivateendpoint.blob.core.windows.net
remoteprivateendpoint.privatelink.blob.core.windows.net
- Эта политика доступна только для зон Частная зона DNS, связанных с Приватный канал ресурсами.
- Параметр ResolutionPolicy принимает только значения Default или NxDomainRedirect .
Демонстрация возврата к разрешению в Интернете
В следующем примере показано, как включить резервное подключение к интернет-разрешению для зоны приватного канала (например, privatelink.blob.core.windows.net).
- По крайней мере две группы ресурсов: каждая с виртуальной сетью и частной конечной точкой.
- Группы ресурсов могут находиться в разных регионах или в одном регионе.
- Учетные записи хранения используются с частными конечными точками в этом примере, но другие службы PaaS могут быть связаны.
- Для выполнения DNS-запросов требуется по крайней мере одна виртуальная машина в одной из виртуальных сетей.
- Виртуальная сеть, в которой находится виртуальная машина, должна быть связана с одной из зон приватного канала.
В этом руководстве предполагается, что вы подготовили необходимые ресурсы, прежде чем продолжить. Дополнительные сведения см. в статье "Использование частных конечных точек Azure".
Проверка зон Частная зона DNS
На домашней странице портал Azure найдите и выберите Частная зона DNS зоны.
Просмотрите список имен и убедитесь, что хотя бы две частные зоны DNS имеют одинаковое имя (privatelink.blob.core.windows.net). См. следующий пример.
Выберите зоны приватного канала и выберите наборы записей.
Убедитесь, что записи для учетных записей хранения присутствуют в каждой частной зоне.
Примечание
Учетные записи хранения, которые находятся в одной группе ресурсов, имеют записи ресурсов в той же зоне Частная зона DNS.
Учетные записи хранения, которые находятся в разных группах ресурсов, имеют записи ресурсов в разных (идентичных именованных) зонах Частная зона DNS.
Демонстрация сбоя разрешения DNS
Запишите полное доменное имя (FQDN) и IP-адрес для учетной записи хранения в первой зоне приватного канала (например, myeaststorageacct1.privatelink.blob.core.windows.net
). 10.40.40.5
Кроме того, запишите полное доменное имя и IP-адрес для другой зоны Частная зона DNS с тем же именем (например, myeaststorageacct2.privatelink.blob.core.windows.net
, 10.10.10.5
).
- По крайней мере одна из этих зон Частная зона DNS должна иметь связь виртуальной сети с виртуальной сетью, где можно выполнять запросы с виртуальной машины.
Откройте командную строку на виртуальной машине Azure и попытайтесь устранить полное доменное имя обеих учетных записей хранения. См. следующий пример.
C:\>dig myeaststorageacct1.privatelink.blob.core.windows.net +short
10.40.40.5
C:\>dig myeaststorageacct2.privatelink.blob.core.windows.net +short
Обратите внимание, что одна учетная запись хранения разрешается, а другая учетная запись хранения не разрешается.
Снова выберите каждую из частных зон DNS, выберите виртуальная сеть Ссылки и щелкните значок "Изменить" карандаша. См. следующий пример.
В нижней части страницы выберите "Включить резервный доступ к Интернету " и нажмите кнопку "Сохранить".
Повторите эти действия для каждой зоны приватного канала и разрешите время обновления каналов виртуальной сети.
Повторите попытку разрешить полное доменное имя учетных записей хранения. См. следующий пример.
C:\>dig myeaststorageacct1.privatelink.blob.core.windows.net +short
10.40.40.5
C:\>dig myeaststorageacct2.privatelink.blob.core.windows.net +short
blob.bl5prdstr19c.store.core.windows.net.
203.0.113.161
Учетная запись хранения, которая не была разрешена, теперь успешно разрешается через Интернет, что позволяет получить доступ к этому ресурсу с поддержкой Приватный канал.
Ссылки виртуальной сети с поддержкой резервного запроса
Обозреватель Azure Resource Graph или Azure CLI можно использовать для запроса резервных каналов виртуальной сети. См. следующие примеры.
resources
| where tostring(properties.resolutionPolicy) contains 'NxDomainRedirect'
| extend privateDnsZone = extract("/privateDnsZones/([^/]+)/", 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy
Входные данные:
az graph query -q "resources
| where tostring(properties.resolutionPolicy) contains 'NxDomainRedirect'
| extend privateDnsZone = extract('/privateDnsZones/([^/]+)/', 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy"
Выходные данные:
{
"count": 4,
"data": [
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "NxDomainRedirect",
"resourceGroup": "myresourcegroup"
},
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "NxDomainRedirect",
"resourceGroup": "mywestrg2"
},
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "NxDomainRedirect",
"resourceGroup": "mywestrg"
},
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "NxDomainRedirect",
"resourceGroup": "myeastrg"
}
],
"skip_token": null,
"total_records": 4
}
Чтобы отобразить значения политики разрешения для всех зон с поддержкой приватного канала, можно использовать следующие запросы Azure Resource Graph и Azure CLI:
resources
| where tostring(properties) contains 'resolutionPolicy'
| extend privateDnsZone = extract("/privateDnsZones/([^/]+)/", 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy
Входные данные:
az graph query -q "resources
| where tostring(properties) contains 'resolutionPolicy'
| extend privateDnsZone = extract('/privateDnsZones/([^/]+)/', 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy"
В следующем примере выходных данных Azure CLI есть одна из зон с поддержкой приватного канала, для параметра Default (отключено резервное подключение), чтобы продемонстрировать, как это отображается.
Выходные данные:
{
"count": 4,
"data": [
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "Default",
"resourceGroup": "mywestrg"
},
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "NxDomainRedirect",
"resourceGroup": "myresourcegroup"
},
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "NxDomainRedirect",
"resourceGroup": "mywestrg2"
},
{
"privateDnsZone": "privatelink.blob.core.windows.net",
"properties_resolutionPolicy": "NxDomainRedirect",
"resourceGroup": "myeastrg"
}
],
"skip_token": null,
"total_records": 4
}