次の方法で共有


Azure Container Registry FQDN のプライベート IP アドレスを取得できない

この記事では、Microsoft Azure Container Registry の完全修飾ドメイン名 (FQDN) をプライベート IP アドレスに解決できない最も一般的な状況をトラブルシューティングするためのガイダンスを提供します。

概要

Azure Container Registry では、 Azure Private Link をプライベート エンドポイントと プライベート DNS ゾーンと共に使用して 仮想ネットワークのプライベート IP アドレスをレジストリ FQDN (ログイン サーバーまたは REST API エンドポイントとも呼ばれます) に割り当てることができます。

Azure Container Registry サービスはマルチテナントであるため、常にパブリック IP アドレスを持っています。 レジストリ FQDN に Private Link テクノロジを使用するようにコンテナー レジストリを設定すると、コンテナー レジストリにパブリック IP アドレスとプライベート IP アドレスが発行されます。

この構成を設定すると、DNS 解決がプライベート IP アドレスを返す必要がある場合でも、コンテナー レジストリ FQDN の DNS 解決によってパブリック IP アドレスが返される場合があります。 このシナリオでは、コンテナー レジストリへのパブリック アクセスが無効になっており、プライベート接続のみに依存している場合、プル エラーなどの多くの問題が発生する可能性があります。

Note

コンテナー レジストリがプライベート使用用に構成されていることを確認するには、次の手順に従います。

  1. Azure ポータルでcontainer レジストリ検索して選択

  2. コンテナー レジストリの一覧で、コンテナー レジストリの名前を選択します。

  3. コンテナー レジストリのメニュー ウィンドウで、 Settings>Networking を選択します。

  4. [ Public access ] タブで、[ Public network access フィールドが Disabled に設定されていることを確認します。

  5. [Private access] タブを選択し、プライベート エンドポイント接続が設定されていることを確認します。

現象

ドメイン ネーム システム (DNS) ユーティリティ ツールを使用して DNS クエリを実行し、クエリ結果でコンテナー レジストリの public IP アドレスを取得します。 ただし、コンテナー レジストリは実際にはプライベート使用用に構成されており、DNS クエリの結果は、コンテナー レジストリがプライベート使用用に構成されていることを示します。

Note

正規名が <container-registry-name>.privatelink.azurecr.io形式の場合、コンテナー レジストリはプライベート使用用に構成されます。

たとえば、次の nslookup コマンドは、 acrpe332.azurecr.io コンテナー レジストリ FQDN に対して DNS クエリを実行します。

nslookup acrpe332.azurecr.io

nslookup 出力は、 acrpe332.privatelink.azurecr.ioの正規名を返します。そのため、 acrpe332 コンテナー レジストリがプライベート使用用に構成されていることがわかります。 ただし、出力では、acrpe332 コンテナー レジストリ FQDN の20.62.128.38のパブリック IP アドレスも返されます。

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

Note

この例では、DNS サーバーとして Azure DNS サービス (168.63.129.16) を使用します。 カスタム DNS サーバーを使用する場合、サーバーには、その IP アドレスが Server フィールドと Address フィールドと共に表示されます。

原因 1: コンテナー レジストリのプライベート エンドポイントとデバイスが異なる仮想ネットワーク上にある

コンテナー レジストリのプライベート エンドポイントのネットワーク インターフェイスは、コンテナー レジストリの FQDN を解決しようとするデバイスとは異なる仮想ネットワーク上にあります。

プライベート DNS ゾーン内の DNS レコードのクエリを正常に実行するには、dns クエリを開始するデバイスが存在する仮想ネットワークのコンテナー レジストリのプライベート DNS ゾーン レベルで仮想ネットワーク リンクを追加します。 このデバイスには、次のいずれかの項目を指定できます。

  • Azure Kubernetes Service (AKS) ノード
  • Azure Virtual Machines
  • Azure Web App for Containers
  • その他の種類のデバイス

コンテナー レジストリのプライベート DNS ゾーン レベルからデバイスの仮想ネットワークへの仮想ネットワーク リンクを追加するには、次のいずれかの方法を使用します。

  • Azure portal を使用

    1. Azure ポータルでプライベート DNSゾーンを検索して選択

    2. プライベート DNS ゾーンの一覧で、 <container-registry-name>.privatelink.azurecr.io を選択します。

    3. プライベート DNS ゾーンのメニュー ウィンドウで、 Settings>Virtual ネットワーク リンクを選択します。

    4. プライベート DNS ゾーンの 仮想ネットワーク リンク ページで、 [追加]を選択します。

    5. 仮想ネットワークリンクの追加 ページで、リンク名を入力し、コンテナー レジストリの FQDN をプライベートに解決する必要があるデバイスの仮想ネットワークを選択します。 ( 自動登録を有効にする オプションは省略可能です)。

    6. [OK] ボタンを選択します。

  • Azure CLI を使用する

    Azure CLI で、 az network private-dns link vnet create コマンドを実行します。

原因 2: カスタム DNS サーバーが Azure DNS サービスに転送されない

既定では、Azure 仮想ネットワークは DNS サーバーとして Azure DNS サービス (168.63.129.16) を使用しますが、独自のカスタム DNS サーバーを使用することもできます。 ただし、独自のカスタム DNS サーバーを設定しようとすると、カスタム DNS サーバー レベルでサーバー レベルのフォワーダーを Azure DNS サービスに設定するのを忘れました。

解決策 2: Azure DNS サービスへのサーバー レベルフォワーダーを構成する

プライベート IP アドレス経由でコンテナー レジストリの FQDN を解決するデバイスが、カスタム DNS サーバーを使用する Azure 仮想ネットワークの一部である場合は、カスタム DNS サーバーで Azure DNS サービスへのサーバー レベルフォワーダーを構成する必要があります。 正確な構成オプションと手順は、既存のネットワークと DNS (Windows Server、CoreDNS など) によって異なります。

既定では、Azure 仮想ネットワークは DNS サーバーとして Azure DNS サービス (168.63.129.16) を使用しますが、独自のカスタム DNS サーバーを使用することもできます。 独自のカスタム DNS サーバーを設定しようとすると、カスタム DNS サーバー レベルでサーバー レベルのフォワーダーが Azure DNS サービスに正しく設定されます。 ただし、カスタム DNS サーバーが存在する仮想ネットワークのコンテナー レジストリのプライベート DNS ゾーン レベルで仮想ネットワーク リンクを追加するのを忘れました。

コンテナー レジストリのプライベート DNS ゾーン レベルからカスタム DNS サーバーへの仮想ネットワーク リンクを追加するには、次のいずれかの方法を使用します。

  • Azure portal を使用

    1. Azure ポータルでプライベート DNSゾーンを検索して選択

    2. プライベート DNS ゾーンの一覧で、 <container-registry-name>.privatelink.azurecr.io を選択します。

    3. プライベート DNS ゾーンのメニュー ウィンドウで、 Settings>Virtual ネットワーク リンクを選択します。

    4. プライベート DNS ゾーンの 仮想ネットワーク リンク ページで、 [追加]を選択します。

    5. 仮想ネットワークリンクの追加 ページで、リンク名値を入力し、カスタム DNS サーバーの適切な 仮想ネットワークの値を選択します。 ( 自動登録を有効にする オプションは省略可能です)。

    6. [OK] ボタンを選択します。

  • Azure CLI を使用する

    Azure CLI で、 az network private-dns link vnet create コマンドを実行します。

リソース

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。