Не удается получить частный IP-адрес полного доменного имени Реестра контейнеров Azure

В этой статье содержатся рекомендации по устранению наиболее распространенных ситуаций, которые могут препятствовать разрешению полного доменного имени (FQDN) Реестра контейнеров Microsoft Azure с его частным IP-адресом.

Обзор

В Реестре контейнеров Azure можно использовать Приватный канал Azure вместе с частной конечной точкой и частной зоной DNS , чтобы назначить частный IP-адрес виртуальной сети полному доменному имени реестра (также известному как сервер входа или конечная точка REST API).

Так как служба Реестра контейнеров Azure является мультитенантной, она всегда имеет общедоступный IP-адрес. Если в реестре контейнеров использовать технологию Приватного канала для полного доменного имени реестра, реестру контейнеров будут выданы общедоступный IP-адрес и частный IP-адрес.

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

Примечание.

Чтобы убедиться, что реестр контейнеров настроен для частного использования, выполните следующие действия.

  1. На портале Azure найдите и выберите Реестры контейнеров.

  2. В списке реестров контейнеров выберите имя реестра контейнеров.

  3. В области меню реестра контейнеров выберите Параметры Сеть>.

  4. На вкладке Общий доступ убедитесь, что для поля Доступ к общедоступной сетизадано значение Отключено.

  5. Перейдите на вкладку Частный доступ и убедитесь, что подключение к частной конечной точке настроено.

Симптомы

Служебная программа системы доменных имен (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. Частная конечная точка реестра контейнеров и устройство находятся в разных виртуальных сетях

Сетевой интерфейс частной конечной точки реестра контейнеров находится в виртуальной сети, отличной от виртуальной сети устройства, которое пытается разрешить полное доменное имя реестра контейнеров.

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

  • Узлы Службы Azure Kubernetes (AKS)
  • Виртуальные машины Azure
  • Веб-приложение Azure для контейнеров
  • Другой тип устройства

Чтобы добавить связь виртуальной сети в виртуальную сеть устройства с уровня частной зоны DNS реестра контейнеров, используйте один из следующих методов:

  • Через портал Azure

    1. На портале Azure найдите и выберите Частные зоны DNS.

    2. В списке частных зон DNS выберите <container-registry-name.privatelink.azurecr.io>.

    3. В области меню частной зоны DNS выберите Параметры Ссылка>на виртуальную сеть.

    4. На странице Ссылки на виртуальную сеть частной зоны DNS выберите Добавить.

    5. На странице Добавление ссылки на виртуальную сеть введите имя ссылки, а затем выберите виртуальную сеть устройства, которое требуется разрешить полное доменное имя реестра контейнеров в частном порядке. (Параметр Включить автоматическую регистрацию является необязательным.)

    6. Выберите кнопку 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 и т. д.).

По умолчанию виртуальные сети Azure используют службу Azure DNS (168.63.129.16) в качестве DNS-сервера, но можно также использовать собственный пользовательский DNS-сервер. При попытке настроить собственный пользовательский DNS-сервер правильно настроили сервер пересылки на уровне сервера для службы Azure DNS на уровне настраиваемого DNS-сервера. Однако вы забыли добавить канал виртуальной сети на уровне частной зоны DNS реестра контейнеров для виртуальной сети, в которой существует пользовательский DNS-сервер.

Чтобы добавить связь виртуальной сети на пользовательский DNS-сервер с уровня частной зоны DNS реестра контейнеров, используйте один из следующих методов:

  • Через портал Azure

    1. На портале Azure найдите и выберите Частные зоны DNS.

    2. В списке частных зон DNS выберите <container-registry-name.privatelink.azurecr.io>.

    3. В области меню частной зоны DNS выберите Параметры Ссылка>на виртуальную сеть.

    4. На странице Ссылки на виртуальную сеть частной зоны DNS выберите Добавить.

    5. На странице Добавление ссылки на виртуальную сеть введите значение Имя ссылки , а затем выберите соответствующее значение Виртуальной сети для настраиваемого DNS-сервера. (Параметр Включить автоматическую регистрацию является необязательным.)

    6. Выберите кнопку OK.

  • С помощью Azure CLI

    В Azure CLI выполните команду az network private-dns link vnet create .

Ресурсы

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.