Azure Lab Services で入れ子になった仮想化

入れ子になった仮想化を使用すると、マルチ VM 環境を含むラボを Azure Lab Services に作成できます。 入れ子になった仮想化を使用すると、ラボ ユーザーに対して、複数の関連する仮想マシンをラボの一部として提供できます。 たとえば、GNS3、IT 管理、または倫理的ハッキングを使用したネットワークに関するラボを実行するには、相互に通信できる複数の VM が必要になる場合があります。 この記事では、Azure Lab Services の入れ子になった仮想化の概念、考慮事項、レコメンデーションについて説明します。

入れ子になった仮想化の概要

入れ子になった仮想化を使用すると、仮想マシン (ゲスト VM) を仮想マシン (ホスト VM) 内に作成して実行できます。 入れ子になった仮想化は Hyper-V を介して有効になり、Windows ベースのラボ VM のみで使用できます。 ラボ VM 内では、Windows ベースと Linux ベースのゲスト VM の両方を実行できます。

入れ子になった仮想化の詳細については、以下の記事を参照してください。

考慮事項

入れ子になった仮想化を使用してラボを設定する前に、次の点を考慮する必要があります。

  • すべての VM サイズで入れ子になった仮想化がサポートされているわけではありません。 新しいラボを作成する際、ラボのVM サイズを、中 (入れ子になった仮想化) または大 (入れ子になった仮想化) から選択します。

  • ホスト (ラボ VM) とゲスト VM (ラボ VM 内の VM) の両方に適切なパフォーマンスを提供するサイズを選択します。 選択したサイズで、ホスト VM と Hyper-V マシンを同時に実行できることを確認します。

  • ホスト VM では、ゲスト マシンにインターネット接続を許可するための追加の構成が必要です。

  • ゲスト VM は、Azure 仮想ネットワーク上の DNS サーバーなどの Azure リソースにアクセスできません。

  • Hyper-V ゲスト VM は、独立したマシンとしてライセンスされます。 Microsoft のオペレーティング システムおよび製品のライセンスの詳細については、Microsoft のライセンスに関するページを参照してください。 テンプレート VM またはゲスト VM にインストールする前に、使用する他のソフトウェアのライセンス契約を確認します。

  • Hyper-V 以外の仮想化アプリケーションは、入れ子になった仮想化でサポートされていません。 これには、ハードウェア仮想化拡張機能を必要とするすべてのソフトウェアが含まれます。

ラボの入れ子になった仮想化を有効にする

入れ子になった仮想化を有効にし、入れ子になった Hyper-V VM をテンプレート VM に作成できます。 ラボを発行すると、各ラボ ユーザーには、入れ子になった仮想マシンが既に含まれているラボ VM を持ちます。

ラボの入れ子になった仮想化を有効にする手順は次の通りです。

  1. リモート デスクトップ クライアントを使用してテンプレート VM に接続する

  2. テンプレート VM オペレーティング システムで入れ子になった仮想化を有効にします。

    • Hyper-V ロールを有効にする: テンプレート VM 内の VM を作成して実行するには、Hyper-V ロールを有効にする必要があります。

    • DHCP を有効にする (省略可能): テンプレート VM で DHCP ロールが有効になっている場合、テンプレート VM 内の VM には IP アドレスが自動的に割り当てられます。

    • 入れ子になった VM の NAT ネットワークを作成する: テンプレート VM 内の VM がインターネットにアクセスして相互に通信できるように、ネットワーク アドレス変換 (NAT) ネットワークを設定します。

      Note

      NAT ネットワークをラボ サービス VM に作成すると、Hyper-V VM は、インターネットおよび、同じラボ サービス VM 上の他の Hyper-V VM にアクセスできるようになります。 Hyper-V VM は、Azure 仮想ネットワーク上の DNS サーバーなどの Azure リソースにアクセスすることはできません。

  3. Hyper-V マネージャーを使用して、テンプレート VM 内に入れ子になった仮想マシンを作成します。

Note

入れ子になった仮想化が必要なラボを作成する場合は、テンプレート仮想マシンを作成するオプションを必ず選択してください。

テンプレート VM で入れ子になった仮想化を有効にするの手順に従います。

別のラボ VM 内の入れ子になった VM に接続する

追加の構成を行わずに、別のラボ VM または入れ子になった VM からラボ VM に接続できます。 ただし、別のラボ VM でホストされている入れ子になった VM に接続するには、Add-NetNatStaticMapping PowerShell コマンドレットを使用して NAT インスタンスに静的マッピングを追加する必要があります。

Note

入れ子になった VM との間の接続をテストする ping コマンドは機能しません。

Note

静的マッピングは、プライベート IP アドレスを使用する場合のみ機能します。 ラボ ユーザーが接続している VM は、ラボ VM である必要があります。また、高度なネットワークを使用している場合は、VM が同じネットワーク上にある必要があります。

シナリオ例

次のサンプル lab setup で考えてみましょう。

  • Lab VM 1 (Windows Server 2022、IP 10.0.0.8)

    • 入れ子になった VM 1-1 (Ubuntu 20.04、IP 192.168.0.102)
    • 入れ子になった VM 1-2 (Windows 11、IP 192.168.0.103、リモート デスクトップの有効化と許可)
  • ラボ VM 2 (Windows Server 2022、IP 10.0.0.9)

    • 入れ子になった VM 2-1 (Ubuntu 20.04、IP 192.168.0.102)
    • 入れ子になった VM 2-2 (Windows 11、IP 192.168.0.103、リモート デスクトップの有効化と許可)

ラボ VM 2 から入れ子になったラボ VM 1-1 に SSH で接続するには次の手順に従います。

  1. ラボ VM 1 で、静的マッピングを追加します。

    Add-NetNatStaticMapping -NatName "LabServicesNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.102 -InternalPort 22 -ExternalPort 23
    
  2. ラボ VM 2 で、SSH を使用して接続します。

    ssh user1@10.0.0.8 -p 23
    

ラボ VM 2 またはその入れ子になった VM から、入れ子になったラボ VM 1-2 に RDP で接続するには次の手順に従います。

  1. ラボ VM 1 で、静的マッピングを追加します。

    Add-NetNatStaticMapping -NatName "LabServicesNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 192.168.0.103 -InternalPort 3389 -ExternalPort 3390
    
  2. ラボ VM 2 またはその入れ子になった VM では、RDP を使用して 10.0.0.8:3390 に接続します

    重要

    ユーザー名の前に ~\ を含めます。 たとえば、~\Administrator または ~\user1 です。

推奨事項

管理者以外のユーザー

ラボの作成時に管理者以外のユーザーを作成することもできます。 管理者以外のアカウントで入れ子になった仮想化を使用する場合は、いくつかの注意点があります。

  • VM を起動または停止できるようにするには、管理者以外のユーザーを Hyper-V Administrators グループに追加する必要があります。
  • 管理者以外のユーザーはドライブをマウントできません。
  • Hyper-V VM ファイルは、管理者以外のユーザーがアクセスできる場所に保存する必要があります。

プロセッサの互換性

入れ子になった仮想化 VM のサイズは、次の表に示すように、異なるプロセッサを使用する場合があります。

[サイズ] 系列 プロセッサ
中 (入れ子になった仮想化) Standard_D4s_v4 第 3 世代 Intel® Xeon® Platinum 8370C (Ice Lake) または Intel Xeon® Platinum 8272CL (Cascade Lake)
大 (入れ子になった仮想化) Standard_D8s_v4 第 3 世代 Intel® Xeon® Platinum 8370C (Ice Lake) または Intel Xeon® Platinum 8272CL (Cascade Lake)

テンプレート VM またはラボ VM が停止し開始するたびに、基になるプロセッサが変更されることがあります。 入れ子になった VM がプロセッサ間で一貫して動作するようにするには、入れ子になった VM でプロセッサ互換性モードを有効にしてみてください。 イメージを発行またはエクスポートする前に、テンプレート VM の入れ子になった VM でプロセッサ互換性モードを有効にすることをお勧めします。

また、パフォーマンスが悪影響を受けないことを確認するために、プロセッサ互換性モードが有効になっている入れ子になった VM のパフォーマンスをテストする必要があります。 詳細については、プロセッサ互換性モードの使用の影響に関する記事を参照してください。

入れ子になった VM を自動的にシャットダウンする

ラボ VM のシャットダウン時に入れ子になった仮想マシンのデータ破損を回避するには、ラボ VM のシャットダウン時に入れ子になった VM を自動的にシャットダウンするように構成します。

Set-VM PowerShell コマンドを使用して、入れ子になった VMのシャットダウン自動停止アクションを構成する方法について説明します。

入れ子になった VM に VHDX ディスク形式を使用する

入れ子になった仮想マシンを作成するときは、仮想ハード ディスクの VHDX ファイル形式を選択して、ラボ VM のディスク領域を節約します。

入れ子になった VM の vCPU の数を構成する

入れ子になった仮想マシンを作成すると、既定では 1 つの仮想 CPU (vCPU) のみが割り当てられます。 入れ子になった VM のオペレーティング システムとソフトウェアによっては、vCPU の数を増やす必要があります。 入れ子になった VM CPU リソースの管理と設定の詳細については、Hyper-V プロセッサのパフォーマンスに関するページまたは Set-VM PowerShell コマンドレットをご覧ください。

入れ子になった VM に割り当てられたメモリを構成する

入れ子になった仮想マシンを作成するときに、オペレーティング システムと、入れ子になった VM のインストール済みソフトウェアに割り当てられた最小メモリでは不十分な場合があります。 入れ子になった VM で、割り当てられたメモリの最小量を増やさなければならない場合があります。 入れ子になった VM CPU リソースの管理と設定の詳細については、Hyper-V ホスト CPU リソース管理に関するページまたは Set-VM PowerShell コマンドレットをご覧ください。

HYPER-V で Linux を実行するためのベスト プラクティス

次のリソースは、Hyper-V で Linux または FreeBSD を実行するためのより多くのベスト プラクティスを提供します。

次のステップ