配置 Azure 文件存储的 DNS 转发

使用 Azure 文件存储可为包含文件共享的存储帐户创建专用终结点。 专用终结点可在许多不同的应用场合下发挥作用,而且特别适合用于通过专用对等互连使用 VPN 或 ExpressRoute 连接从本地网络连接到 Azure 文件共享。

若要连接到存储帐户以通过网络隧道传输数据,存储帐户的完全限定域名 (FQDN) 必须解析为专用终结点的专用 IP 地址。 若要实现此目的,必须将存储终结点后缀(core.chinacloudapi.cn 表示由世纪互联运营的 Microsoft Azure 区域)转发到可从虚拟网络内部访问的 Azure 专用 DNS 服务。 本指南将介绍如何设置和配置 DNS 转发,以正确解析为存储帐户的专用终结点 IP 地址。

在完成本文中所述的步骤之前,我们强烈建议先阅读规划 Azure 文件存储的部署Azure 文件存储网络注意事项

适用于

文件共享类型 SMB NFS
标准文件共享 (GPv2)、LRS/ZRS Yes No
标准文件共享 (GPv2)、GRS/GZRS Yes No
高级文件共享 (FileStorage)、LRS/ZRS Yes Yes

概述

Azure 文件存储提供以下类型的终结点,用于访问 Azure 文件共享:

  • 公共终结点:使用公共 IP 地址,可从全球任意位置访问。
  • 专用终结点:位于某个虚拟网络中,并使用该虚拟网络的地址空间内部的专用 IP 地址。
  • 服务终结点,该类型仅限从特定的虚拟网络访问公共终结点。 仍可通过公共 IP 地址访问存储帐户,但只能从你在配置中指定的位置访问。

公共和专用终结点位于 Azure 存储帐户中。 存储帐户是代表共享存储池的管理结构,你可以在其中部署多个文件共享以及其他存储资源(例如,Blob 容器或队列)。

每个存储帐户具有完全限定的域名 (FQDN)。 对于由世纪互联运营的 Microsoft Azure 区域,此 FQDN 遵循 storageaccount.file.core.chinacloudapi.cn 模式,其中的 storageaccount 是存储帐户的名称。 对此名称发出请求时(例如,在工作站上装载共享时),操作系统会执行 DNS 查找,以将完全限定的域名解析为 IP 地址。

默认情况下,storageaccount.file.core.chinacloudapi.cn 解析为公共终结点的 IP 地址。 存储帐户的公共终结点托管在 Azure 存储群集上,该群集托管存储帐户的其他许多公共终结点。 创建专用终结点时,专用 DNS 区域将使用与存储帐户专用终结点专用 IP 地址的 A 记录条目建立的 CNAME 记录映射 storageaccount.file.core.chinacloudapi.cn,链接到该专用终结点所添加到的虚拟网络。 这样,你便可以在虚拟网络中使用 storageaccount.file.core.chinacloudapi.cn FQDN,并使其解析为专用终结点的 IP 地址。

由于我们的最终目标是使用 VPN 或 ExpressRoute 连接等网络隧道从本地访问存储帐户中托管的 Azure 文件共享,因此,必须将本地 DNS 服务器配置为向 Azure 专用 DNS 服务转发对 Azure 文件存储服务发出的请求。

使用 DNS 服务器 VM:设置为将 *.core.windows.net(或美国政府、德国或中国国家云的相应存储终结点后缀)条件转发到 Azure 虚拟网络中托管的 DNS 服务器虚拟机。 然后,此 DNS 服务器以递归方式将请求转发到 Azure 的专用 DNS 服务,后者将存储帐户的 FQDN 解析为相应的专用 IP 地址。 这是针对虚拟网络中托管的所有 Azure 文件共享的一次性步骤。

除了 Azure 文件存储以外,针对所有其他 Azure 存储服务(Azure Blob 存储、Azure 表存储、Azure 队列存储等)的 DNS 名称解析请求都将转发到 Azure 的专用 DNS 服务。 如果需要,还可以添加其他 Azure 服务的其他终结点。

先决条件

在设置到 Azure 文件存储的 DNS 转发之前,需要以下各项:

使用 VM 配置 DNS 转发

如果已在 Azure 虚拟网络中配置了 DNS 服务器,或者你更想通过组织所用的任何方法部署自己的 DNS 服务器 VM,则可以使用内置的 DNS 服务器 PowerShell cmdlet 来配置 DNS。

Diagram showing the network topology for configuring D N S forwarding using virtual machines in Azure.

重要

本指南假设你在本地环境中的 Windows Server 内使用 DNS 服务器。 可以使用任何 DNS 服务器(而不仅仅是 Windows DNS 服务器)完成本指南中所述的所有步骤。

在本地 DNS 服务器上,使用 Add-DnsServerConditionalForwarderZone 创建条件转发器。 此条件转发器必须部署在所有本地 DNS 服务器上,才能在正确将流量转发到 Azure 时产生效果。 请记得将 <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 区域的请求定向到保留 IP 地址 168.63.129.16 后面的 Azure 专用 DNS 服务。 (如果在不同的 PowerShell 会话中运行这些命令,请记得填充 $storageAccountEndpoint。)

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

确认 DNS 转发器

在测试是否已成功应用 DNS 转发器之前,我们建议使用 Clear-DnsClientCache 清除本地工作站上的 DNS 缓存。 若要测试是否可以成功解析存储帐户的 FQDN,请使用 Resolve-DnsNamenslookup

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

如果名称解析成功,应会看到解析的 IP 地址与存储帐户的 IP 地址相匹配。

Name                                       Type   TTL   Section    NameHost
----                                       ----   ---   -------    --------
storageaccount.file.core.chinacloudapi.cn  CNAME  29    Answer     csostoracct.privatelink.file.core.chinacloudapi.cn


Name       : storageaccount.privatelink.file.core.chinacloudapi.cn
QueryType  : A
TTL        : 1769
Section    : Answer
IP4Address : 192.168.0.4

如果你是在装载 SMB 文件共享,则还可以使用 Test-NetConnection 命令确认是否可以成功建立到存储帐户的 TCP 连接。

Test-NetConnection -ComputerName storageaccount.file.core.chinacloudapi.cn -CommonTCPPort SMB

另请参阅