Azure 虛擬網路支援基礎結構即服務(IaaS)、平臺即服務(PaaS)和混合式解決方案的多個名稱解析方法。 若要在虛擬網路中啟用虛擬機與其他資源之間的通訊,您需要適當的 DNS 設定。 使用容易記住且一致的名稱可簡化通訊程式,而不是依賴IP位址。
當虛擬網路中所部署的資源必須將網域名稱解析為內部 IP 位址時,可以使用下列四種方法的其中一種:
- Azure 私人 DNS 區域
- Azure 提供的名稱解析
- 使用專屬網域名稱系統 (DNS) 伺服器的名稱解析 (可將查詢轉送到 Azure 提供的 DNS 伺服器)
- Azure DNS 私人解析器
您使用的名稱解析類型取決於資源如何彼此通訊。 下表說明各種案例和對應的名稱解析解決方案。
Azure 私人 DNS 區域是慣用的解決方案,可讓您彈性地管理 DNS 區域和記錄。 如需詳細資訊,請參閱將 Azure DNS 用於私人網域。
Note
如果您使用 Azure 提供的 DNS,系統會自動將適當的 DNS 後綴套用至您的虛擬機。 對於所有其他選項,您必須使用完整功能變數名稱(FQDN),或手動將適當的 DNS 後綴套用至虛擬機。
| Scenario | Solution | DNS 尾碼 |
|---|---|---|
| 位於相同虛擬網路中的虛擬機或相同雲端服務中的 Azure 雲端服務角色實例之間的名稱解析。 | Azure 私人 DNS 區域或 Azure 提供的名稱解析 | 主機名稱或 FQDN |
| 不同虛擬網路中的虛擬機或不同雲端服務中角色實例之間的名稱解析。 | Azure 私人 DNS 區域、Azure DNS 私人解析器或客戶管理的 DNS 伺服器將虛擬網路之間的查詢轉送供 Azure (DNS Proxy) 解析。 請參閱使用專屬 DNS 伺服器的名稱解析。 | FQDN only |
| 從使用虛擬網路整合的 Azure App Service (Web 應用程式、函式或 Bot) 將名稱解析為相同虛擬網路中的角色執行個體或虛擬機器。 | Azure DNS 私人解析器或客戶管理的 DNS 伺服器,將虛擬網路之間的查詢轉送,以便 Azure (DNS Proxy) 解析。 請參閱使用專屬 DNS 伺服器的名稱解析。 | FQDN only |
| 從 App Service Web Apps 將名稱解析為相同虛擬網路中的虛擬機器。 | Azure DNS 私人解析器或客戶管理的 DNS 伺服器,將虛擬網路之間的查詢轉送,以便 Azure (DNS Proxy) 解析。 請參閱使用專屬 DNS 伺服器的名稱解析。 | FQDN only |
| 從某個虛擬網路的 App Service Web Apps 將名稱解析為不同虛擬網路中的虛擬機器。 | Azure DNS 私人解析器或客戶管理的 DNS 伺服器,將虛擬網路之間的查詢轉送,以便 Azure (DNS Proxy) 解析。 請參閱使用專屬 DNS 伺服器的名稱解析。 | FQDN only |
| 從 Azure 中的虛擬機或角色實例解析本地電腦和服務名稱。 | Azure DNS 私人解析器或客戶管理的 DNS 伺服器 (例如,內部部署的網域控制站、本機唯讀網域控制站或使用區域傳輸同步的次要 DNS)。 請參閱使用專屬 DNS 伺服器的名稱解析。 | FQDN only |
| 從內部部署電腦解析 Azure 主機名稱。 | 將查詢轉送到所對應虛擬網路中客戶管理的 DNS Proxy 伺服器。 Proxy 伺服器將查詢轉送給 Azure 進行解析。 請參閱使用專屬 DNS 伺服器的名稱解析。 | FQDN only |
| 從內部 IP 還原 DNS。 | Azure 私人 DNS 區域、Azure 提供的名稱解析、Azure DNS 私人解析器或使用您自有 DNS 伺服器的名稱解析。 | Not applicable |
| 位於不同雲端服務中的虛擬機或角色實例之間的名稱解析,而該名稱解析不在虛擬網路中進行。 | Not applicable. 虛擬網路外部不支援虛擬機與不同雲端服務中角色實例之間的連線。 | Not applicable |
Azure 提供的名稱解析
Azure 提供的名稱解析只提供基本的授權 DNS 功能。 如果您使用 Azure 提供的 DNS,Azure 會管理 DNS 區域名稱和記錄。 您無法控制 DNS 區域名稱或 DNS 記錄的生命週期。 如果您的虛擬網路需要功能完整的 DNS 解決方案,您可以使用 Azure 私人 DNS 區域搭配客戶管理的 DNS 伺服器或 Azure DNS 私人解析器。
除了公用 DNS 名稱解析之外,Azure 還提供相同虛擬網路或雲端服務內虛擬機和角色實例的內部名稱解析。 雲端服務中的虛擬機和實例會共用相同的 DNS 後綴,讓主機名單獨足以解析。 不過,在傳統部署模型虛擬網路中,不同的雲端服務有不同的 DNS 後綴,要求 FQDN 跨雲端服務解析名稱。
在使用 Azure Resource Manager 部署模型所部署的虛擬網路中,DNS 後綴會在虛擬網路內的所有虛擬機上保持一致,因此不需要 FQDN。 您可以將 DNS 名稱指派給虛擬機和網路介面。 雖然 Azure 提供的名稱解析不需要任何設定,但它不適用於所有部署案例,如上表所述。
Note
當您使用 Azure 雲端服務的 Web 和工作角色時,您也可以透過 Azure 傳統部署模型來存取角色實例的內部 IP 位址。 如需詳細資訊,請參閱 傳統部署模型參考。 此位址是以角色名稱和執行個體數目為基礎。
Features
Azure 提供的名稱解析包含下列功能:
- 您不需要設定任何項目。
- 由於高可用性,您不需要建立和管理專屬 DNS 伺服器的叢集。
- 您可以使用此服務搭配您自己的 DNS 伺服器,以解析內部部署及 Azure 主機名稱。
- 您可以在相同雲端服務內的虛擬機和角色實例之間使用名稱解析,而不需要 FQDN。
- 您可以在使用 Resource Manager 部署模型之虛擬網路中的虛擬機之間使用名稱解析,而不需要 FQDN。 當您解析不同雲端服務中的名稱時,傳統部署模型中的虛擬網路需要 FQDN。
- 您可以使用最能描述部署的主機名稱,而不是使用自動產生的名稱。
Considerations
當您使用 Azure 提供的名稱解析時,請考慮下列幾點:
- Azure 建立的 DNS 尾碼無法修改。
- DNS 查閱的範圍是虛擬網路。 針對某一虛擬網路建立的 DNS 名稱無法從其他虛擬網路解析。
- 不允許手動註冊您自己的記錄。
- 不支援 WINS 和 NetBIOS。 您無法在 Windows 檔案總管中看到虛擬機。
- 主機名稱必須與 DNS 相容。 名稱必須只使用 0 到 9、a 到 z 和連字號 (-)。 名稱不能以連字號開頭或結尾。
- 每部虛擬機器的 DNS 查詢流量已經過節流。 節流不應該影響大部分的應用程式。 如果您觀察到要求節流,請確定用戶端快取已啟用。 如需詳細資訊,請參閱 DNS 用戶端組態。
- 虛擬網路中的每個虛擬機都必須使用不同的名稱,以避免 DNS 解析問題。
- 只有前 180 個雲端服務中的虛擬機器會在傳統部署模型中為每個虛擬網路註冊。 此限制不適用 Resource Manager 中的虛擬網路。
- Azure DNS IP 位址是 168.63.129.16。 此位址是靜態 IP 位址,且不會變更。
反向 DNS 考量
所有虛擬網路都支援以 Resource Manager 為基礎的虛擬機反向 DNS。 格式為 \[vmname\].internal.cloudapp.net 的 Azure 受控反向 DNS (也稱為指標 (PTR)) 記錄會在您啟動 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 查詢對等互連虛擬網路中虛擬機器的 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 快速入門。 For information on how to create a private DNS zone and link it to a virtual network, see the Azure Private DNS quickstart.
Note
因為 Azure DNS 私人區域為全域,所以您可以建立反向 DNS 查閱,以跨越多個虛擬網路。 您必須建立 Azure 私人 DNS 區域以進行反向對應 (in-addr.arpa 區域),然後將其連結至虛擬網路。 您必須手動管理虛擬機的反向 DNS 記錄。
DNS 用戶端設定
這一節涵蓋用戶端快取和用戶端重試。
Client-side caching
並非所有的 DNS 查詢都需要透過網路傳送。 用戶端快取可藉由解決本機快取的週期性 DNS 查詢,協助減少延遲以及改善網路標誌的恢復能力。 DNS 記錄包含存留時間機制,可讓快取盡可能長時間儲存記錄而不會影響記錄的有效性。 用戶端快取適用於大部分的情況。
預設 Windows DNS 用戶端有內建的 DNS 快取。 某些 Linux 發行版本預設不包含快取功能。 如果您發現還沒有本機快取,請將 DNS 快取新增至每部 Linux 虛擬機器。
有許多不同的 DNS 快取套件可用 (例如 dnsmasq)。 以下是在最常見的發行版本上安裝 dnsmasq 的方式:
RHEL (使用 NetworkManager)
使用下列命令來安裝
dnsmasq套件:sudo yum install dnsmasq使用下列命令來啟用
dnsmasq服務:systemctl enable dnsmasq.service使用下列命令來啟動
dnsmasq服務:systemctl start dnsmasq.service使用文字編輯器,將
prepend domain-name-servers 127.0.0.1;新增至/etc/dhclient-eth0.conf:使用下列命令來重新啟動網路服務:
service network restart
Note
dnsmasq 套件只是許多適用於 Linux 的 DNS 快取的其中一個。 在您使用它之前,請檢查特定需求的適用性,而且沒有安裝其他快取。
Client-side retries
DNS 主要是使用者資料包通訊協定 (UDP)。 因為 UDP 通訊協定並不保證訊息傳遞,所以重試邏輯會在 DNS 通訊協定本身處理。 每個 DNS 用戶端 (作業系統) 可以展現不同的重試邏輯,根據建立者喜好設定而定:
- Windows 作業系統會在 1 秒後重試,然後再依序隔 2 秒、4 秒、再過 4 秒後重試。
- 預設 Linux 安裝程式會在 5 秒之後重試。 我們建議您將重試規格變更為 5 次,間隔為 1 秒。
請使用 cat /etc/resolv.conf 檢查 Linux VM 上的目前設定。 查看 options 一行,例如:
options timeout:1 attempts:5
resolv.conf 是自動產生的檔案,不應進行編輯。 新增 options 行的特定步驟會因發行版本而有所不同。
RHEL (使用 NetworkManager)
使用文字編輯器,將行
RES_OPTIONS="options timeout:1 attempts:5"新增至檔案/etc/sysconfig/network-scripts/ifcfg-eth0。使用下列命令來重新啟動
NetworkManager服務:systemctl restart NetworkManager.service
使用專屬 DNS 伺服器的名稱解析
本節涵蓋虛擬機、角色實例和 Web 應用程式。
Note
Azure DNS 私人解析器可取代在虛擬網路中使用 VM 型 DNS 伺服器的需求。 如果您想要使用 VM 型 DNS 解決方案,則會提供下列一節。 使用 Azure DNS 私人解析器的許多優點包括成本降低、內建高可用性、可擴縮性和彈性。
虛擬機和角色實例
您的名稱解析需求可能超過 Azure 所提供的功能。 例如,您可能需要使用 Windows Server Active Directory 網域,以在虛擬網路之間解析 DNS 名稱。 若要涵蓋這些案例,您可以使用自己的 DNS 伺服器。
虛擬網路中的 DNS 伺服器可以將 DNS 查詢轉送給 Azure 中的遞迴解析程式。 透過使用此程序,您可以解析該虛擬網路內的主機名稱。 例如,在 Azure 中執行的網域控制站 (DC) 可以回應其網域的 DNS 要求,並將所有其他要求轉送到 Azure。 轉發查詢可讓虛擬機器同時查看您的內部部署資源(透過 DC)和 Azure 提供的主機名稱(透過轉發器)。 在 Azure 中遞迴解析程式的存取是透過虛擬 IP 168.63.129.16 所提供。
Important
如果在此設定中使用 Azure VPN 閘道,搭配虛擬網路上的自訂 DNS 伺服器 IP,則必須在清單中新增 Azure DNS IP (168.63.129.16),以維護不中斷的服務。
DNS 轉送也會實現虛擬網路之間的 DNS 解析,並使內部部署機器能夠解析 Azure 提供的主機名稱。 為了解析 VM 的主機名稱,DNS 伺服器 VM 必須位於同一個虛擬網路中,且設定為將主機名稱要求轉送到 Azure。 因為每個虛擬網路的 DNS 尾碼都不同,所以您可以使用條件性轉送規則來將 DNS 查詢傳送到正確的虛擬網路進行解析。
兩個虛擬網路和內部部署網路會使用此方法,在虛擬網路之間執行 DNS 解析,如下圖所示。 如需 DNS 轉寄站的範例,請參閱 Azure 快速入門範本庫和 GitHub。
Note
角色實例可以執行相同虛擬網路內虛擬機的名稱解析。 其會使用 FQDN,其中包含 VM 的主機名稱和 internal.cloudapp.net DNS 尾碼。 在此情況下,名稱解析只有在角色執行個體具有角色結構描述 (.cscfg 檔案) 中定義的 VM 名稱時才會成功:<Role name="<role-name>" vmName="<vm-name>">。
必須對其他虛擬網路 (使用 internal.cloudapp.net 尾碼的 FQDN) 中虛擬機器執行名稱解析的角色執行個體,必須使用本節中所述的方法 (兩個虛擬網路之間的自訂 DNS 伺服器轉送)。
。
當您使用 Azure 提供的名稱解析時,Azure 動態主機設定通訊協定 (DHCP) 會將內部 DNS 尾碼 (.internal.cloudapp.net) 提供給每個 VM。 這個尾碼會啟用主機名稱解析,因為主機名稱記錄位於 internal.cloudapp.net 區域中。 當您使用自己的名稱解析解決方案時,不會將此尾碼提供給虛擬機器,因為其會干擾其他 DNS 架構 (例如在已加入網域的案例中)。 Instead, Azure provides a nonfunctioning placeholder (reddog.microsoft.com).
如有需要,您可以使用 PowerShell 或 API 來判斷內部 DNS 尾碼。
針對 Resource Manager 部署模型中的虛擬網路,您可以透過網路介面 REST API、Get-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 虛擬機作為 DNS 伺服器時,應該停用 IPv6。
網路安全性群組 (NSG) 可作為 DNS 解析程式端點的防火牆。 修改或覆寫 NSG 安全性規則,以允許 UDP 連接埠 53 (以及選用的 TCP 連接埠 53) 存取 DNS 接聽程式端點。 在網路上設定自定義 DNS 伺服器之後,透過埠 53 的流量會略過子網和 NIC 的 NSG。
Important
如果您使用 Windows DNS 伺服器做為自訂 DNS 伺服器,將 DNS 要求轉送至 Azure DNS 伺服器,請確定您增加轉送逾時值超過 4 秒,以讓 Azure 遞迴 DNS 伺服器執行適當的遞迴作業。
如需此問題的詳細資訊,請參閱轉寄站和條件式轉寄站解析逾時。
此建議可能也適用其他 DNS 伺服器平台,其轉送逾時值為 3 秒或更少。
若未這麼做,可能會導致使用公用 IP 位址解析私人 DNS 區域記錄。
Web apps
假設您需要從使用 App Service 建置的 Web 應用程式執行名稱解析,請連結至虛擬網路以及相同虛擬網路中的虛擬機器。 除了設定自訂 DNS 伺服器 (它具有可將查詢轉送至 Azure (虛擬 IP 168.63.129.16) 的 DNS 轉送工具) 以外,請執行下列步驟:
- 如果您尚未這樣做,請針對 Web 應用程式啟用虛擬網路整合,如將您的應用程式與虛擬網路整合中所述。
- 若要從虛擬網路連結的 Web 應用程式執行名稱解析(使用 App Service 建置)到未連結至相同私人區域之不同虛擬網路中的虛擬機,請在這兩個虛擬網路上使用自定義 DNS 伺服器或 Azure DNS 私人解析程式 。
若要使用自訂 DNS 伺服器:
- 在也可以將查詢轉送至 Azure 遞迴解析程式 (虛擬 IP 168.63.129.16) 之虛擬機器上的目標虛擬網路中設定 DNS 伺服器。 如需 DNS 轉寄站的範例,請參閱 Azure 快速入門範本庫和 GitHub。
- 在 VM 上的來源虛擬網路中設定 DNS 轉送工具。 設定此 DNS 轉送工具以將查詢轉送至目標虛擬網路中的 DNS 伺服器。
- 在來源虛擬網路的設定中設定來源 DNS 伺服器。
- 遵循將您的應用程式與虛擬網路整合中的指示,針對您的 Web 應用程式啟用虛擬網路整合,以連結至來源虛擬網路。
To use Azure DNS Private Resolver, see Ruleset links.
指定 DNS 伺服器
使用您自己的 DNS 伺服器時,您可以為每個虛擬網路指定多部 DNS 伺服器。 您也可以為每個網路介面 (適用於 Resource Manager) 或每個雲端服務 (適用於傳統部署模型) 指定多部 DNS 伺服器。 針對網路介面或雲端服務所指定的 DNS 伺服器,優先順序高於針對虛擬網路所指定的 DNS 伺服器。
Note
網路連線屬性,例如 DNS 伺服器 IP,不應該直接在虛擬機內編輯。 當替換虛擬網路介面卡時,它們可能會在服務修復期間遭到清除。 這一警告適用於 Windows 和 Linux 虛擬機。
當使用 Resource Manager 部署模型時,您可以針對虛擬網路和網路介面指定 DNS 伺服器。 如需詳細資訊,請參閱管理虛擬網路和管理網路介面。
如果您為虛擬網路選擇自訂 DNS 伺服器,則必須至少指定一個 DNS 伺服器 IP 位址。 否則,虛擬網路會忽略設定,並改用 Azure 提供的 DNS。
Note
變更已部署虛擬網路或虛擬機的 DNS 設定之後,請在虛擬網路中所有受影響的虛擬機上更新 DHCP 租用,以套用新的設定。 針對 Windows 虛擬機,直接在 VM 中執行 ipconfig /renew 。 如需其他操作系統,請參閱其特定文件。
Related content
Azure Resource Manager 部署模型: