共用方式為


Azure 虛擬網路中的資源名稱解析

您可以使用 Azure 來裝載基礎結構即服務(IaaS)、平臺即服務(PaaS)和混合式解決方案。 為了方便虛擬機與虛擬網路中部署的其他資源之間的通訊,可能需要允許它們彼此通訊。 使用容易記住且未變更的名稱可簡化通訊程序,而不是依賴 IP 位址。

當虛擬網路中所部署的資源必須將網域名稱解析為內部 IP 位址時,可以使用下列四種方法的其中一種:

您使用的名稱解析類型取決於資源如何彼此通訊。 下表說明案例和對應的名稱解析解決方案。

Azure 私用 DNS 區域是慣用的解決方案,可讓您彈性地管理 DNS 區域和記錄。 如需詳細資訊,請參閱將 Azure DNS 用於私人網域

注意

如果您使用 Azure 提供的 DNS,系統會自動將適當的 DNS 後綴套用至您的 VM。 對於所有其他選項,您必須使用完整功能變數名稱(FQDN),或手動將適當的 DNS 後綴套用至您的 VM。

狀況 解決方法 DNS 尾碼
位於相同虛擬網路中的 VM 或 Azure 之間的名稱解析 雲端服務 相同雲端服務中的角色實例。 Azure 私用 DNS 區域Azure 提供的名稱解析 主機名稱或 FQDN
不同虛擬網路的 VM 之間或不同雲端服務的角色執行個體之間所進行的名稱解析。 Azure 私用 DNS 區域Azure DNS 私人解析程式或客戶管理的 DNS 伺服器,在虛擬網路之間轉送查詢以供 Azure 解析(DNS Proxy)。 請參閱使用專屬 DNS 伺服器的名稱解析 僅限 FQDN
從 Azure App 服務 (Web 應用程式、函式或 Bot) 的名稱解析,方法是使用虛擬網路整合至相同虛擬網路中的角色實例或 VM。 Azure DNS 私人解析器或客戶管理的 DNS 伺服器,將虛擬網路之間的查詢轉送,以便 Azure (DNS Proxy) 解析。 請參閱使用專屬 DNS 伺服器的名稱解析 僅限 FQDN
從 App Service Web 應用程式到相同虛擬網路中的 VM 的名稱解析。 Azure DNS 私人解析器或客戶管理的 DNS 伺服器,將虛擬網路之間的查詢轉送,以便 Azure (DNS Proxy) 解析。 請參閱使用專屬 DNS 伺服器的名稱解析 僅限 FQDN
從一個虛擬網路中的App Service Web 應用程式到不同虛擬網路中的 VM 的名稱解析。 Azure DNS 私人解析器或客戶管理的 DNS 伺服器,將虛擬網路之間的查詢轉送,以便 Azure (DNS Proxy) 解析。 請參閱使用專屬 DNS 伺服器的名稱解析 僅限 FQDN
由 Azure 中的 VM 或角色執行個體解析內部部署電腦及伺服器名稱。 例如,Azure DNS 私人解析程式 或客戶管理的 DNS 伺服器(例如,內部部署域控制器、本機只讀域控制器,或使用區域傳輸同步處理的 DNS 次要伺服器)。 請參閱使用專屬 DNS 伺服器的名稱解析 僅限 FQDN
從內部部署電腦解析 Azure 主機名稱。 將查詢轉送到所對應虛擬網路中客戶管理的 DNS Proxy 伺服器。 Proxy 伺服器將查詢轉送給 Azure 進行解析。 請參閱使用專屬 DNS 伺服器的名稱解析 僅限 FQDN
從內部 IP 還原 DNS。 Azure 私用 DNS 區域Azure 提供的名稱解析Azure DNS 私人解析程式,或使用您自己的 DNS 伺服器名稱解析。 不適用
在 VM 或角色執行個體之間解析名稱,其中的VM 或角色執行個體分屬不同的雲端服務 (而非虛擬網路)。 不適用。 虛擬網路外部不支援不同雲端服務中 VM 和角色執行個體之間的連線。 不適用

Azure 提供的名稱解析

Azure 提供的名稱解析只提供基本的授權 DNS 功能。 如果您使用 Azure 提供的 DNS,Azure 會管理 DNS 區域名稱和記錄。 您無法控制 DNS 區域名稱或 DNS 記錄的生命週期。 如果您需要虛擬網路的完整 DNS 解決方案,您可以使用 Azure 私用 DNS 區域搭配客戶管理的 DNS 伺服器Azure DNS 私人解析程式

除了公用 DNS 名稱的解析之外,Azure 也提供位於相同虛擬網路或雲端服務內的 VM 和角色執行個體的內部名稱解析。 雲端服務中的 VM 和實例會共用相同的 DNS 後綴,因此僅主機名就已足夠。 但在使用傳統部署模型所部署的虛擬網路中,不同的雲端服務有不同的 DNS 後綴。 在此情況下,您需要 FQDN 才能解析不同雲端服務之間的名稱。

在使用 Azure Resource Manager 部署模型所部署的虛擬網路中,DNS 後綴會在虛擬網路內的所有 VM 上保持一致,因此不需要 FQDN。 您可以將 DNS 名稱指派給 VM 和網路介面。 雖然 Azure 提供的名稱解析不需要任何設定,但並非所有部署案例的適當選擇,如上表所述。

注意

當您使用 Azure 雲端服務 Web 和背景工作角色時,您也可以使用 Azure 服務管理 REST API 存取角色實例的內部 IP 位址。 如需詳細資訊,請參閱 服務管理 REST API 參考。 此位址是以角色名稱和執行個體數目為基礎。

功能

Azure 提供的名稱解析包含下列功能:

  • 您不需要設定任何專案。
  • 由於高可用性,您不需要建立和管理自己 DNS 伺服器的叢集。
  • 您可以使用服務搭配您自己的 DNS 伺服器來解析內部部署和 Azure 主機名。
  • 您可以在相同雲端服務中的虛擬機器與角色執行個體之間使用名稱解析,不需要 FQDN。
  • 您可以在使用 Resource Manager 部署模型之虛擬網路中的 VM 之間使用名稱解析,而不需要 FQDN。 當您解析不同雲端服務中的名稱時,傳統部署模型中的虛擬網路需要 FQDN。
  • 您可以使用最能描述部署的主機名,而不是使用自動產生的名稱。

考量

當您使用 Azure 提供的名稱解析時,請考慮下列幾點:

  • Azure 建立的 DNS 尾碼無法修改。
  • DNS 查閱的範圍定義為虛擬網路。 針對單一虛擬網路建立的 DNS 名稱無法從其他虛擬網路解析。
  • 不允許手動註冊您自己的記錄。
  • 不支援 WINS 和 NetBIOS。 您無法在 Windows 檔案總管中查看您的 VM。
  • 主機名必須與 DNS 相容。 名稱只能使用 0 到 9、a 到 z 和連字元 (-)。 名稱不能以連字元開頭或結尾。
  • 每個 VM 的 DNS 查詢流量已經過節流。 節流不應該影響大部分的應用程式。 如果您觀察到要求節流,請確定已啟用用戶端快取。 如需詳細資訊,請參閱 DNS 用戶端組態
  • 虛擬網路中的每個 VM 都必須使用不同的名稱,以避免 DNS 解析問題。
  • 只有前 180 個雲端服務中的 VM,會針對傳統部署模型中的每個虛擬網路註冊。 此限制不適用於 Resource Manager 中的虛擬網路。
  • Azure DNS IP 位址為 168.63.129.16。 此位址是靜態 IP 位址,且不會變更。

反向 DNS 考慮

所有虛擬網路都支援以 Resource Manager 為基礎的 VM 反向 DNS。 Azure 管理的反向 DNS,也稱為指標(PTR),表單 \[vmname\].internal.cloudapp.net 的記錄會在您啟動 VM 時自動新增至 DNS。 當 VM 停止時會移除它們(已解除分配)。 請參閱下列範例:

C:\>nslookup -type=ptr 10.11.0.4
Server:  UnKnown
Address:  168.63.129.16

Non-authoritative answer:
4.0.11.10.in-addr.arpa  name = myeastspokevm1.internal.cloudapp.net

反向 internal.cloudapp.net DNS 區域是 Azure 受控區域,無法直接檢視或編輯。 表單 \[vmname\].internal.cloudapp.net FQDN 的正向查閱會解析為指派給 VM 的 IP 位址。

如果 Azure 私用 DNS 區域已連結至具有虛擬網路連結的虛擬網路,並在該連結上啟用自動註冊,則反向 DNS 查詢會傳回兩筆記錄。 其中一筆記錄為表單 \[vmname\].[privatednszonename] ,另一筆記錄則為表單 \[vmname\].internal.cloudapp.net。 請參閱下列範例:

C:\>nslookup -type=ptr 10.20.2.4
Server:  UnKnown
Address:  168.63.129.16

Non-authoritative answer:
4.2.20.10.in-addr.arpa  name = mywestvm1.internal.cloudapp.net
4.2.20.10.in-addr.arpa  name = mywestvm1.azure.contoso.com

傳回兩個 PTR 記錄時,如先前所示,FQDN 的正向查閱會傳回 VM 的 IP 位址。

反向 DNS 查閱的範圍會限定於特定虛擬網路,即使它與其他虛擬網路對等互連也一樣。 反向 DNS 查詢位於對等互連虛擬網路中 VM 的 IP 位址會傳回 NXDOMAIN

反向 DNS (PTR) 記錄不會儲存在正向私人 DNS 區域中。 反向 DNS 記錄會儲存在反向 DNS (in-addr.arpa) 區域中。 與虛擬網路相關聯的預設反向 DNS 區域無法檢視或可編輯。

您可以在虛擬網路中停用反向 DNS 函式。 使用 Azure 私用 DNS 區域建立您自己的反向對應區域。 然後將此區域連結至您的虛擬網路。 例如,如果虛擬網路的IP位址空間是10.20.0.0/16,您可以建立空的私人 DNS 區域 20.10.in-addr.arpa ,並將其連結至虛擬網路。 此區域會覆寫虛擬網路的預設反向查閱區域。 此區域是空的。 除非您手動建立這些項目,否則反向 DNS 會傳 NXDOMAIN 回 。

不支援 PTR 記錄的自動註冊。 如果您想要建立專案,請手動輸入這些專案。 您必須在虛擬網路中停用自動註冊 (如果已針對其他區域啟用)。 這項限制是因為 啟用自動註冊時,只允許連結一個私人區域的限制 。 如需如何建立私人 DNS 區域並將其連結至虛擬網路的資訊,請參閱 Azure 私用 DNS 快速入門

注意

由於 Azure DNS 私人區域是全域區域,因此您可以建立反向 DNS 查閱,以跨越多個虛擬網路。 您必須建立 Azure 私用 DNS 區域以進行反向對應(in-addr.arpa區域),然後將它連結至虛擬網路。 您必須手動管理 VM 的反向 DNS 記錄。

DNS 用戶端設定

這一節涵蓋用戶端快取和用戶端重試。

用戶端快取

並非所有的 DNS 查詢都需要透過網路傳送。 用戶端快取可藉由解析本機快取的週期性 DNS 查詢,協助減少延遲並改善網路閃爍的復原能力。 DNS 記錄包含存留時間機制,可讓快取盡可能儲存記錄,而不會影響記錄的新鮮度。 用戶端快取適用於大部分的情況。

預設的 Windows DNS 用戶端內建 DNS 快取。 某些 Linux 發行版本預設不包含快取功能。 如果您發現還沒有本機快取,請將 DNS 快取新增至每部 Linux 虛擬機器。

有許多不同的 DNS 快取套件可供使用(例如 dnsmasq)。 以下是如何在 dnsmasq 最常見的發行版上安裝:

RHEL (使用 NetworkManager)

  1. dnsmasq使用下列命令安裝套件:

    sudo yum install dnsmasq
    
  2. dnsmasq使用下列命令啟用服務:

    systemctl enable dnsmasq.service
    
  3. 使用下列命令啟動 dnsmasq 服務:

    systemctl start dnsmasq.service
    
  4. 使用文字編輯器將 新增 prepend domain-name-servers 127.0.0.1;/etc/dhclient-eth0.conf

  5. 使用下列命令來重新啟動網路服務:

    service network restart
    

注意

套件 dnsmasq 只是Linux可用的許多 DNS 快取之一。 使用之前,請先檢查其適合您的特定需求,並檢查未安裝任何其他快取。

用戶端重試

DNS 主要是用戶數據報通訊協定 (UDP)。 因為 UDP 通訊協定並不保證訊息傳遞,所以重試邏輯會在 DNS 通訊協定本身處理。 每個 DNS 用戶端 (作業系統) 可以展現不同的重試邏輯,根據建立者喜好設定而定:

  • Windows 作業系統會在 1 秒後重試,然後再依序隔 2 秒、4 秒、再過 4 秒後重試。
  • 預設 Linux 安裝程式會在 5 秒之後重試。 建議您以一秒的間隔,將重試規格變更為五次。

請使用 cat /etc/resolv.conf 檢查 Linux VM 上的目前設定。 查看這 options 一行,例如:

options timeout:1 attempts:5

檔案 resolv.conf 會自動產生,不應編輯。 新增 options 行的特定步驟會因分佈而異。

RHEL (使用 NetworkManager)

  1. 使用文字編輯器將行 RES_OPTIONS="options timeout:1 attempts:5" 新增至檔案 /etc/sysconfig/network-scripts/ifcfg-eth0

  2. 使用下列命令重新啟動 NetworkManager 服務:

    systemctl restart NetworkManager.service
    

使用專屬 DNS 伺服器的名稱解析

這一節涵蓋虛擬機器、角色執行個體以及 Web 應用程式。

注意

Azure DNS 私人解析器可取代在虛擬網路中使用 VM 型 DNS 伺服器的需求。 如果您想要使用以 VM 為基礎的 DNS 解決方案,則會提供下一節。 使用 Azure DNS 私人解析程式的許多優點包括成本降低、內建高可用性、延展性和彈性。

VM 和角色執行個體

您的名稱解析需求可能超過 Azure 所提供的功能。 例如,您可能需要使用 Windows Server Active Directory 網域來解析虛擬網路之間的 DNS 名稱。 若要涵蓋這些案例,您可以使用自己的 DNS 伺服器。

虛擬網路中的 DNS 伺服器可以將 DNS 查詢轉送給 Azure 中的遞迴解析程式。 透過使用此程式,您可以解析該虛擬網路內的主機名。 例如,在 Azure 中執行的網域控制站 (DC) 可以回應其網域的 DNS 查詢,並將所有其他查詢轉送到 Azure。 轉送查詢可讓 VM 查看您的內部部署資源(透過 DC)和 Azure 提供的主機名(透過轉寄站)。 在 Azure 中遞迴解析程式的存取是透過虛擬 IP 168.63.129.16 所提供。

重要

如果此設定中使用 Azure VPN 閘道 以及虛擬網路上的自定義 DNS 伺服器 IP,則必須在清單中新增 Azure DNS IP(168.63.129.16),以維護未中斷的服務。

DNS 轉送也會啟用虛擬網路之間的 DNS 解析,並允許內部部署機器解析 Azure 提供的主機名。 若要解析 VM 的主機名,DNS 伺服器 VM 必須位於相同的虛擬網路中,並設定為將主機名查詢轉送至 Azure。 因為每個虛擬網路的 DNS 尾碼都不同,所以您可以使用條件性轉送規則來將 DNS 查詢傳送到正確的虛擬網路進行解析。

兩個虛擬網路和內部部署網路會使用此方法在虛擬網路之間執行 DNS 解析,如下圖所示。 如需 DNS 轉寄站的範例,請參閱 Azure 快速入門範本庫GitHub

注意

角色執行個體可以對相同虛擬網路內的虛擬機器執行名稱解析。 它會使用 FQDN,其中包含 VM 的主機名和 internal.cloudapp.net DNS 後綴。 在此情況下,只有在角色實例具有角色架構 (.cscfg 檔案)定義的 VM 名稱時,名稱解析才會成功:<Role name="<role-name>" vmName="<vm-name>">

需要在另一個虛擬網路中執行 VM 名稱解析的角色實例(使用 internal.cloudapp.net 後綴 FQDN)必須使用本節中所述的方法(兩個虛擬網路之間的自定義 DNS 伺服器轉送)。

顯示虛擬網路之間 DNS 的圖表.

當您使用 Azure 提供的名稱解析時,Azure 動態主機設定通訊協定 (DHCP) 會將內部 DNS 後綴 (.internal.cloudapp.net) 提供給每個 VM。 這個後綴會啟用主機名解析,因為主機名記錄位於 internal.cloudapp.net 區域中。 當您使用自己的名稱解析解決方案時,此後綴不會提供給 VM,因為它會干擾其他 DNS 架構(例如已加入網域的案例)。 而是 Azure 會提供一個沒有作用的預留位置 (reddog.microsoft.com)。

如有必要,您可以使用PowerShell或 API 來判斷內部 DNS 後綴。

針對 Resource Manager 部署模型中的虛擬網路,後綴可透過 網路介面 REST APIGet-AzNetworkInterface PowerShell Cmdlet 和 az network nic show Azure CLI 命令取得。

如果將查詢轉送至 Azure 不符合您的需求,請提供您自己的 DNS 解決方案,或部署 Azure DNS 私人解析程式

如果您提供自己的 DNS 解決方案,它必須:

  • 例如,透過 動態 DNS (DDNS)提供適當的主機名解析。 如果您使用 DDNS,則可能需要停用 DNS 記錄清除。 Azure DHCP 租用很長,而且清除可能會過早地移除 DNS 記錄。
  • 提供適當的遞迴解析來允許外部網域名稱的解析。
  • 可從其服務的用戶端存取 (連接埠 53 上的 TCP 和 UDP),且能夠存取網際網路。
  • 防止從因特網存取,以減輕外部代理程式所造成的威脅。

為了獲得最佳效能,當您使用 Azure VM 作為 DNS 伺服器時,應該停用 IPv6。

網路安全組 (NSG) 可作為 DNS 解析程式端點的防火牆。 修改或覆寫 NSG 安全性規則,以允許對 DNS 接聽程式端點進行 UDP 連接埠 53 (以及選擇性的 TCP 連接埠 53) 存取。 在網路上設定自定義 DNS 伺服器之後,透過埠 53 的流量會略過子網的 NSG。

重要

如果您使用 Windows DNS 伺服器作為自定義 DNS 伺服器,將 DNS 要求轉送至 Azure DNS 伺服器,請確定您增加轉送逾時值超過四秒,讓 Azure 遞歸 DNS 伺服器執行適當的遞歸作業。

如需此問題的詳細資訊,請參閱轉寄站和條件式轉寄站解析逾時

這項建議也適用於其他 DNS 伺服器平臺,其轉送逾時值為三秒或更少。

若無法這麼做,可能會導致 私用 DNS 區域記錄使用公用IP位址解析。

Web 應用程式

假設您需要從使用 App Service 建置之 Web 應用程式執行名稱解析,請連結至虛擬網路以及相同虛擬網路中的虛擬機器。 除了設定自訂 DNS 伺服器 (它具有可將查詢轉送至 Azure (虛擬 IP 168.63.129.16) 的 DNS 轉送工具) 以外,請執行下列步驟:

  • 如果您尚未啟用 Web 應用程式的虛擬網路整合,如整合您的應用程式與虛擬網路中所述
  • 如果您需要從虛擬網路連結的 Web 應用程式執行名稱解析(使用 App Service 所建置)到未連結至相同私人區域之不同虛擬網路中的 VM,請在這兩個虛擬網路上使用自定義 DNS 伺服器或 Azure DNS 私人解析程式

若要使用自訂 DNS 伺服器:

若要使用 Azure DNS 私人解析程式,請參閱 規則集連結

指定 DNS 伺服器

當您使用自己的 DNS 伺服器時,您可以為每個虛擬網路指定多個 DNS 伺服器。 您也可以為每個網路介面指定多個 DNS 伺服器(適用於 Resource Manager)或每個雲端服務(針對傳統部署模型)。 針對網路介面或雲端服務所指定的 DNS 伺服器,優先順序高於針對虛擬網路所指定的 DNS 伺服器。

注意

網路連線屬性,例如 DNS 伺服器 IP,不應該直接在 VM 內編輯。 當虛擬網路配接器被取代時,它們可能會在服務癒合期間被清除。 這一警告適用於 Windows 和 Linux VM。

當您使用 Resource Manager 部署模型時,您可以指定虛擬網路和網路介面的 DNS 伺服器。 如需詳細資訊,請參閱 管理虛擬網路 和管理 網路介面

如果您選擇虛擬網路的自定義 DNS 伺服器,則必須至少指定一個 DNS 伺服器 IP 位址。 否則,虛擬網路會忽略設定,並改用 Azure 提供的 DNS。

注意

如果您變更已部署之虛擬網路或 VM 的 DNS 設定,讓新的 DNS 設定生效,您必須對虛擬網路中所有受影響的 VM 執行 DHCP 租用更新。 針對執行 Windows OS 的 VM,直接在 VM 中輸入 ipconfig /renew 。 這些步驟會隨著作業系統而有所不同。 請參閱您作業系統類型的相關文件。

Azure Resource Manager 部署模型: