使用 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 位址所在的區域,選擇尾碼。
如上圖所示,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 位址。