次の方法で共有


VM または Azure DNS プライベート リゾルバーを使用して Azure Files の DNS 転送を構成する

✔️ 適用対象: すべての Azure ファイル共有

Azure Files を使用すると、ファイル共有を含むストレージ アカウントのプライベート エンドポイントを作成できます。 多くの異なるアプリケーションに便利ですが、プライベート エンドポイントは、プライベート ピアリングを使用した VPN または ExpressRoute 接続を使用してオンプレミス ネットワークから Azure ファイル共有に接続する場合に特に便利です。

ストレージ アカウントへの接続がネットワーク トンネルを経由するためには、ストレージ アカウントの完全修飾ドメイン名 (FQDN) がプライベート エンドポイントのプライベート IP アドレスに解決される必要があります。 これを実現するには、ストレージ エンドポイント サフィックス (パブリック クラウド リージョン用にcore.windows.net ) を、仮想ネットワーク内からアクセス可能な Azure プライベート DNS サービスに転送する必要があります。 このガイドでは、ストレージ アカウントのプライベート エンドポイント IP アドレスに適切に解決するように DNS 転送を設定および構成する方法について説明します。

この記事で説明する手順を完了する前に 、Azure Files デプロイの計画Azure Files のネットワークに関する考慮事項 を読むことを強くお勧めします。

概要

Azure Files には、Azure ファイル共有にアクセスするための次の種類のエンドポイントが用意されています。

  • パブリック エンドポイント。パブリック IP アドレスを持ち、世界中のどこからでもアクセスできます。
  • プライベート エンドポイント。仮想ネットワーク内に存在し、その仮想ネットワークのアドレス空間内からのプライベート IP アドレスを持ちます。
  • サービス エンドポイント。パブリック エンドポイントへのアクセスを特定の仮想ネットワークに制限します。 引き続きパブリック IP アドレスを使用してストレージ アカウントにアクセスしますが、アクセスできるのは、構成で指定した場所からのみ可能です。

パブリックおよびプライベート エンドポイントは、Azure ストレージ アカウントに存在します。 ストレージ アカウントは、複数のファイル共有だけでなく、BLOB コンテナーやキューなどのその他のストレージ リソースをデプロイできるストレージの共有プールを表す管理構造です。

すべてのストレージ アカウントには完全修飾ドメイン名 (FQDN) があります。 パブリック クラウド リージョンの場合、この FQDN は、storageaccount.file.core.windows.netがストレージ アカウントの名前であるパターン storageaccountに従います。 ワークステーションに共有をマウントするなど、この名前に対して要求を行うと、オペレーティング システムでは DNS 参照を実行し、完全修飾ドメイン名を、IP アドレスに解決させます。

既定では、 storageaccount.file.core.windows.net はパブリック エンドポイントの IP アドレスに解決されます。 ストレージ アカウントのパブリック エンドポイントは、他の多くのストレージ アカウントのパブリック エンドポイントをホストする Azure ストレージ クラスターでホストされます。 プライベート エンドポイントを作成すると、プライベート DNS ゾーンが追加された仮想ネットワークにリンクされ、CNAME レコードがストレージ アカウントのプライベート エンドポイントのプライベート IP アドレスの A レコード エントリに storageaccount.file.core.windows.net マッピングされます。 これにより、仮想ネットワーク内で storageaccount.file.core.windows.net FQDN を使用して、プライベート エンドポイントの IP アドレスに解決させることができます。

最終的な目的は、VPN や ExpressRoute 接続などのネットワーク トンネルを使用してオンプレミスからストレージ アカウント内でホストされている Azure ファイル共有にアクセスすることです。そのため、Azure Files サービスに対して行われた要求を Azure プライベート DNS サービスに転送するようにオンプレミスの DNS サーバーを構成する必要があります。

DNS 転送は、次の 2 つの方法のいずれかを構成できます。

  • DNS サーバー VM を使用する:azure 仮想ネットワーク内でホストされている DNS サーバー仮想マシンへの (または米国政府、ドイツ、または中国の国内クラウド用の適切なストレージ エンドポイント サフィックス) の*.core.windows.netを設定します。 その後、この DNS サーバーは Azure のプライベート DNS サービスに要求を再帰的に転送します。これにより、ストレージ アカウントの FQDN が適切なプライベート IP アドレスに解決されます。 これは、仮想ネットワーク内でホストされているすべての Azure ファイル共有に対する 1 回限りの手順です。

  • Azure DNS プライベート リゾルバーを使用する: VM ベースの DNS サーバーをデプロイしない場合は、Azure DNS プライベート リゾルバーを使用して同じタスクを実行できます。

Azure Files に加えて、他の Azure ストレージ サービス (Azure Blob Storage、Azure Table Storage、Azure Queue Storage など) に対する DNS 名前解決要求は、Azure のプライベート DNS サービスに転送されます。 必要に応じて、他の Azure サービスのエンドポイントを追加できます。

[前提条件]

Azure Files への DNS 転送を設定する前に、次のものが必要です。

VM を使用して DNS 転送を構成する

Azure 仮想ネットワーク内に DNS サーバーが既に配置されている場合、または組織が使用する方法によって独自の DNS サーバー VM をデプロイする場合は、組み込みの DNS サーバー PowerShell コマンドレットを使用して DNS を構成できます。

Azure の仮想マシンを使用して D N S 転送を構成するためのネットワーク トポロジを示す図。

Important

このガイドでは、オンプレミス環境で Windows Server 内の DNS サーバーを使用していることを前提としています。 ここで説明するすべての手順は、Windows DNS サーバーだけでなく、任意の DNS サーバーでも可能です。

オンプレミスの DNS サーバーで、 Add-DnsServerConditionalForwarderZoneを使用して条件付きフォワーダーを作成します。 この条件付きフォワーダーは、トラフィックを Azure に適切に転送する際に有効にするために、オンプレミスのすべての DNS サーバーにデプロイする必要があります。 <azure-dns-server-ip>エントリは、環境に適した IP アドレスに置き換えてください。

$vnetDnsServers = "<azure-dns-server-ip>", "<azure-dns-server-ip>"

$storageAccountEndpoint = Get-AzContext | `
    Select-Object -ExpandProperty Environment | `
    Select-Object -ExpandProperty StorageEndpointSuffix

Add-DnsServerConditionalForwarderZone `
        -Name $storageAccountEndpoint `
        -MasterServers $vnetDnsServers

Azure 仮想ネットワーク内の DNS サーバーでは、ストレージ アカウントの DNS ゾーンに対する要求が Azure プライベート DNS サービスに送信されるようにフォワーダーを配置する必要もあります。このサービスは、予約済みの IP アドレス 168.63.129.16によって前面に配置されます。 (別の PowerShell セッション内でコマンドを実行している場合は、必ず $storageAccountEndpoint を入力してください)。

Add-DnsServerConditionalForwarderZone `
        -Name $storageAccountEndpoint `
        -MasterServers "168.63.129.16"

Azure DNS プライベート リゾルバーを使用して DNS 転送を構成する

DNS サーバー VM をデプロイしない場合は、Azure DNS プライベート リゾルバーを使用して同じタスクを実行できます。 Azure portal を使用した Azure DNS プライベート リゾルバーの作成に関するページを参照してください。

Azure D N S プライベート リゾルバーを使用して D N S 転送を構成するためのネットワーク トポロジを示す図。

オンプレミスの DNS サーバーを構成する方法に違いはありません。ただし、Azure の DNS サーバーの IP アドレスをポイントする代わりに、リゾルバーの受信エンドポイント IP アドレスをポイントする点が異なります。 リゾルバーは既定で Azure プライベート DNS サーバーにクエリを転送するため、構成は必要ありません。 プライベート DNS ゾーンがリゾルバーがデプロイされている VNet にリンクされている場合、リゾルバーはその DNS ゾーンのレコードに応答できます。

Warnung

core.windows.net ゾーンのフォワーダーを構成すると、このパブリック ドメインのすべてのクエリが Azure DNS インフラストラクチャに転送されます。 これにより、プライベート エンドポイントで構成されている別のテナントのストレージ アカウントにアクセスしようとすると、Azure DNS がプライベート DNS ゾーンに存在しない CNAME を持つストレージ アカウントのパブリック名のクエリに応答するため、問題が発生します。 この問題の回避策は、環境内にテナント間のプライベート エンドポイントを作成して、そのストレージ アカウントに接続することです。

Azure DNS プライベート リゾルバーを使用して DNS 転送を構成するには、オンプレミスの DNS サーバーでこのスクリプトを実行します。 <resolver-ip>をリゾルバーの受信エンドポイント IP アドレスに置き換えます。

$privateResolver = "<resolver-ip>"

$storageAccountEndpoint = Get-AzContext | `
    Select-Object -ExpandProperty Environment | `
    Select-Object -ExpandProperty StorageEndpointSuffix

Add-DnsServerConditionalForwarderZone `
        -Name $storageAccountEndpoint `
        -MasterServers $privateResolver

DNS フォワーダーの確認

DNS フォワーダーが正常に適用されたかどうかをテストする前に、 Clear-DnsClientCacheを使用してローカル ワークステーションの DNS キャッシュをクリアすることをお勧めします。 ストレージ アカウントの FQDN を正常に解決できるかどうかをテストするには、 Resolve-DnsName または nslookupを使用します。

# Replace storageaccount.file.core.windows.net with the appropriate FQDN for your storage account.
# Note that the proper suffix (core.windows.net) depends on the cloud you're deployed in.
Resolve-DnsName -Name storageaccount.file.core.windows.net

名前解決が成功すると、解決された IP アドレスがストレージ アカウントの IP アドレスと一致することがわかります。

Name                              Type   TTL   Section    NameHost
----                              ----   ---   -------    --------
storageaccount.file.core.windows. CNAME  29    Answer     csostoracct.privatelink.file.core.windows.net
net

Name       : storageaccount.privatelink.file.core.windows.net
QueryType  : A
TTL        : 1769
Section    : Answer
IP4Address : 192.168.0.4

SMB ファイル共有をマウントする場合は、 Test-NetConnection コマンドを使用して、ストレージ アカウントへの TCP 接続が正常に確立できることを確認することもできます。

Test-NetConnection -ComputerName storageaccount.file.core.windows.net -CommonTCPPort SMB

こちらも参照ください