Share via


SDN 的內部 DNS 服務 (iDNS)

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Azure Stack HCI 21H2 和 20H2 版本

如果您任職於規劃在 Windows Server 中部署軟體定義網路 (SDN) 的雲端服務提供者 (CSP) 或企業,則可以使用與 SDN 整合的內部 DNS (iDNS),以將 DNS 服務提供給託管租用戶工作負載。

託管虛擬機器 (VM) 和應用程式需要 DNS,才能在其自己的網路內進行通訊,以及與網際網路上的外部資源進行通訊。 使用 iDNS,您可以為租用戶提供適用於其隔離、本機命名空間和網際網路資源的 DNS 名稱解析服務。

因為無法從租用戶虛擬網路存取 iDNS 服務,所以除了透過 iDNS Proxy 以外,伺服器不容易受到租用戶網路上的惡意活動攻擊。

主要功能

以下是 iDNS 的主要功能。

  • 提供租用戶工作負載的共用 DNS 名稱解析服務
  • 租用戶名稱空間內名稱解析和 DNS 註冊的授權 DNS 服務
  • 遞迴 DNS 服務,用於解析租用戶 VM 的網際網路名稱。
  • 如果需要,您可以設定同時裝載網狀架構和租用戶名稱
  • 具成本效益的 DNS 解決方案 - 租用戶不需要部署自己的 DNS 基礎結構
  • 具有 Active Directory 整合的高可用性,這是必要項目。

除了這些功能之外,如果您擔心對網際網路保持開啟 AD 整合式 DNS 伺服器,則可以在周邊網路的另一個遞迴解析程式後方部署 iDNS 伺服器。

因為 iDNS 是所有 DNS 查詢的集中式伺服器,所以 CSP 或企業也可以實作租用戶 DNS 防火牆、套用篩選、偵測惡意活動,以及稽核中央位置的交易

iDNS 基礎結構

iDNS 基礎結構包括 iDNS 伺服器和 iDNS Proxy。

iDNS 伺服器

iDNS 包括一組可裝載租用戶特定資料 (例如 VM DNS 資源記錄) 的 DNS 伺服器。

iDNS 伺服器是其內部 DNS 區域的授權伺服器,而在租用戶 VM 嘗試連線至外部資源時,也會作為公用名稱的解析程式。

虛擬網路上 VM 的所有主機名稱都會儲存為相同區域下方的 DNS 資源記錄。 例如,如果您為名為 contoso.local 的區域部署 iDNS,則該網路上 VM 的 DNS 資源記錄會儲存至 contoso.local 區域。

租用戶 VM 完整網域名稱 (FQDN) 是由虛擬網路的電腦名稱和 DNS 尾碼字串所組成,且為 GUID 格式。 例如,如果您有名為 TENANT1 且位於虛擬網路 contoso.local 的租用戶 VM,則 VM 的 FQDN 是 TENANT1.vn-guid.contoso.local,其中 vn-guid 是虛擬網路的 DNS 尾碼字串。

注意

如果您是網狀架構系統管理員,則可以使用 CSP 或企業 DNS 基礎結構作為 iDNS 伺服器,而不是特別部署新的 DNS 伺服器,以用作 iDNS 伺服器。 無論您部署適用於 iDNS 的新伺服器,還是使用現有的基礎結構,iDNS 都會依賴 Active Directory 來提供高可用性。 因此,您的 iDNS 伺服器必須與 Active Directory 整合。

iDNS Proxy

iDNS Proxy 是在每部主機上執行的 Windows 服務,並將租用戶虛擬網路 DNS 流量轉送至 iDNS 伺服器。

下圖說明透過 iDNS Proxy 從租用戶虛擬網路到 iDNS 伺服器和網際網路的 DNS 流量路徑。

iDNS Infrastructure

如何部署 iDNS

當您在 Windows Server 2016 中使用指令碼來部署 SDN 時,會自動在您的部署中包括 iDNS。

如需詳細資訊,請參閱下列主題。

瞭解 iDNS 部署步驟

您可以使用本節來瞭解使用指令碼部署 SDN 時,如何安裝和設定 iDNS。

以下是部署 iDNS 所需的步驟摘要。

注意

如果您已使用指令碼來部署 SDN,則不需要執行所有這些步驟。 這些步驟的提供僅供參考和疑難排解。

步驟 1:部署 DNS

您可以使用下列範例 Windows PowerShell 命令,來部署 DNS 伺服器。

Install-WindowsFeature DNS -IncludeManagementTools

步驟 2:在網路控制站中設定 iDNS 資訊

此指令碼區段是系統管理員對網路控制站所進行的 REST 呼叫,以告知其 iDNS 區域設定 (例如 iDNSServer 的 IP 位址,以及用來裝載 iDNS 名稱的區域)。

Url: https://<url>/networking/v1/iDnsServer/configuration
Method: PUT
{
      "properties": {
        "connections": [
          {
            "managementAddresses": [
              "10.0.0.9"
            ],
            "credential": {
              "resourceRef": "/credentials/iDnsServer-Credentials"
            },
            "credentialType": "usernamePassword"
          }
        ],
        "zone": "contoso.local"
      }
    }

注意

這摘錄自 SDNExpress.ps1 中的 Configuration ConfigureIDns 區段。 如需詳細資訊,請參閱使用指令碼來部署軟體定義網路基礎結構

步驟 3:設定 iDNS Proxy 服務

iDNS Proxy 服務會在每部 Hyper-V 主機上執行,以提供租用戶虛擬網路與 iDNS 伺服器所在實體網路之間的橋接器。 必須在每個 Hyper-V 主機上建立下列登錄機碼。

DNS 連接埠:固定連接埠 53

  • 登錄機碼 = HKLM\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\Plugins\Vnet\InfraServices\DnsProxyService"
  • ValueName = "Port"
  • ValueData = 53
  • ValueType = "Dword"

DNS Proxy 連接埠:固定連接埠 53

  • 登錄機碼 = HKLM\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\Plugins\Vnet\InfraServices\DnsProxyService"
  • ValueName = "ProxyPort"
  • ValueData = 53
  • ValueType = "Dword"

DNS IP:網路介面上所設定的固定 IP 位址,以防租用戶選擇使用 iDNS 服務

  • 登錄機碼 = HKLM\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\Plugins\Vnet\InfraServices\DnsProxyService"
  • ValueName = "IP"
  • ValueData = "169.254.169.254"
  • ValueType = "String"

Mac 位址:DNS 伺服器的媒體存取控制位址

  • 登錄機碼 = HKLM\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\Plugins\Vnet\InfraServices\DnsProxyService
  • ValueName = "MAC"
  • ValueData = "aa-bb-cc-aa-bb-cc"
  • ValueType = "String"

IDNS 伺服器位址:以逗號分隔的 iDNS 伺服器清單。

  • 登錄機碼:HKLM\SYSTEM\CurrentControlSet\Services\DNSProxy\Parameters
  • ValueName = "Forwarders"
  • ValueData = "10.0.0.9"
  • ValueType = "String"

注意

這摘錄自 SDNExpress.ps1 中的 Configuration ConfigureIDnsProxy 區段。 如需詳細資訊,請參閱使用指令碼來部署軟體定義網路基礎結構

步驟 4:重新啟動網路控制站主機代理程式服務

您可以使用下列 Windows PowerShell 命令,以重新啟動網路控制站主機代理程式服務。

Restart-Service nchostagent -Force

如需詳細資訊,請參閱 Restart-Service

啟用 DNS Proxy 服務的防火牆規則

您可以使用下列 Windows PowerShell 命令來建立防火牆規則,而防火牆規則允許 Proxy 與 VM 和 iDNS 伺服器通訊的例外狀況。

Enable-NetFirewallRule -DisplayGroup 'DNS Proxy Firewall'

如需詳細資訊,請參閱 Enable-NetFirewallRule

驗證 iDNS 服務

若要驗證 iDNS 服務,您必須部署範例租用戶工作負載。

如需詳細資訊,請參閱建立 VM 並連線至租用戶虛擬網路或 VLAN

如果您想要租用戶 VM 使用 iDNS 服務,則必須將 VM 網路介面 DNS 伺服器設定空白,並允許介面使用 DHCP。

具有這類網路介面的 VM 在起始之後會自動收到可讓 VM 使用 iDNS 的設定,而且 VM 會立即開始使用 iDNS 服務來執行名稱解析。

如果您將網路介面 DNS 伺服器和替代 DNS 伺服器資訊空白,以將租用戶 VM 設定為使用 iDNS 服務,則網路控制站會將 IP 位址提供給 VM,並代表具有 iDNS 伺服器的 VM 執行 DNS 名稱註冊。

網路控制站也會通知 iDNS Proxy 有關 VM 以及執行 VM 名稱解析所需的詳細資料。

VM 起始 DNS 查詢時,Proxy 會作為從虛擬網路到 iDNS 服務的查詢轉寄站。

DNS Proxy 也可確保隔離租用戶 VM 查詢。 如果 iDNS 伺服器是查詢的授權伺服器,則 iDNS 伺服器會以授權回應進行回應。 如果 iDNS 伺服器不是查詢的授權伺服器,則會執行 DNS 遞迴來解析網際網路名稱。

注意

此資訊包括在 SDNExpressTenant.ps1 的 Configuration AttachToVirtualNetwork 區段中。 如需詳細資訊,請參閱使用指令碼來部署軟體定義網路基礎結構