Dela via


Det går inte att hämta den privata IP-adressen för ett FQDN för Azure Container Registry

Den här artikeln innehåller vägledning för att felsöka de vanligaste situationerna som kan hindra dig från att matcha det fullständigt kvalificerade domännamnet (FQDN) för ett Microsoft Azure Container Registry till dess privata IP-adress.

Översikt

I Azure Container Registry kan du använda Azure Private Link tillsammans med en privat slutpunkt och en privat DNS-zon för att tilldela ett virtuellt nätverk privat IP-adress till registrets FQDN (även kallat inloggningsservern eller REST API-slutpunkten).

Eftersom Azure Container Registry-tjänsten är multitenant har den alltid en offentlig IP-adress. Om du anger att containerregistret ska använda Private Link-tekniken för registrets FQDN utfärdas containerregistret en offentlig IP-adress och en privat IP-adress.

När du har konfigurerat den här konfigurationen finns det situationer där DNS-matchningen för ditt containerregister-FQDN returnerar den offentliga IP-adressen även om du förväntar dig att DNS-matchningen ska returnera den privata IP-adressen. Det här scenariot kan orsaka många problem, till exempel pull-fel, om offentlig åtkomst till containerregistret är inaktiverad och du endast förlitar dig på den privata anslutningen.

Kommentar

Följ dessa steg för att kontrollera att containerregistret har konfigurerats för privat användning:

  1. I Azure Portal söker du efter och väljer Containerregister.

  2. I listan över containerregister väljer du namnet på ditt containerregister.

  3. I menyfönstret i containerregistret väljer du Inställningar>Nätverk.

  4. På fliken Offentlig åtkomst kontrollerar du att fältet Åtkomst till offentligt nätverk är inställt på Inaktiverad.

  5. Välj fliken Privat åtkomst och kontrollera att en privat slutpunktsanslutning har konfigurerats.

Symptom

Du använder verktyget DNS (Domain Name System) för att göra en DNS-fråga och hämta containerregistrets offentliga IP-adress i frågeresultatet. Containerregistret är dock faktiskt konfigurerat för privat användning och DNS-frågeresultatet anger att containerregistret har konfigurerats för privat användning.

Kommentar

Ett containerregister har konfigurerats för privat användning om det kanoniska namnet finns i formuläret . <container-registry-name>.privatelink.azurecr.io

Följande nslookup-kommando gör till exempel en DNS-fråga i acrpe332.azurecr.io containerregistrets FQDN:

nslookup acrpe332.azurecr.io

Nslookup-utdata returnerar ett kanoniskt namn på acrpe332.privatelink.azurecr.io, så du vet att acrpe332 containerregistret har konfigurerats för privat användning. Utdata returnerar dock också en offentlig IP-adress 20.62.128.38 för för acrpe332 containerregistrets FQDN:

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

Kommentar

I det här exemplet används Azure DNS-tjänsten (168.63.129.16) som DNS-server. Om du använder en anpassad DNS-server visar servern sin IP-adress tillsammans med fälten Server och Address .

Orsak 1: Containerregistrets privata slutpunkt och enheten finns i olika virtuella nätverk

Nätverksgränssnittet för containerregistrets privata slutpunkt finns i ett annat virtuellt nätverk än den enhet som försöker matcha containerregistrets FQDN.

Om du vill fråga efter DNS-poster i den privata DNS-zonen lägger du till en virtuell nätverkslänk på containerregistrets privata DNS-zonnivå för det virtuella nätverk där enheten som initierar DNS-frågan finns. Den här enheten kan vara något av följande:

  • Azure Kubernetes Service-noder (AKS)
  • Azure Virtual Machines
  • Azure Web App for Containers
  • Annan typ av enhet

Om du vill lägga till länken för det virtuella nätverket till enhetens virtuella nätverk från containerregistrets privata DNS-zonnivå använder du någon av följande metoder:

  • Via Azure-portalen

    1. I Azure Portal söker du efter och väljer Privat DNS zoner.

    2. I listan över privata DNS-zoner väljer du container-registry-name.privatelink.azurecr.io>.<

    3. I menyfönstret i din privata DNS-zon väljer du Länken Inställningar>Virtuellt nätverk.

    4. På sidan Länkar till virtuellt nätverk i din privata DNS-zon väljer du Lägg till.

    5. På länken Lägg till virtuellt nätverk anger du ett Länknamn och väljer sedan det virtuella nätverket för den enhet som måste matcha FQDN för containerregistret privat. (Den Alternativet Aktivera automatisk registrering är valfritt.)

    6. Välj knappen OK.

  • Via Azure CLI

    Kör kommandot az network private-dns link vnet create i Azure CLI.

Orsak 2: Din anpassade DNS-server vidarebefordras inte till Azure DNS-tjänsten

Som standard använder virtuella Azure-nätverk Azure DNS-tjänsten (168.63.129.16) som DNS-server, men du kan också använda din egen anpassade DNS-server. Men när du försökte konfigurera en egen anpassad DNS-server glömde du att ange en vidarebefordrare på servernivå till Azure DNS-tjänsten på anpassad DNS-servernivå.

Lösning 2: Konfigurera en vidarebefordrare på servernivå till Azure DNS-tjänsten

Om den enhet som du förväntar dig att lösa containerregistrets FQDN över en privat IP-adress är en del av ett virtuellt Azure-nätverk som använder en anpassad DNS-server, måste du konfigurera en vidarebefordrare på servernivå till Azure DNS-tjänsten på den anpassade DNS-servern. De exakta konfigurationsalternativen och stegen beror på dina befintliga nätverk och DNS (till exempel Windows Server, CoreDNS och så vidare).

Som standard använder virtuella Azure-nätverk Azure DNS-tjänsten (168.63.129.16) som DNS-server, men du kan också använda din egen anpassade DNS-server. När du försökte konfigurera en egen anpassad DNS-server konfigurerade du korrekt en vidarebefordrare på servernivå till Azure DNS-tjänsten på anpassad DNS-servernivå. Du har dock glömt att lägga till en länk för virtuellt nätverk på den privata DNS-zonnivån i containerregistret för det virtuella nätverk där den anpassade DNS-servern finns.

Om du vill lägga till länken för det virtuella nätverket till den anpassade DNS-servern från containerregistrets privata DNS-zonnivå använder du någon av följande metoder:

  • Via Azure-portalen

    1. I Azure Portal söker du efter och väljer Privat DNS zoner.

    2. I listan över privata DNS-zoner väljer du container-registry-name.privatelink.azurecr.io>.<

    3. I menyfönstret i din privata DNS-zon väljer du Länken Inställningar>Virtuellt nätverk.

    4. På sidan Länkar till virtuellt nätverk i din privata DNS-zon väljer du Lägg till.

    5. På länken Lägg till virtuellt nätverk anger du värdet Länknamn och väljer sedan lämpligt värde för virtuellt nätverk för den anpassade DNS-servern. (Den Alternativet Aktivera automatisk registrering är valfritt.)

    6. Välj knappen OK.

  • Via Azure CLI

    Kör kommandot az network private-dns link vnet create i Azure CLI.

Resurser

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.