使用 Azure Stack Hub 中的 iDNS

iDNS 是 Azure Stack Hub 網路功能,可讓您解析外部 DNS 名稱 (例如,https://www.bing.com.),也可讓您註冊內部虛擬網路名稱。 如此一來,您就可以依名稱 (而非 IP 位址) 解析相同虛擬網路上的虛擬機器 (VM)。 此方法不需要提供自訂 DNS 伺服器項目。 如需 DNS 的詳細資訊,請參閱 Azure DNS 概觀

iDNS 的用途為何?

您可以使用 Azure Stack Hub 中的 iDNS 取得下列功能,而不需要指定自訂的 DNS 伺服器項目:

  • 適用於租用戶工作負載的共用 DNS 名稱解析服務。
  • 適用於租用戶虛擬網路內的名稱解析和 DNS 登錄的權威 DNS 服務。
  • 從租用戶 VM 解析網際網路名稱的遞迴 DNS 服務。 租用戶不再需要指定自訂的 DNS 項目,就可以解析網際網路名稱 (例如 www.bing.com)。

您仍然可以沿用您自己的 DNS,也可以使用自訂的 DNS 伺服器。 不過,藉由使用 iDNS,您可以解析網際網路 DNS 名稱並連線到相同虛擬網路中的其他 VM,而不需要建立自訂 DNS 項目。

iDNS 禁止的作業為何?

iDNS 不允許您針對可從虛擬網路外部解析的名稱,建立 DNS 記錄。

在 Azure 中,您可以選擇指定與公用 IP 位址相關聯的 DNS 名稱標籤。 您可以選擇標籤 (首碼),但 Azure 會根據您建立公用 IP 位址所在的區域,選擇尾碼。

DNS 名稱標籤的範例

如上圖所示,Azure 將會在 DNS 中,為區域 westus.cloudapp.azure.com 底下指定的 DNS 名稱標籤,建立 "A" 記錄。 首碼和尾碼可合併構成完整網域名稱 (FQDN),此名稱可以從公用網際網路上的任何位置解析。

Azure Stack Hub 僅支援用於內部名稱登錄的 iDNS,因此無法執行下列事項:

  • 在現有的託管 DNS 區域 (例如 local.azurestack.external) 底下建立 DNS 記錄。
  • 建立 DNS 區域 (例如 Contoso.com)。
  • 在您自己的自訂 DNS 區域底下建立記錄。
  • 支援購買網域名稱。

iDNS 運作方式的示範

虛擬網路 VM 的所有主機名稱都會儲存為相同區域下的 DNS 資源記錄,不過,在其專屬的唯一區間則會定義為 GUID,此 GUID 會與據以部署 VM 的 SDN 基礎結構中的 VNET 識別碼相互關聯。 租用戶 VM 的完整網域名稱 (FQDN) 是由電腦名稱和虛擬網路的 DNS 尾碼字串所組成 (採用 GUID 格式)。

以下是簡單的實驗室,用以示範其運作方式。 我們已在一個 VNet 上建立了 3 個 VM,並在另一個 VNet 上建立另一個 VM:

VM vNet 私人 IP 公用 IP DNS 標籤
VM-A1 VNetA 10.0.0.5 172.31.12.68 VM-A1-Label.lnv1.cloudapp.azscss.external
VM-A2 VNetA 10.0.0.6 172.31.12.76 VM-A2-Label.lnv1.cloudapp.azscss.external
VM-A3 VNetA 10.0.0.7 172.31.12.49 VM-A3-Label.lnv1.cloudapp.azscss.external
VM-B1 VNetB 10.0.0.4 172.31.12.57 VM-B1-Label.lnv1.cloudapp.azscss.external
VNet GUID DNS 尾碼字串
VNetA e71e1db5-0a38-460d-8539-705457a4cf75 e71e1db5-0a38-460d-8539-705457a4cf75.internal.lnv1.azurestack.local
VNetB e8a6e386-bc7a-43e1-a640-61591b5c76dd e8a6e386-bc7a-43e1-a640-61591b5c76dd.internal.lnv1.azurestack.local

您可以進行一些名稱解析測試,以進一步了解 iDNS 的運作方式:

透過 VM-A1 (Linux VM):查詢 VM-A2。 您可以看到 VNetA 已新增 DNS 尾碼,且名稱已解析為私人 IP:

carlos@VM-A1:~$ nslookup VM-A2
Server:         127.0.0.53
Address:        127.0.0.53#53
 
Non-authoritative answer:
Name:   VM-A2.e71e1db5-0a38-460d-8539-705457a4cf75.internal.lnv1.azurestack.local
Address: 10.0.0.6

查閱 VM-A2-Label 而不提供 FQDN 會如預期地失敗:

carlos@VM-A1:~$ nslookup VM-A2-Label
Server:         127.0.0.53
Address:        127.0.0.53#53
 
** server can't find VM-A2-Label: SERVFAIL

如果您提供 DNS 標籤的 FQDN,則名稱會解析為公用 IP:

carlos@VM-A1:~$ nslookup VM-A2-Label.lnv1.cloudapp.azscss.external
Server:         127.0.0.53
Address:        127.0.0.53#53
 
Non-authoritative answer:
Name:   VM-A2-Label.lnv1.cloudapp.azscss.external
Address: 172.31.12.76

嘗試解析 VM-B1 (來自不同的 VNet) 失敗,因為此記錄不存在於此區域中。

carlos@caalcobi-vm4:~$ nslookup VM-B1
Server:         127.0.0.53
Address:        127.0.0.53#53
 
** server can't find VM-B1: SERVFAIL

使用 VM-B1 的 FQDN 沒有用,因為此記錄來自不同的區域。

carlos@VM-A1:~$ nslookup VM-B1.e8a6e386-bc7a-43e1-a640-61591b5c76dd.internal.lnv1.azurestack.local
Server:         127.0.0.53
Address:        127.0.0.53#53
 
** server can't find VM-B1.e8a6e386-bc7a-43e1-a640-61591b5c76dd.internal.lnv1.azurestack.local: SERVFAIL

如果您使用 DNS 標籤的 FQDN,則會成功解析:

carlos@VM-A1:~$ nslookup VM-B1-Label.lnv1.cloudapp.azscss.external
Server:         127.0.0.53
Address:        127.0.0.53#53
 
Non-authoritative answer:
Name:   VM-B1-Label.lnv1.cloudapp.azscss.external
Address: 172.31.12.57

從 VM-A3 (Windows VM)。 請注意授權和非授權答案之間的差異。

內部記錄:

C:\Users\carlos>nslookup
Default Server:  UnKnown
Address:  168.63.129.16
 
> VM-A2
Server:  UnKnown
Address:  168.63.129.16
 
Name:    VM-A2.e71e1db5-0a38-460d-8539-705457ª4cf75.internal.lnv1.azurestack.local
Address:  10.0.0.6

外部記錄:

> VM-A2-Label.lnv1.cloudapp.azscss.external
Server:  UnKnown
Address:  168.63.129.16
 
Non-authoritative answer:
Name:    VM-A2-Label.lnv1.cloudapp.azscss.external
Address:  172.31.12.76

簡單地說,您可以從上述內容看到:

  • 每個 VNet 都有自己的區域,區域中會包含所有私人 IP 位址的 A 記錄,這會由 VM 名稱和 VNet 的 DNS 尾碼 (也就是其 GUID) 組成。
    • <vmname>.<vnetGUID>.internal.<region>.<stackinternalFQDN>
    • 這會自動完成
  • 如果您使用公用 IP 位址,則也可以為其建立 DNS 標籤。 這些位址會像任何其他外部位址一樣地進行解析。
  • iDNS 伺服器是其內部 DNS 區域的授權伺服器,並且還會在租用戶 VM 嘗試連線到外部資源時,作為公用名稱的解析器。 如果有外部資源的查詢,則 iDNS 伺服器會將要求轉給授權的 DNS 伺服器進行解析。

如您在實驗室結果中所見,您可以控制所使用的 IP。 如果您使用 VM 名稱,則會取得私人 IP 位址,而如果您使用 DNS 標籤,則會取得公用 IP 位址。

下一步

在 Azure Stack Hub 中使用 DNS