閱讀英文

共用方式為

使用 VM 或 Azure DNS 专用解析程序为 Azure 文件配置 DNS 转发

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

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

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

适用于

文件共享类型 中小型企业 (SMB) 网络文件系统(NFS)
标准文件共享 (GPv2)、LRS/ZRS 是 否
标准文件共享 (GPv2)、GRS/GZRS 是 否
高级文件共享 (FileStorage)、LRS/ZRS 是 是

概述

Azure Files 提供以下终结点类型,用于访问 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 区域将会链接到它被添加到的虚拟网络。在此过程中,CNAME 记录会将 storageaccount.file.core.chinacloudapi.cn 映射到一个 A 记录条目,该条目代表存储帐户专用终结点的专用 IP 地址。 这样,便可以在虚拟网络中使用 storageaccount.file.core.chinacloudapi.cn FQDN,并将其解析为专用终结点的 IP 地址。

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

可以通过以下两种方式之一配置 DNS 转发:

  • 使用 DNS 服务器 VM:将 *.core.chinacloudapi.cn 设置为按条件转发到 Azure 虚拟网络中托管的 DNS 服务器虚拟机。 然后,此 DNS 服务器将以递归方式将请求转发到 Azure 的专用 DNS 服务,该服务会将存储帐户的 FQDN 解析为适当的专用 IP 地址。 这是针对虚拟网络中托管的所有 Azure 文件共享的一次性步骤。

  • 使用 Azure DNS 专用解析程序: 如果不想部署基于 VM 的 DNS 服务器,可以使用 Azure DNS 专用解析程序完成相同的任务。

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

先决条件

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

使用 VM 配置 DNS 转发

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

此图显示了使用 Azure 中的虚拟机配置 D N S 转发的网络拓扑。

重要

本指南假定在本地环境中使用 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 区域的请求定向到 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 门户创建 Azure DNS 专用解析程序

示意图显示了使用 Azure D N S 专用解析程序配置 D N S 转发的网络拓扑。

配置本地 DNS 服务器的操作方式没有什么不同,只是要指向解析程序的入站终结点 IP 地址,而不是 Azure 中 DNS 服务器的 IP 地址。 解析程序不需要任何配置,因为它默认会将查询转发到 Azure 专用 DNS 服务器。 如果专用 DNS 区域链接到部署解析程序的 VNet,则解析程序将能够回复来自该 DNS 区域的记录。

警告

core.chinacloudapi.cn 区域配置转发器时,此公共域的所有查询都将转发到 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-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

另请参阅