Не удается получить частный IP-адрес полного доменного имени Реестра контейнеров Azure
В этой статье содержатся рекомендации по устранению наиболее распространенных ситуаций, которые могут препятствовать разрешению полного доменного имени (FQDN) Реестра контейнеров Microsoft Azure с его частным IP-адресом.
Обзор
В Реестре контейнеров Azure можно использовать Приватный канал Azure вместе с частной конечной точкой и частной зоной DNS , чтобы назначить частный IP-адрес виртуальной сети полному доменному имени реестра (также известному как сервер входа или конечная точка REST API).
Так как служба Реестра контейнеров Azure является мультитенантной, она всегда имеет общедоступный IP-адрес. Если в реестре контейнеров использовать технологию Приватного канала для полного доменного имени реестра, реестру контейнеров будут выданы общедоступный IP-адрес и частный IP-адрес.
После настройки этой конфигурации возникают ситуации, когда разрешение DNS для полного доменного имени реестра контейнеров возвращает общедоступный IP-адрес, даже если ожидается, что разрешение DNS вернет частный IP-адрес. Этот сценарий может вызвать множество проблем, таких как сбой по запросу, если общий доступ к реестру контейнеров отключен и вы полагаетесь только на частное подключение.
Примечание.
Чтобы убедиться, что реестр контейнеров настроен для частного использования, выполните следующие действия.
На портале Azure найдите и выберите Реестры контейнеров.
В списке реестров контейнеров выберите имя реестра контейнеров.
В области меню реестра контейнеров выберите Параметры Сеть>.
На вкладке Общий доступ убедитесь, что для поля Доступ к общедоступной сетизадано значение Отключено.
Перейдите на вкладку Частный доступ и убедитесь, что подключение к частной конечной точке настроено.
Симптомы
Служебная программа системы доменных имен (DNS) используется для выполнения запроса DNS и получения общедоступного IP-адреса реестра контейнеров в результатах запроса. Однако реестр контейнеров фактически настроен для частного использования, а результат запроса DNS указывает на то, что реестр контейнеров настроен для частного использования.
Примечание.
Реестр контейнеров настраивается для частного использования, <container-registry-name>.privatelink.azurecr.io
если каноническое имя имеет вид .
Например, следующая команда nslookup выполняет запрос DNS к полному доменному acrpe332.azurecr.io
имени реестра контейнеров:
nslookup acrpe332.azurecr.io
Выходные данные nslookup возвращают каноническое имя acrpe332.privatelink.azurecr.io
, чтобы вы знали, что acrpe332
реестр контейнеров настроен для частного использования. Однако выходные данные также возвращают общедоступный IP-адрес для полного acrpe332
доменного 20.62.128.38
имени реестра контейнеров:
Server: 168.63.129.16
Address: 168.63.129.16#53
Non-authoritative answer:
acrpe332.azurecr.io canonical name = acrpe332.privatelink.azurecr.io.
acrpe332.privatelink.azurecr.io canonical name = eus1.fe.azcr.io.
eus1.fe.azcr.io canonical name = eus-acr-reg.trafficmanager.net.
eus-acr-reg.trafficmanager.net canonical name = r0318eus-az.eastus.cloudapp.azure.com.
Name: r0318eus-az.eastus.cloudapp.azure.com
Address: 20.62.128.38
Примечание.
В этом примере в качестве DNS-сервера используется служба Azure DNS (168.63.129.16
). Если используется пользовательский DNS-сервер, сервер отображает свой IP-адрес вместе с полями Server
и Address
.
Причина 1. Частная конечная точка реестра контейнеров и устройство находятся в разных виртуальных сетях
Сетевой интерфейс частной конечной точки реестра контейнеров находится в виртуальной сети, отличной от виртуальной сети устройства, которое пытается разрешить полное доменное имя реестра контейнеров.
Решение 1. Связывание с виртуальной сетью устройства с уровня частной зоны DNS реестра контейнеров
Чтобы успешно запросить записи DNS в частной зоне DNS, добавьте канал виртуальной сети на уровне частной зоны DNS реестра контейнеров для виртуальной сети, в которой существует устройство, инициирующее запрос DNS. Это устройство может быть любым из следующих элементов:
- Узлы Службы Azure Kubernetes (AKS)
- Виртуальные машины Azure
- Веб-приложение Azure для контейнеров
- Другой тип устройства
Чтобы добавить связь виртуальной сети в виртуальную сеть устройства с уровня частной зоны DNS реестра контейнеров, используйте один из следующих методов:
Через портал Azure
На портале Azure найдите и выберите Частные зоны DNS.
В списке частных зон DNS выберите <container-registry-name.privatelink.azurecr.io>.
В области меню частной зоны DNS выберите Параметры Ссылка>на виртуальную сеть.
На странице Ссылки на виртуальную сеть частной зоны DNS выберите Добавить.
На странице Добавление ссылки на виртуальную сеть введите имя ссылки, а затем выберите виртуальную сеть устройства, которое требуется разрешить полное доменное имя реестра контейнеров в частном порядке. (Параметр Включить автоматическую регистрацию является необязательным.)
Выберите кнопку OK.
С помощью Azure CLI
В Azure CLI выполните команду az network private-dns link vnet create .
Причина 2. Пользовательский DNS-сервер не пересылается в службу Azure DNS.
По умолчанию виртуальные сети Azure используют службу Azure DNS (168.63.129.16
) в качестве DNS-сервера, но можно также использовать собственный пользовательский DNS-сервер. Однако при попытке настроить собственный пользовательский DNS-сервер вы забыли задать сервер пересылки на уровне сервера для службы Azure DNS на уровне настраиваемого DNS-сервера.
Решение 2. Настройка сервера пересылки в службу Azure DNS
Если устройство, которое требуется разрешить полное доменное имя реестра контейнеров по частному IP-адресу, является частью виртуальной сети Azure, которая использует пользовательский DNS-сервер, необходимо настроить сервер пересылки на уровне сервера в службу Azure DNS на пользовательском DNS-сервере. Точные параметры конфигурации и шаги зависят от существующих сетей и DNS (например, Windows Server, CoreDNS и т. д.).
Причина 3. Пользовательский DNS-сервер не связывается частно с реестром контейнеров
По умолчанию виртуальные сети Azure используют службу Azure DNS (168.63.129.16
) в качестве DNS-сервера, но можно также использовать собственный пользовательский DNS-сервер. При попытке настроить собственный пользовательский DNS-сервер правильно настроили сервер пересылки на уровне сервера для службы Azure DNS на уровне настраиваемого DNS-сервера. Однако вы забыли добавить канал виртуальной сети на уровне частной зоны DNS реестра контейнеров для виртуальной сети, в которой существует пользовательский DNS-сервер.
Решение 3. Связывание с пользовательским DNS-сервером с уровня частной зоны DNS реестра контейнеров
Чтобы добавить связь виртуальной сети на пользовательский DNS-сервер с уровня частной зоны DNS реестра контейнеров, используйте один из следующих методов:
Через портал Azure
На портале Azure найдите и выберите Частные зоны DNS.
В списке частных зон DNS выберите <container-registry-name.privatelink.azurecr.io>.
В области меню частной зоны DNS выберите Параметры Ссылка>на виртуальную сеть.
На странице Ссылки на виртуальную сеть частной зоны DNS выберите Добавить.
На странице Добавление ссылки на виртуальную сеть введите значение Имя ссылки , а затем выберите соответствующее значение Виртуальной сети для настраиваемого DNS-сервера. (Параметр Включить автоматическую регистрацию является необязательным.)
Выберите кнопку OK.
С помощью Azure CLI
В Azure CLI выполните команду az network private-dns link vnet create .
Ресурсы
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.