スクリプトを使用してソフトウェア定義ネットワーク インフラストラクチャを展開する

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016、Azure Stack HCI バージョン 21H2 および 20H2

このトピックでは、スクリプトを使用して Microsoft ソフトウェア定義ネットワーク (SDN) インフラストラクチャを展開する方法を説明します。 インフラストラクチャには、高可用性 (HA) ネットワーク コントローラー、HA ソフトウェア ロード バランサー (SLB)/MUX、仮想ネットワーク、および関連するアクセス制御リスト (ACL) が含まれます。 さらに、別のスクリプトでは、SDN インフラストラクチャを検証するためにテナント ワークロードを展開します。

テナント ワークロードが仮想ネットワーク外で通信させる場合は、SLB NAT 規則、サイト間ゲートウェイ トンネル、またはレイヤー 3 転送を設定して、仮想および物理ワークロードの間をルーティングできます。

また、Virtual Machine Manager (VMM) を使用して SDN インフラストラクチャを展開することもできます。 詳細については、「VMM ファブリックでのソフトウェア定義ネットワーク (SDN) インフラストラクチャのセットアップ」を参照してください。

デプロイ前準備

重要

展開を開始する前に、ホストおよび物理的なネットワーク インフラストラクチャを計画し構成する必要があります。 詳細については、「ソフトウェア定義ネットワーク インフラストラクチャを計画する」を参照してください。

すべての Hyper-V ホストには、Window Server 2019 または 2016 がインストールされている必要があります。

デプロイメントの手順

まず、Hyper-V ホスト (物理サーバー) の Hyper-V 仮想スイッチと IP アドレスの割り当てを構成します。 共有またはローカルの Hyper-V と互換性のある記憶域の種類を使用できます。

ホスト ネットワークのインストール

  1. NIC ハードウェアで使用できる最新のネットワーク ドライバーをインストールします。

  2. すべてのホストに Hyper-V の役割をインストールします (詳細については、「Windows Server 2016 での Hyper-V の概要」を参照してください。

    Install-WindowsFeature -Name Hyper-V -ComputerName <computer_name> -IncludeManagementTools -Restart
    
  3. Hyper-V 仮想スイッチを作成します。

    sdnSwitch など、すべてのホストに同じスイッチ名を使用します。 少なくとも 1 つのネットワーク アダプターを構成するか、SET を使用する場合は少なくとも 2 つのネットワーク アダプターを構成します。 2 枚の NIC を使用した場合、最大のインバウンド スプレッドが発生します。

    New-VMSwitch "<switch name>" -NetAdapterName "<NetAdapter1>" [, "<NetAdapter2>" -EnableEmbeddedTeaming $True] -AllowManagementOS $True
    

    ヒント

    個別の管理 NIC がある場合は、手順 4 と 5 をスキップできます。

  4. 計画に関するトピック (「ソフトウェア定義ネットワーク インフラストラクチャの計画」) を参照し、ネットワーク管理者と連携して、管理 VLAN の VLAN ID を取得します。 新しく作成した仮想スイッチの管理 vNIC を管理 VLAN にアタッチします。 VLAN タグが使用されていない環境では、この手順を省略できます。

    Set-VMNetworkAdapterIsolation -ManagementOS -IsolationMode Vlan -DefaultIsolationID <Management VLAN> -AllowUntaggedTraffic $True
    
  5. 計画に関するトピック (「ソフトウェア定義ネットワーク インフラストラクチャの計画」) を参照し、ネットワーク管理者と連携して DHCP または静的 IP 割り当てを使用して、新しく作成された vSwitch の管理 vNIC に IP アドレスを割り当てる方法について説明します。 次の例は、静的 IP アドレスを作成し、vSwitch の管理 vNIC に割り当てる方法を示しています。

    New-NetIPAddress -InterfaceAlias "vEthernet (<switch name>)" -IPAddress <IP> -DefaultGateway <Gateway IP> -AddressFamily IPv4 -PrefixLength <Length of Subnet Mask - for example: 24>
    
  6. [省略可能] 仮想マシンを展開し、Active Directory Domain Services (Active Directory Domain Services (レベル 100) のインストール) と DNS サーバーをホストします。

    a. Active Directory/DNS サーバー仮想マシンを管理 VLAN に接続します。

    Set-VMNetworkAdapterIsolation -VMName "<VM Name>" -Access -VlanId <Management VLAN> -AllowUntaggedTraffic $True
    

    b. Active Directory Domain Services と DNS をインストールします。

    注意

    ネットワーク コントローラーは、認証に Kerberos と X.509 証明書の両方をサポートしています。 このガイドでは、目的に応じて両方の認証メカニズムを使用します (ただし、必要なのは 1 つのみです)。

  7. すべての Hyper-V ホストをドメインに参加します。 管理ネットワークに割り当てられた IP アドレスを持つネットワーク アダプターの DNS サーバー エントリが、ドメイン名を解決できる DNS サーバーを指していることを確認します。

    Set-DnsClientServerAddress -InterfaceAlias "vEthernet (<switch name>)" -ServerAddresses <DNS Server IP>
    

    a. [スタート] を右クリックして [システム] をクリックし、[設定の変更] をクリックします。 b. [変更] をクリックします。 c. [ドメイン] をクリックし、ドメイン名を指定します。 """" d. [OK] をクリックします。e. メッセージが表示されたら、ユーザー名とパスワードの資格情報を入力します。 f. サーバーを再起動します。

検証

ホスト ネットワークが正しく設定されていることを検証するには、次の手順に従います。

  1. VM スイッチが正常に作成されたことを確認します。

    Get-VMSwitch "<switch name>"
    
  2. VM スイッチの管理 vNIC が管理 VLAN に接続されていることを確認します。

    注意

    管理トラフィックとテナント トラフィックが同じ NIC を共有している場合にのみ関連します。

    Get-VMNetworkAdapterIsolation -ManagementOS
    
  3. すべての Hyper-V ホストと外部管理リソース (DNS サーバーなど) を検証します。

    管理用 IP アドレスや完全修飾ドメイン名 (FQDN) を使用して、ping でアクセスできることを確認します。

    ping <Hyper-V Host IP>
    ping <Hyper-V Host FQDN>
    
  4. 展開ホスト上で次のコマンドを実行し、各 Hyper-V ホストの FQDN を 指定して、使用する Kerberos 認証情報がすべてのサーバーへのアクセスを提供することを確認します。

    winrm id -r:<Hyper-V Host FQDN>
    

SDN Express スクリプトの実行

  1. インストール ファイルの Microsoft SDN GitHub リポジトリに移動します。

  2. リポジトリから指定された展開コンピューターにインストール ファイルをダウンロードします。 [複製またはダウンロード] をクリックし、[ZIP のダウンロード] をクリックします。

    注意

    指定したデプロイ コンピューターでは、Windows Server 2016 以降が実行されている必要があります。

  3. zip ファイルを展開し、SDNExpress フォルダーを展開コンピューターの C:\ フォルダーにコピーします。

  4. C:\SDNExpress フォルダーを "SDNExpress" として、全員読み取り/書き込みの許可を与えて共有します。

  5. C:\SDNExpress フォルダーに移動します

    次のフォルダーが表示されます。

    フォルダー名 説明
    AgentConf 各 Windows Server 2016 Hyper-V ホスト上の SDN ホスト エージェントでネットワーク ポリシーをプログラムするために使用される OVSDB スキーマの新しいコピーを保持します。
    証明書 NC 証明書ファイルの一時的な共有場所。
    イメージ 空の場合は、Windows Server 2016 vhdx イメージをここに配置します
    ツール トラブルシューティングとデバッグのためのユーティリティ。 ホストと仮想マシンにコピーされます。 必要に応じて利用できるよう、ネットワーク モニターや Wireshark をここに配置することをお勧めします。
    スクリプト 展開スクリプト。

    - SDNExpress.ps1
    ネットワーク コントローラー仮想マシン、SLB Mux 仮想マシン、ゲートウェイ プール、およびプールに対応する HNV ゲートウェイ仮想マシンを含むファブリックの展開と設定を行います。
    - FabricConfig.psd1
    SDNExpress スクリプトの構成ファイル テンプレート。 これは環境に合わせてカスタマイズします。
    - SDNExpressTenant.ps1
    負荷分散された VIP を使用して仮想ネットワークにサンプル テナント ワークロードを展開します。
    また、先に作成したテナント ワークロードに接続するサービス プロバイダー エッジ ゲートウェイに、1 つまたは複数のネットワーク接続 (IPSec S2S VPN、GRE、L3) を用意します。 IPSec と GRE ゲートウェイは、対応する VIP IP アドレスを使用した接続と、対応するアドレス プールを使用した L3 転送ゲートウェイで使用できます。
    このスクリプトは、対応する構成を [元に戻す] オプションで削除する場合にも使用できます。
    - TenantConfig.psd1
    テナント ワークロードと S2S ゲートウェイ構成用のテンプレート構成ファイル。
    - SDNExpressUndo.ps1
    ファブリック環境をクリーンアップし、開始状態にリセットします。
    - SDNExpressEnterpriseExample.ps1
    1 つ以上のエンタープライズ サイト環境を、1 つのリモート アクセス ゲートウェイと (必要に応じて) サイトごとに対応する 1 つのエンタープライズ仮想マシンでプロビジョニングします。 IPSec または GRE エンタープライズ ゲートウェイは、サービス プロバイダー ゲートウェイの対応する VIP IP アドレスに接続して、S2S トンネルを確立します。 L3 転送ゲートウェイは、対応するピア IP アドレスを使用して接続します。
    このスクリプトは、対応する構成を [元に戻す] オプションで削除する場合にも使用できます。
    - EnterpriseConfig.psd1
    エンタープライズ サイト間ゲートウェイとクライアント VM 構成のテンプレート構成ファイル。

    TenantApps テナント ワークロードの例を展開するために使用されるファイル。
  6. Windows Server 2016 VHDX ファイルが Images フォルダーに含まれていることを確認します。

  7. << Replace >> タグを、ホスト名、ドメイン名、ユーザー名とパスワード、「ネットワークの計画」トピックに記載されているネットワークのネットワーク情報など、ラボのインフラストラクチャに合わせて変更し、SDNExpress\scripts\FabricConfig.psd1 ファイルをカスタマイズします。

  8. NetworkControllerRestName (FQDN) と NetworkControllerRestIP のホスト A レコードを DNS に作成します。

  9. ドメイン管理者の資格情報を持つユーザーとしてスクリプトを実行します。

    SDNExpress\scripts\SDNExpress.ps1 -ConfigurationDataFile FabricConfig.psd1 -Verbose
    
  10. すべての操作を元に戻すには、次のコマンドを実行します。

 SDNExpress\scripts\SDNExpressUndo.ps1 -ConfigurationDataFile FabricConfig.psd1 -Verbose

検証

SDN Express スクリプトがエラーを報告せずに完了したと仮定すると、次の手順を実行して、ファブリック リソースが正しく展開され、テナントの展開に利用できることを確認できます。

診断ツールを使用して、ネットワーク コントローラーのファブリック リソースにエラーが発生しないことを確認します。

Debug-NetworkControllerConfigurationState -NetworkController <FQDN of Network Controller Rest Name>

ソフトウェア ロード バランサーを使用したサンプル テナント ワークロードの展開

ファブリック リソースが展開されたので、サンプル テナント ワークロードを展開することで、SDN の展開をエンドツーエンドで検証できます。 このテナント ワークロードは、SDN 分散ファイアウォールを使用してアクセス制御リスト (ACL) 規則によって保護される 2 つの仮想サブネット (Web 層とデータベース層) で構成されます。 Web 層の仮想サブネットには、仮想 IP (VIP) アドレスを使用して SLB/MUX 経由でアクセスできます。 このスクリプトでは、2 つの Web 層の仮想マシンと 1 つのデータベース層の仮想マシンが自動的に展開され、仮想サブネットに接続されます。

  1. <<Replace>> タグを特定の値に変更し (FabricConfig.psd1 ファイルで先に定義したように、VHD イメージ名、ネットワーク コントローラー REST 名、vSwitch 名など)、DNExpress\scripts\TenantConfig.psd1 ファイルをカスタマイズします

  2. スクリプトを実行します。 例:

    SDNExpress\scripts\SDNExpressTenant.ps1 -ConfigurationDataFile TenantConfig.psd1 -Verbose
    
  3. 構成を元に戻すには、undo パラメーターを使用して同じスクリプトを実行 します。 例:

    SDNExpress\scripts\SDNExpressTenant.ps1 -Undo -ConfigurationDataFile TenantConfig.psd1 -Verbose
    

検証

テナントの展開が成功したと検証するには、次の手順を実行します。

  1. データベース層の仮想マシンにログインし、Web 層の仮想マシンの 1 つの IP アドレスに ping を実行します (Web 層の仮想マシンで Windows ファイアウォールがオフになっていることを確認します)。

  2. ネットワーク コントローラーのテナント リソースでエラーを確認します。 Layer-3 接続を持つ Hyper-V ホストからネットワーク コントローラーに対し、次を実行します。

    Debug-NetworkControllerConfigurationState -NetworkController <FQDN of Network Controller REST Name>
    
  3. ロード バランサーが正しく実行されていることを確認するには、任意の Hyper-V ホストから次を実行します。

    wget <VIP IP address>/unique.htm -disablekeepalive -usebasicparsing
    

    ここで、<VIP IP address> は TenantConfig.psd1 ファイルで構成した Web 層 VIP IP アドレスです。

    ヒント

    TenantConfig.psd1 で VIPIP 変数を検索します。

    これを複数回実行して、使用可能な DIP 間のロード バランサーの切り替えを確認します。 また、Web ブラウザーを使用してこの動作を観察することもできます。 <VIP IP address>/unique.htm を参照します。 ブラウザーを閉じて新しいインスタンスを開き、もう一度参照します。 ブラウザーのキャッシュがタイムアウトする前のページを除き、青いページと緑のページが交互に表示されます。