次の方法で共有


SDN の Internal DNS Service (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 プロキシ経由以外でテナントの仮想ネットワークからアクセスできないため、サーバーはテナント ネットワーク上の悪意のあるアクティビティに対して脆弱ではありません。

主な機能

iDNS の主な機能は以下のとおりです。

  • テナント ワークロードのための共有 DNS 名前解決サービスを提供します
  • テナントのネーム スペース内での名前解決と DNS 登録のための権限を持つ DNS サービス
  • テナントの VM からインターネット名を解決する再帰的な DNS サービス。
  • 必要に応じて、ファブリック名とテナント名の同時ホスティングを構成できます
  • コスト効率の高い DNS ソリューション - テナントは、独自の DNS インフラストラクチャをデプロイする必要がありません
  • Active Directory 統合による高可用性。これは必須です。

これらの機能に加えて、AD 統合 DNS サーバーをインターネットに開放し続ける必要がある場合は、境界ネットワーク内の別の再帰的リゾルバーの背後に iDNS サーバーをデプロイできます。

iDNS は、すべての DNS クエリのための一元化されたサーバーであるため、CSP またはエンタープライズでは、テナント DNS ファイアウォールの実装、フィルターの適用、悪意のあるアクティビティの検出、中央の場所でのトランザクションの監査を行うこともできます。

iDNS インフラストラクチャ

iDNS インフラストラクチャには、iDNS サーバーと iDNS プロキシが含まれています。

iDNS サーバー

iDNS には、VM DNS リソース レコードなどのテナント固有のデータをホストする DNS サーバーのセットが含まれています。

iDNS サーバーは、それの内部 DNS ゾーンの権限を持つサーバーであり、テナント VM が外部リソースに接続するときのパブリック名のリゾルバーとして機能します。

仮想ネットワーク上の VM のホスト名はすべて、同じゾーンの下に DNS リソース レコードとして格納されます。 たとえば、contoso.local という名前のゾーンに iDNS をデプロイする場合、そのネットワーク上の VM の DNS リソース レコードは contoso.local ゾーンに格納されます。

テナント VM の完全修飾ドメイン名 (FQDN) は、コンピューター名と Virtual Network の DNS サフィックス文字列 (GUID 形式) で構成されます。 たとえば、TENANT1 という名前のテナント VM が仮想ネットワーク contoso,local にある場合、VM の FQDN は TENANT1.vn-guid.contoso.local になります。ここで、vn-guid は仮想マシンの DNS サフィックス文字列です。

注意

ファブリック管理者の場合は、特に iDNS サーバーとして使用する新しい DNS サーバーをデプロイする代わりに、CSP またはエンタープライズの DNS インフラストラクチャを iDNS サーバーとして使用できます。 iDNS 用の新しいサーバーをデプロイする場合でも、既存のインフラストラクチャを使用する場合でも、iDNS は高可用性を提供するために Active Directory に依存します。 そのため、iDNS サーバーは Active Directory と統合されている必要があります。

iDNS プロキシ

iDNS プロキシは、すべてのホスト上で実行され、テナント仮想ネットワークの DNS トラフィックを iDNS サーバーに転送する Windows サービスです。

次の図は、テナント仮想ネットワークから iDNS プロキシを介して 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 セクションからの抜粋です。 詳細については、「Deploy a Software Defined Network infrastructure using scripts」 (スクリプトを使用してソフトウェアによるネットワーク制御インフラストラクチャを展開する) を参照してください。

手順 3: iDNS プロキシ サービスを構成する

iDNS プロキシ サービスは、各 Hyper-V ホストで実行され、テナントの仮想ネットワークと iDNS サーバーが配置されている物理ネットワークとの間のブリッジを提供します。 次のレジストリ キーは、すべての Hyper-V ホストに作成する必要があります。

DNS ポート: 固定ポート 53

  • レジストリ キー = HKLM\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\Plugins\Vnet\InfraServices\DnsProxyService"
  • ValueName = "Port"
  • ValueData = 53
  • ValueType = "Dword"

DNS プロキシ ポート: 固定ポート 53

  • レジストリ キー = HKLM\SYSTEM\CurrentControlSet\Services\NcHostAgent\Parameters\Plugins\Vnet\InfraServices\DnsProxyService"
  • ValueName = "ProxyPort"
  • ValueData = 53
  • ValueType = "Dword"

DNS IP: テナントで iDNS サービスの使用が選択された場合に備え、ネットワーク インターフェイスで構成された固定 IP アドレス

  • レジストリ キー = 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 セクションからの抜粋です。 詳細については、「Deploy a Software Defined Network infrastructure using scripts」 (スクリプトを使用してソフトウェアによるネットワーク制御インフラストラクチャを展開する) を参照してください。

手順 4: ネットワーク コントローラー ホスト エージェント サービスを再起動する

次の Windows PowerShell コマンドを使用して、ネットワーク コントローラー ホスト エージェント サービスを再起動できます。

Restart-Service nchostagent -Force

詳細については、「Restart-Service」を参照してください。

DNS プロキシ サービスのファイアウォール規則を有効にする

次の Windows PowerShell コマンドを使用して、プロキシが 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 サーバー情報を空白のままにして、iDNS サービスを使用するようにテナント VM を構成した場合、ネットワーク コントローラーによって VM に IP アドレスが提供され、iDNS サーバーを使用して VM の代わりに DNS 名の登録が実行されます。

また、ネットワーク コントローラーでは、VM について、および VM の名前解決を実行するために必要な詳細情報が iDNS プロキシに通知されます。

VM で DNS クエリが開始されると、プロキシは、仮想ネットワークから iDNS サービスへのクエリのフォワーダーとして機能します。

また、DNS プロキシにより、テナント VM クエリが確実に分離されます。 iDNS サーバーがクエリに対して権限を持つ場合、iDNS サーバーは権限のある応答で応答します。 iDNS サーバーがクエリに対して権限を持たない場合は、DNS の再帰を実行してインターネット名を解決します。

注意

この情報は、SDNExpressTenant.ps1 の Configuration AttachToVirtualNetwork セクションに記載されています。 詳細については、「Deploy a Software Defined Network infrastructure using scripts」 (スクリプトを使用してソフトウェアによるネットワーク制御インフラストラクチャを展開する) を参照してください。