iDNS 是 Azure Stack Hub 網路功能,可讓您解析外部 DNS 名稱(例如 。 https://www.bing.com
)它也可讓您註冊內部虛擬網路名稱。 如此一來,您可以依名稱而非IP位址解析相同虛擬網路上的虛擬機(VM)。 此方法可移除提供自定義 DNS 伺服器項目的需求。 如需 DNS 的詳細資訊,請參閱 Azure DNS 概觀。
iDNS 有何用途?
在 Azure Stack Hub 中使用 iDNS 時,您可以取得下列功能,而不需要指定自定義 DNS 伺服器專案:
- 租戶工作負載的 DNS 名稱解析共用服務。
- 租戶虛擬網路內的名稱解析和 DNS 註冊的權威 DNS 服務。
- 遞歸 DNS 服務,用於解析租使用者 VM 中的因特網名稱。 租戶不再需要指定自訂 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 區域下建立 DNS 記錄(例如 local.azurestack.external.)
- 建立 DNS 區域 (例如 Contoso.com.)
- 在您自己的自定義 DNS 區域下建立記錄。
- 支持購買網域名稱。
iDNS 運作方式的示範
虛擬網路上的所有 VM 主機名都會儲存為同一區域中的 DNS 資源記錄,但會歸入每個主機名自己的獨立區間,該區間由 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-61591b5c76ddd | 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 位址。