入れ子になった仮想化を使用すると、仮想マシン内で Hyper-V を実行できるため、複数の物理ホストを必要とせずに複雑な環境をエミュレートできます。 この記事では、前提条件、セットアップ手順、ネットワーク オプションなど、サポートされている Windows プラットフォームで入れ子になった仮想化を構成して使用する方法について説明します。 この記事では、シナリオのテスト、エミュレーターの実行、または複数の仮想化レイヤーを必要とするソリューションの開発に使用します。
入れ子になった仮想化とサポートされているシナリオの詳細については、「 Hyper-V の入れ子になった仮想化とは」を参照してください。
[前提条件]
VT-x および EPT テクノロジを搭載した Intel プロセッサ
- Hyper-V ホストは、Windows Server 2016 以降、または Windows 10 以降である必要があります。
- VM 構成バージョン 8.0 以降。
AMD EPYC /Ryzen プロセッサ以降
- Hyper-V ホストは、Windows Server 2022 以降、または Windows 11 以降である必要があります。
- VM 構成バージョン 9.3 以降。
注
ゲストには、Windows でサポートされている任意のゲスト オペレーティング システムを使用できます。 一部の新しいバージョンの Windows では、パフォーマンスを向上させる追加の CPU 機能を使用できます。 Azure VM で入れ子になった仮想化を有効にするには、セキュリティの種類を "Standard" に設定してください。
入れ子になった仮想化の有効化
入れ子になった仮想化を有効にするには、次の手順に従います。
仮想マシンを作成します。 必要な OS と VM のバージョンの前提条件を参照してください。
仮想マシンが OFF 状態の場合は、物理 Hyper-V ホストで次のコマンドを実行して、仮想マシンの入れ子になった仮想化を有効にします。
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
仮想マシンを開始します。
物理サーバーの場合と同様に、仮想マシン内に Hyper-V をインストールします。 Hyper-V のインストールの詳細については、「 Hyper-V のインストール」を参照してください。
注
Windows Server 2019 以前が第 1 レベルの VM の場合、vCPU の数は 225 以下にする必要があります。 仮想マシンの制限の詳細については、「仮想 マシンの最大値」を参照してください。
入れ子になった仮想化を無効にする
停止した仮想マシンの入れ子になった仮想化は、次の PowerShell コマンドを使用して無効にすることができます。
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false
ネットワーク オプション
入れ子になった仮想マシンを使用したネットワークには、次の 2 つのオプションがあります。
- MAC アドレスのスプーフィング
- NAT の [ネットワーク]
MAC アドレスのスプーフィング
2 つの仮想スイッチを介してネットワーク パケットをルーティングするには、仮想スイッチの最初の (L1) レベルで MAC アドレス スプーフィングを有効にする必要があります。 MAC アドレススプーフィングを有効にするには、次の PowerShell コマンドを実行します。
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
ネットワーク アドレス変換 (NAT)
2 番目のオプションは、ネットワーク アドレス変換 (NAT) に依存します。 この方法は、パブリック クラウド環境など、MAC アドレススプーフィングが不可能な場合に最適です。
まず、ホスト仮想マシン ("中間" VM) に仮想 NAT スイッチを作成する必要があります。 次の例では、 VmNAT
という名前の新しい内部スイッチを作成し、 192.168.100.0/24
サブネット内のすべての IP アドレスの NAT オブジェクトを作成します。
New-VMSwitch -Name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”
次に、IP アドレスをネット アダプターに割り当てます。
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
入れ子になった各仮想マシンには、IP アドレスとゲートウェイが割り当てられている必要があります。 ゲートウェイ IP は、前の手順の NAT アダプターを指している必要があります。 DNS サーバーを割り当てることもできます。
Get-NetAdapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “vEthernet (VmNat)” address=<my DNS server>