Azure Virtual WAN での Private Link と DNS のガイド

Azure Private Link
Azure DNS
Azure Firewall
Azure バーチャル WAN

Azure Private Linkを使用すると、クライアントはパブリック IP アドレス指定を使用せずに、プライベート仮想ネットワークから直接 Azure PaaS サービスにアクセスできます。 サービスごとに、ネットワークからのプライベート IP アドレスを使用するプライベート エンドポイントを構成します。 その後、クライアントはプライベート エンドポイントを使用して、サービスにプライベートに接続できます。

クライアントは、サービスの完全修飾ドメイン名 (FQDN) を使用してサービスに接続します。 サービスの FQDN をプライベート エンドポイントのプライベート IP アドレスに解決するように、ネットワーク内の DNS を構成します。

ネットワークの設計、特に DNS 構成は、サービスへのプライベート エンドポイント接続をサポートする上で重要な要素です。 この記事は、Virtual WAN環境でのPrivate Link動作の理解に関するガイダンスを提供する一連の記事の 1 つです。 一般的な DNS とルーティングの課題を示すために使用される意図的に制約された例など、いくつかのシナリオが示されています。 どのシナリオも状況に正確に一致しない場合でも、ニーズに合わせて設計を調整できる必要があります。

ネットワーク トポロジの開始

開始ネットワーク トポロジは、このシリーズのすべてのシナリオの基本アーキテクチャです。 これは、Azure Virtual WANを使用する一般的なハブスポーク ネットワークです。

この一連の記事で使用される開始 Virtual WAN アーキテクチャを示す図。

図 1: すべてのプライベート エンドポイントと DNS シナリオのネットワーク トポロジの開始

このアーキテクチャの Visio ファイル をダウンロードします。 このトポロジには、次の特性があります。

  • これは、Azure Virtual WAN で実装されているハブスポーク ネットワークです。
  • 2 つのリージョンがあり、それぞれにAzure Firewallを含むセキュリティで保護された仮想ハブがあります。
  • セキュリティで保護された各リージョン仮想ハブには、Azure Virtual Network 接続用の次のセキュリティ設定があります。
    • インターネット トラフィック: Azure Firewall - インターネットへのすべてのトラフィックがリージョン ハブ ファイアウォールを通過します。
    • プライベート トラフィック: Azure Firewall によって保護 - すべてのスポーク間トラフィックがリージョン ハブ ファイアウォールによって保護されます。
  • 各リージョンの仮想ハブは、Azure Firewall で保護されます。 リージョン ハブ ファイアウォールには、次の設定があります。
    • DNS サーバー: 既定 (Azure 提供) - リージョン ハブ ファイアウォールは、規則コレクションの FQDN 解決に Azure DNS を明示的に使用します。
    • DNS プロキシ: 有効 - リージョン ハブ ファイアウォールは、ポート 53 の DNS クエリに応答します。 キャッシュされていない値については、クエリを Azure DNS に転送します。
    • ファイアウォールは、ルールの評価と DNS プロキシ要求を、同じリージョンにある Log Analytics ワークスペースに記録します。 このログ記録は、標準的なネットワーク セキュリティ要件です。
  • 各スポークは、リージョンファイアウォールのプライベート IP を DNS サーバーとして使用します。 それ以外 の場合は、FQDN ルールの評価が同期されていない可能性があります

複数リージョンのルーティング

Virtual WAN ハブ ルーティングの意図とルーティング ポリシーでは、ハブ間のトラフィックフロー方法と、そのトラフィックをAzure Firewallまたは別のセキュリティ ソリューションによって検査するかどうかを制御できます。

既定では、マルチハブ Virtual WANデプロイでは、inter-hub プライベート トラフィックは Azure Firewall を通過しません。 代わりに、Azureは、組み込みのVirtual WANマネージド ハブ間接続を使用します。これは、各ハブ内のセキュリティで保護されたトラフィック パスと並行して実行されます。 つまり、ハブ間を移動するプライベート トラフィックは 自動的には検査されません

ハブ間プライベート トラフィックを検査するAzure Firewallが必要な場合は、Private Traffic ルーティング ポリシーを構成し、inter-hub 検査を有効にすることで、この動作を有効にすることができます。 これにより、ハブ間のプライベート トラフィックが検査のためにAzure Firewall経由で転送されます。

この構成はより高度であり、 このシリーズの範囲外です。

スポーク ネットワークの追加

スポーク ネットワークを追加するときは、開始ネットワーク トポロジで定義されている制約を適用します。 各スポークはリージョン ハブの既定のルート テーブルに関連付け、Azure Firewallはインターネットトラフィックとプライベート トラフィックの両方をセキュリティで保護します。 次のスクリーンショットは、構成例を示しています。

Azure Firewall がセキュリティで保護するインターネットトラフィックとプライベート トラフィックを示す仮想ネットワーク接続のセキュリティ構成のスクリーンショット。 図 2: 仮想ハブでの仮想ネットワーク接続のセキュリティ構成

主な課題

開始ネットワーク トポロジでは、プライベート エンドポイントの DNS を構成するための課題が発生します。

Virtual WANはマネージド ハブ エクスペリエンスを提供しますが、仮想ハブの構成に影響を与えたり、それにコンポーネントを追加したりする機能は限定的です。 従来のハブスポーク トポロジを使用すると、スポーク内のワークロードを分離しながら、DNS レコードなどの一般的なネットワーク サービスをセルフマネージド ハブで共有できます。 通常、Azure DNS がクライアントのプライベート エンドポイント IP アドレスを解決できるように、プライベート DNS ゾーンをハブ ネットワークにリンクします。

ただし、プライベート DNS ゾーンを Virtual WAN ハブにリンクすることはできません。そのため、ハブ内の DNS 解決ではプライベート ゾーンが認識されません。 具体的には、ワークロード スポークの DNS プロバイダーとして機能し、FQDN 解決に DNS を使用するAzure Firewallの問題が発生します。

Virtual WAN ハブを使用する場合、ワークロードで DNS 解決が必要なスポーク仮想ネットワークにプライベート DNS ゾーンをリンクすることは直感的に思える場合があります。 ただし、アーキテクチャで示されているように、DNS プロキシはリージョンファイアウォールで有効になっており、すべてのスポークは、そのリージョンのファイアウォールを DNS ソースとして使用する必要があります。 Azure DNS クエリは、ワークロード仮想ネットワークではなくハブ内のファイアウォールから送信されるため、スポーク ネットワーク上のプライベート DNS ゾーン リンクは解決には使用されません。

Virtual WAN ハブはプライベート DNS ゾーンにリンクできないため、Private Linkシナリオでの DNS 解決の推奨されるアプローチは、ハブ拡張機能仮想ネットワークにデプロイされたプライベート リゾルバー Azure DNSです。 これにより、Virtual WAN ハブに接続されているワークロードに対して、スケーラブルでゾーン対応のプライベート DNS 解決が可能になります。 このシリーズのフォローアップ記事では、DNS プライベート リゾルバーがアーキテクチャを完了する方法を示します。

リージョン ファイアウォールをスポークの DNS プロバイダーとして構成するには、スポーク仮想ネットワーク上のカスタム DNS サーバーを、通常のAzure DNS値ではなく、ファイアウォールのプライベート IP を指すように設定します。

リージョンのファイアウォールで DNS プロキシを有効にする複雑さを考えて、有効にする理由を確認しましょう。

  • Azure Firewallネットワーク ルールでは、FQDN ベースの制限がサポートされ、アプリケーション ルールで処理されないエグレス トラフィックをより正確に制御できます。 この機能に対して DNS プロキシを有効にする必要があります。 一般的な用途は、ネットワーク タイム プロトコル (NTP) トラフィックを既知のエンドポイント ( time.windows.com など) に制限することです。
  • DNS 要求ログは、セキュリティ チームにメリットがあります。 Azure Firewall には DNS 要求ログのサポートが組み込まれているため、すべてのスポーク リソースが DNS プロバイダーとして Azure Firewall を使用する必要があるため、広範なログ記録範囲が確保されます。

課題を説明するために、次のセクションでは 2 つの構成について説明します。 動作する簡単な例と、そうでないより複雑な例がありますが、その失敗は有益です。

作業シナリオ

次の例は、基本的なプライベート エンドポイント構成です。 仮想ネットワークには、プライベート エンドポイントを介して PaaS サービスを必要とするクライアントが含まれています。 仮想ネットワークにリンクされているプライベート DNS ゾーンには、サービスの FQDN をプライベート エンドポイントのプライベート IP アドレスに解決する A レコードがあります。 フローについては、次の図をご覧ください。

基本的なプライベート エンドポイントと DNS 構成を示す図。

図 3: プライベート エンドポイントの基本的な DNS 構成

このアーキテクチャの Visio ファイルをダウンロードします。

  1. クライアントは、stgworkload00.blob.core.windows.net 要求を発行します。

  2. 仮想ネットワーク用に構成された DNS サーバーである Azure DNS に対して、stgworkload00.blob.core.windows.net の IP アドレスが照会されます。

    仮想マシン (VM) から次のコマンドを実行すると、VM が DNS プロバイダーとして Azure DNS (168.63.129.16) を使用するように構成されていることが示されています。

    resolvectl status eth0
    
    Link 2 (eth0)
          Current Scopes: DNS
      Current DNS Server: 168.63.129.16
             DNS Servers: 168.63.129.16    
    
  3. プライベート DNS ゾーン privatelink.blob.core.windows.net はワークロード VNet にリンクされているため、Azure DNS にはワークロード VNet からのレコードが応答に組み込まれます。

  4. FQDN ( stgworkload00.privatelink.blob.core.windows.net) をプライベート エンドポイントのプライベート IP にマップするプライベート DNS ゾーンに A レコードが存在するため、プライベート IP アドレス 10.1.2.4 が返されます。

    VM から次のコマンドを実行すると、ストレージ アカウントの FQDN がプライベート エンドポイントのプライベート IP アドレスに解決されます。

    resolvectl query stgworkload00.blob.core.windows.net
    
    stgworkload00.blob.core.windows.net: 10.1.2.4   -- link: eth0
                                        (stgworkload00.privatelink.blob.core.windows.net)
    
  5. 要求は、プライベート エンドポイントのプライベート IP アドレス (10.1.2.4) に発行されます。

  6. 要求は Private Link 経由でストレージ アカウントにルーティングされます。

この設計が機能する理由はAzure DNSにあります。

  • 仮想ネットワーク用に構成された DNS サーバーです。
  • リンクされたプライベート DNS ゾーンを認識します。
  • ゾーンの値を使用して DNS クエリを解決します。

非稼働シナリオ

次の例は、開始ネットワーク トポロジでプライベート エンドポイントを使用する単純な試行です。 プライベート DNS ゾーンを Virtual WAN ハブにリンクすることはできません。 そのため、クライアントが DNS サーバーとしてファイアウォールを使用するように構成されている場合、DNS 要求は、リンクされたプライベート DNS ゾーンを持たない仮想ハブ内から Azure DNS に転送されます。 Azure DNS では、既定のパブリック IP アドレスを指定する以外に、クエリを解決する方法がわかりません。

Azure Firewall で DNS プロキシが有効になっているため、プライベート DNS ゾーンの DNS 構成が機能しないことを示す図。

図 4: 開始ネットワーク トポロジでプライベート エンドポイントを使用する単純な試行

このアーキテクチャの Visio ファイルをダウンロードします。

  1. クライアントは、stgworkload00.blob.core.windows.net 要求を発行します。

    VM から次のコマンドを実行すると、仮想ハブ ファイアウォールを DNS プロバイダーとして使用するように VM が構成されていることが示されています。

    resolvectl status eth0
    
    Link 2 (eth0)
          Current Scopes: DNS
      Current DNS Server: 10.100.0.132
             DNS Servers: 10.100.0.132    
    
  2. ファイアウォールでは、要求を Azure DNS に転送するための既定の設定で DNS プロキシが有効になっています。 要求は Azure DNS に転送されます。

  3. Azure DNS では、次の理由により、 stgworkload00.blob.core.windows.net をプライベート エンドポイントのプライベート IP アドレスに解決できません。

    1. プライベート DNS ゾーンを Virtual WAN ハブにリンクすることはできません。
    2. ワークロード仮想ネットワーク用に構成された DNS サーバーは Azure Firewall であるため、Azure DNS はワークロード仮想ネットワークにリンクされているプライベート DNS ゾーンを認識しません。

    Azure DNS は、ストレージ アカウントのパブリック IP アドレスで応答します。

    VM から次のコマンドを実行すると、ストレージ アカウントの FQDN がストレージ アカウントのパブリック IP に解決されます。

    resolvectl query stgworkload00.blob.core.windows.net
    
    stgworkload00.blob.core.windows.net: 52.239.174.228 -- link: eth0
                                        (blob.bn9prdstr08a.store.core.windows.net)
    

    Azure Firewall は DNS クエリをプロキシしているため、ログに記録できます。 Azure Firewall DNS プロキシ ログの例を次に示します。

    DNS Request: 10.1.0.4:60137 - 46023 A IN stgworkload00.blob.core.windows.net. udp 63 false 512 NOERROR qr,rd,ra 313 0.009424664s
    DNS Request: 10.1.0.4:53145 - 34586 AAAA IN blob.bn9prdstr08a.store.core.windows.net. udp 69 false 512 NOERROR qr,aa,rd,ra 169 0.000113s    
    
  4. クライアントは Private Link エンドポイントのプライベート IP アドレスを受信せず、ストレージ アカウントへのプライベート接続を確立できません。

この動作は仕様です。 シナリオが対処する問題です。

シナリオ

この問題の解決策は似ていますが、一般的なワークロード シナリオを調べると、各ソリューションがさまざまな要件を満たす方法が示されます。 ほとんどのシナリオは、プライベート エンドポイント経由で 1 つ以上の PaaS サービスにアクセスするクライアントで構成されます。 開始ネットワーク トポロジに準拠していますが、ワークロードの要件が異なります。 シナリオは、単一のリージョン PaaS サービスにアクセスするクライアントから始まります。 これらは段階的に複雑になり、ネットワークの可視性、リージョン、PaaS サービスが増えます。

ほとんどのシナリオでは、クライアントは VM として実装され、クライアントがアクセスする PaaS サービスはストレージ アカウントです。 仮想マシン スケール セット、Azure Kubernetes Service ノード、同様の方法でルーティングされるその他のサービスなど、仮想ネットワーク上に公開されている NIC を持つ Azure リソースのスタンドインとして VM を検討する必要があります。

重要

Azure Storage アカウントのPrivate Link実装は、微妙な方法で他の PaaS サービスとは異なる場合がありますが、他の多くのサービスとうまく連携します。 たとえば、一部のサービスでは、Private Link を介して公開されている間に FQDN レコードが削除されるため、動作が異なる可能性がありますが、このような違いは通常、これらのシナリオのソリューションの要因ではありません。

各シナリオは、目的の終了状態から始まり、開始ネットワーク トポロジから目的の終了状態に取得するために必要な構成について詳しく説明します。 このソリューションでは、仮想ハブ拡張機能パターン を使用します。このパターンでは、リージョン ハブのセキュリティで保護された拡張機能として共有サービスを公開し、Virtual WAN環境のプライベート エンドポイントの DNS 解決用に Azure DNS Private Resolver を使用します。 次の表に、仮想ハブ拡張機能パターンとシナリオへのリンクを示します。

ガイド 説明
単一リージョン、専用 PaaS 1 つのリージョン内のワークロードは、1 つの専用 PaaS リソースにアクセスします。

次のステップ