Re:シルの日々の戯言。

散財が生き甲斐になりかけている、デジタルガジェット大好き自称黄色いネズミの戯言。

Nested ESXiのための仮想スイッチを(ESXi上に)作った

先日買い換えたESXiサーバー(NUC)で何か面白いことができないかと考えているうちに、Nested ESXiが思い浮かびました。
Nested ESXiは雑に言うと仮想化環境を入れ子にした環境で、なんだか頭のおかしい表現ですがVMware ESXi上でVMware ESXiを動作させることです。*1

今までも何回かNested ESXi環境を試みましたが、私の知恵不足で上手くいきませんでした。ESXiの仮想マシン作成時に(CPU設定項目の中にある)「ハードウェアの仮想化」オプションは有効化していましたが、実は仮想スイッチの設定変更も行う必要がありました。
blog.denet.co.jp

・左のメニューにある [ネットワーク] をクリック
・[仮想スイッチ]タブを選択
・"vSwitch0" を選択し、[設定の編集] をクリック
・[セキュリティ] を展開し、無差別モード・MAC アドレス変更・偽装転送を「承諾」に変更
・[保存] をクリックし終了

しかし、よくよく見てみるとセキュリティ設定の変更・しかも本来厳しく設定されている内容を弱める設定*2のため、漠然とした不安が募ります。

当初は上記のナレッジに従い、仮想スイッチの設定を変更する必要がある・・・と思いこんでいましたが、考えて見ればポートグループを別途作ればいいだけでは?・・・と思い至り、Nesed ESXi専用のポートグループを作った次第です。

・・・あ、ちなみにESXi 8.0b環境下にESXi7.0 U3kを導入し、Nested ESXiとなったESXi 7.0 U3kの仮想マシンからローカルネットワークのDHCPが拾えること・インターネット(Windows UpdateLinuxのパッケージ更新コマンドapt/dnf)につながることを確認しました。

Nested ESXi向けポートグループの作成

善は急げと言うことで、Nested ESXi向けのポートグループを作成します。
ポートグループはVLAN IDの指定もありますが、ライトに利用する場合は仮想スイッチとの紐付け設定です。
ポートグループを設定する際に、仮想スイッチで設定変更を行わなければならないとされているセキュリティ設定について、仮想スイッチの設定を継承するか・ポートグループで個別に設定するかを選択することが可能です。

そのため、同じ仮想スイッチに紐づけしていたとしても所属させるポートグループによって異なる設定を付与することが可能です。

(192.168.xxx.xxx/24)
-------+-----------------(Home LAN)-----
       |(NIC)
   +-------+
   |ESXi8.0|
   +-------+
       |
   [vSwitch0]
       |
       +---------------------+
       |(vSwitch0継承設定)   |(独自設定)
 [VM Network]         [Nested Network]
       |                     |
[VMs][VMs][VMs]       [VMs][VMs][VMs]

ポートグループの追加は、ESXiのWeb UI(ESXi Host Client)から設定します。

  1. (Web UIにログインして左側のナビゲータから)ネットワークをクリックする。
  2. ポートグループタブをクリックする。
  3. 「ポートグループの追加」をクリックする。
  4. ポートグループの設定を進める。
    1. 名前は任意の名称(上記AA図の例だとNested Networkなど)を設定する。
    2. 仮想スイッチは、所属させる仮想スイッチ(デフォルトスイッチを利用する場合は上記AA図のvSwitch0)を設定する。
    3. セキュリティ項目をクリックしてメニューを開く。
    4. 全ての項目(無差別モード・MACアドレス変更・偽装転送)の設定を「承諾」に変更する。
    5. 「追加」ボタンをクリックする。
  5. 設定した名称でポートグループが作成されることを確認する。

ポートグループが作成されたことを確認してから、仮想マシン作成・ESXiインストールにチャレンジします。

Nested ESXi用仮想マシンの作成

仮想マシンの作成は通常の手順と大きく変わりませんが、ゲストOS選択・CPU設定でNested ESXi用の設定を加えます。

  1. (WebUIにログインして左側のナビゲータから)仮想マシンをクリックする。
  2. 仮想マシンの作成/登録」をクリックする。
  3. ウィザードが表示されるため、「新規仮想マシンの作成」項目を選択して「次へ」ボタンをクリックする。
  4. 仮想マシンの名称とゲストOSを設定・選択し、「次へ」ボタンをクリックする。
    1. 名前は任意の名称を設定する。
    2. 互換性はデフォルトのまま*3とする。(私の環境だとESXi 8.0 仮想マシン)
    3. ゲストOSファミリは「その他」を選択する。
    4. ゲストOSのバージョンは導入予定のESXiのバージョンを選択する。(私の環境ではESXi7.0を入れる予定なのでVMware ESXi 7.xを選択)
  5. ストレージ選択画面では仮想マシンを作成するデータストアを選択し、「次へ」ボタンをクリックする。
  6. 設定のカスタマイズ画面で必要な設定を済ませて「次へ」ボタンをクリックする。
    1. CPU項目に割り当てたいCore数を指定する。
    2. CPU項目をクリックしてメニューを開く。
    3. 【超重要】「ハードウェアの仮想化」項目の「ハードウェアアシストによる仮想化をゲスト OS に公開」にチェックを付ける【凄く重要】
    4. メモリ項目で割り当てたいメモリ容量を指定する。(諸々含めて8GB以上)
    5. ハードディスク 1の項目は16GBに変更する。(起動領域のため、小さめに設定する)
    6. (設定のカスタマイズ画面の上部にある)「ハードディスクの追加」項目をクリック→「新規標準ハードディスク」をクリックし、仮想ハードディスクを1つ追加する。
    7. (ハードディスク 1の直下に)新規ハードディスクの項目に、データストアとして割り当てたい容量を指定する。
    8. 【超重要】ネットワークアダプタ 1の項目で、先程作成したポートグループ(AA図だとNested Network)に変更する。【凄く重要】
    9. もしISOメディアをデータストア上にアップロードしているなら、CD/DVDドライブ 1を「データストアISOファイル」に切り替えてISOファイルを指定する。(データストア上に無ければあとで指定する。)
  7. 設定の確認画面が表示され、内容を確認し問題が無ければ「完了」ボタンをクリックする。

あとは仮想マシンに普段どおりOSを入れる流れでESXiを導入するだけでOKです。
動作確認としてNested ESXi環境下で仮想マシンを作成し、自宅内LANの(ルーターなどの)DHCPサーバーからIPアドレスが割り当てられること・dnf/aptなどでインターネット環境からパッケージが入手できることを確認できればNested ESXi環境が成り立ったことになります。
もし、Nested ESXi環境下の仮想マシンDHCPの自動割り当てが効かない・ネットに繋がらない場合は、ポートグループのセキュリティ設定が意図した設定になっているかを確認してください。

ESXiに限らずHyper-V Serverも動かせる

Nested ESXiを連呼してきましたが、結局のところは仮想化環境の入れ子であるNested Virtualizationの環境を整えたので、ESXiに限らず何でも入れ子で動かしてネットワークに接続させることが可能です。
そう、今までは環境都合で諦めていたHyper-V Server 2019辺り*4も動かすことができます。

いずれにせよ、Nested Virtualization環境はVMwareとしては動作はするものの動作対象外と言う扱いなので、あまり積極的に試す環境でもないのかも知れません。
kb.vmware.com

しかしこれで性能の許す限り様々な環境を1台のNUCで試すことができるので、「ぼくのかんがえたさいきょーのESXiさーばー」が更に「さいきょー」になりました。
なんだかんだ結構な大金を注ぎ込んでいる環境なので、今後も生業としているITエンジニアの(技術的な)血肉となるようこのNUC(NUC10i7FNH)で精進し続けていきたいところです。

しかし、Hyper-V Serverか・・・。以前は環境問題で中途半端にしか触れませんでしたが、腐ってもITエンジニアでそれなりに経験はあるはずですがHyper-Vベースの案件は見かけないので、興味本位以上でHyper-V Serverを触れて技術的な血肉にすべきかどうか・・・。*5

*1:Nestedと言う言葉自体に「入れ子」との意味があり、入れ子にする仮想化環境次第ですがNested Virtualizationとも言われます。

*2:軽く解説すると、無差別モードは自分宛て以外のパケットを処理するか否か・MACアドレス変更は偽装したMACアドレスの受信を許容するか否か・偽装転送は偽装したMACアドレスの送信を許容するか否かです。

*3:もし他のESXiにデプロイ前提の場合は、デプロイするESXiのバージョンに合わせる必要があります。

*4:Windows Server 2019ベースのHyper-V動作特化OSで、Intel NUCだと「クライアント向けNIC積んでるのでドライバ適用させません!」とメッセージを吐いて試せないのです・・・。

*5:他のプロダクトを学んだほうが・・・とか思ってしまったりするとかしないとか。いや時間は有限なので取捨選択は大事だけど、選り好みするのはそれはそれで・・・なので。