使用 VM 或 Azure DNS 私人解析程式設定 Azure 檔案儲存體 的 DNS 轉送
Azure 檔案儲存體可讓您針對包含檔案共用的儲存體帳戶建立私人端點。 雖然適用於許多不同的應用程式,但私人端點特別適用於透過 VPN 或 ExpressRoute 連線,使用私人對等互連從內部部署網路連線至您的 Azure 檔案共用。
為了讓儲存體帳戶的連線通過您的網路通道,您儲存體帳戶的完整網域名稱 (FQDN) 必須解析為您私人端點的私人 IP 位址。 若要達到此目的,您必須將儲存體端點尾碼 (公用雲端區域適用 core.windows.net
) 轉送至您虛擬網路內可存取的 Azure 私人 DNS 服務。 本指南將說明如何設定 DNS 轉送,以適當地解析為您儲存體帳戶的私人端點 IP 位址。
強烈建議您先閱讀規劃 Azure 檔案服務部署和 Azure 檔案儲存體的網路功能考量,再完成本文章中描述的步驟。
適用於
檔案共用類型 | SMB | NFS |
---|---|---|
標準檔案共用 (GPv2)、LRS/ZRS | ||
標準檔案共用 (GPv2)、GRS/GZRS | ||
進階檔案共用 (FileStorage)、LRS/ZRS |
概觀
Azure 檔案儲存體提供以下的端點型別來存取 Azure 檔案共用:
- 公用端點,具有公用 IP 位址,並可從全球任何地方存取。
- 私人端點,存在於虛擬網路內,並具有該虛擬網路位址空間內的私人 IP 位址。
- 服務端點,將公用端點的存取限制在特定虛擬網路。 您仍然可以透過公用 IP 位址存取儲存體帳戶,但只能從您在設定中指定的位置存取。
公用和私人端點都存在於 Azure 儲存體帳戶上。 儲存體帳戶是一種管理構造,所代表的是儲存體的共用集區,您可以在此集區中部署多個檔案共用,以及其他儲存體資源 (例如,Blob 容器或佇列)。
每個儲存體帳戶都有完整網域名稱 (FQDN)。 針對公用雲端區域,此 FQDN 會遵循 storageaccount.file.core.windows.net
模式,其中 storageaccount
是儲存體帳戶的名稱。 當您對此名稱提出要求時 (例如,在工作站上裝載共用),您的作業系統會執行 DNS 查閱,將完整網域名稱解析成 IP 位址。
根據預設,storageaccount.file.core.windows.net
會解析為公用端點的 IP 位址。 儲存體帳戶的公用端點裝載於 Azure 儲存體叢集上,該叢集會裝載許多其他儲存體帳戶的公用端點。 當您建立私人端點時,私人 DNS 區域會連結至其加入的虛擬網路,並且包含將 storageaccount.file.core.windows.net
對應至 A 記錄項目的 CNAME,此 A 記錄項目代表儲存體帳戶私人端點的私人 IP 位址。 這可讓您在虛擬網路內使用 storageaccount.file.core.windows.net
FQDN,並將其解析為私人端點的 IP 位址。
由於我們的最終目標是要使用網路通道 (例如 VPN 或 ExpressRoute 連線) 從內部部署環境存取裝載於儲存體帳戶內的 Azure 檔案共用,所以您必須設定內部部署 DNS 伺服器,將針對 Azure 檔案儲存體服務提出的要求轉送至 Azure 私人 DNS 服務。
您可以透過以下兩種方式之一設定 DNS 轉送:
使用 DNS 伺服器 VM: 設定
*.core.windows.net
的 條件式轉送 (或美國政府、德國或中國國家雲端的適當儲存體端點後置詞) 至裝載於 Azure 虛擬網路內的 DNS 伺服器虛擬機器。 此 DNS 伺服器接著會以遞迴方式將要求轉送至 Azure 的私人 DNS 服務,以將儲存體帳戶的 FQDN 解析為適當的私人 IP 位址。 這是虛擬網路內裝載之所有 Azure 檔案共用的一次性步驟。使用 Azure DNS 私人解析器: 如果您不想部署以 VM 為基礎的 DNS 伺服器,您可以使用 Azure DNS 私人解析器來完成相同的工作。
除了 Azure 檔案儲存體以外,其他 Azure 儲存體服務 (Azure Blob 儲存體、Azure 資料表儲存體、Azure 佇列儲存體等) 的 DNS 名稱解析要求也將會轉送到 Azure 的私人 DNS 服務。 如有需要,您也可以為其他 Azure 服務新增其他端點。
必要條件
設定 DNS 轉送至 Azure 檔案儲存體之前,您必須完成下列步驟:
- 一個儲存體帳戶,其中包含您想要裝載的 Azure 檔案共用。 若要了解如何建立儲存體帳戶和 Azure 檔案共用,請參閱建立 Azure 檔案共用。
- 儲存體帳戶的私人端點。 查看 建立私人端點。
- Azure PowerShell 模組的最新版本。
使用 VM 設定 DNS 轉送
如果您的 Azure 虛擬網路中已有 DNS 伺服器,或是您只是想要透過貴組織使用的任何方法部署自己的 DNS 伺服器 VM,您可以使用內建的 DNS 伺服器 PowerShell Cmdlet 來設定 DNS。
重要
本指南假設您使用的 DNS 伺服器位在內部部署環境中的 Windows Server 內。 在此所述的所有步驟均可用於任何 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 私人解析器。
您設定內部部署 DNS 伺服器的方式沒有差異,不同之處在於您不是指向 Azure 中 DNS 伺服器的 IP 位址,而是指向解析器的輸入端點 IP 位址。 解析器不需要任何設定,因為它預設會將查詢轉送至 Azure 私人 DNS 伺服器。 如果私人 DNS 區域連結到已部署解析器的 VNet,解析器將能夠回覆來自該 DNS 區域的記錄。
警告
設定 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