かつて山市良と呼ばれたおじさんのブログ

セイテクエンジニアのブログ  かつて山市良と呼ばれたおじさんのブログ  vol.17 ラボ環境 on Azureを作る(5) - Azure VMにHyper-V環境を構築

 

 

vol.17 ラボ環境 on Azureを作る(5) - Azure VMにHyper-V環境を構築

2024年06月10日配信
2024年06月18日更新
執筆者:山内 和朗

 いよいよ本格的に、Windows Server 2022のHyper-Vをベースとしたラボ環境を構築していきます。前回までに、Azure IaaSにWindows Server 2022(デスクトップエクスペリエンス)のAzure VMをデプロイし、日本語化しました。今回はその環境に、Hyper-Vの環境をセットアップします。
 今回構築していくのは、ラボ環境全体イメージ(図1)の紫の点線で示した部分になります。Hyper-Vだけでなく、Hyper-V仮想マシン(Hyper-V VM)が接続することになる、クローズドな仮想ネットワークも準備します。

図1
図1 Azure上に構築するHyper-Vベースのラボ環境。今回は紫の点線で示した部分を構築する

 

Azure VMでHyper-Vの役割の有効化する

 

 今回、Azure上のラボ環境として、入れ子になった仮想化(Nested Virtualization)をサポートするVMシリーズでAzure VMをデプロイしました。入れ子になった仮想化をサポートするVMシリーズでは、Windows ServerのHyper-Vを有効化して、使用することができます。

 Azure VMに管理者ユーザーでリモートデスクトップ接続したら、サーバーマネージャーのダッシュボードから、「役割と機能の追加ウィザード」を開始し、役割の一覧から「Hyper-V」を選択して追加します(画面1)。ウィザードでは、Hyper-Vの設定をさまざま構成することができますが、特別な設定は必要ありません。特に、「仮想スイッチの作成」ページでは何も選択せずに、ウィザードが仮想スイッチを作成してしまうことを回避してください。Hyper-Vの役割の追加には、OSの再起動が必要です。

画面1
画面1 「役割と機能の追加ウィザード」を実行して、「Hyper-V」の役割を追加する。完了するためにはOSの再起動が必要

 PowerShellであれば、次の1行でHyper-Vの役割と関連するコンポーネント(管理ツール)をインストールすることができます。

PS C:\> Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

 

Hyper-V VMの保存先パスを設定する

 

 このAzure VMには、512GBのデータディスク(Premium SSD LRS、P20)を割り当てています。まだ、ディスクを初期化していない場合は、「ディスクの管理」スナップイン(diskmgmt.msc)を開いて、GPT(GUIDパーティションテーブル)でディスクを初期化し、NTFSでフォーマットして、そのボリュームをローカルドライブ(例えば、D:ドライブ)にマウントします。

 データディスクをマウントしたら、「Hyper-Vマネージャー」スナップイン(virtmgmt.msc)を開き、「操作」ペインから「Hyper-Vの設定」を開いて、「仮想ハードディスク」と「仮想マシン」にそのデータディスク上のボリュームのパスを設定します(画面2)。指定するパスのディレクトリを事前に作成しておく必要はありません。ドライブルートさえ存在すれば、「Hyper-Vマネージャー」が適切にディレクトリやサブディレクトリを作成してくれます。

画面2
画面2 データディスクを初期化、フォーマット、マウントし、Hyper-Vの仮想ハードディスクと仮想マシンの既定の保存先パスに設定する

 

“内部”仮想スイッチを作成してNATを構成する

 

 次に、ラボ環境のクローズドな仮想ネットワークを作成します。それには、「内部」タイプのHyper-V仮想スイッチを作成した上で、NATを構成します。この操作には、「Hyper-Vマネージャー」の「仮想スイッチマネージャー」は使用しません。代わりにPowerShellで操作します(仮想スイッチの作成まではGUIでも可能です)。

 例えば、内部タイプの仮想スイッチの名前が「NATSwitch」で、その仮想スイッチが提供する内部ネットワークのサブネットを「192.168.0.0/24」にする場合、次の3行のコマンドラインを実行します。

PS C:\> New-VMSwitch -Name NATSwitch -SwitchType Internal
PS C:\> New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix "192.168.0.0/24"
PS C:\> Get-NetAdapter "vEthernet (NATSwitch)" | New-NetIPAddress -IPAddress 192.168.0.1 -AddressFamily IPv4 -PrefixLength 24

 

 内部タイプの仮想スイッチは、Hyper-VのホストとVMの両方が接続されるものであり、Hyper-Vホスト側には「vEthernet (仮想スイッチ名)」という名前の仮想ネットワークアダプターが追加されます。上記のコマンドラインを実行してNATネットワークを構成すると、Hyper-Vホストの仮想ネットワークアダプターには「192.168.0.1」のIPアドレスが静的に設定されます。

 この仮想スイッチに接続することになるHyper-V VMは、Hyepr-VホストのIPアドレス「192.168.0.1」をデフォルトゲートウェイとして設定し、Hyper-Vホストが参照しているAzure提供のDNSサーバーのIPアドレスをHyper-V VMの優先DNSサーバーとして設定すれば、NATネットワークからインターネットにアクセスできるようになります。

 NATネットワークに接続されるHyper-Vホスト側のネットワークは「識別されていないネットワーク」と認識され、既定で「パブリック」のWindowsファイアウォール設定が適用されます。「パブリック」プロファイルであることによるHyper-Vホストとの通信への影響を回避するため、念のため「プライベート」プロファイルに切り替えました。それには、PowerShellで次のように実行します。

PS C:\> Get-NetConnectionProfile -Name "識別されていないネットワーク" | Set-NetConnectionProfile -NetworkCategory Private
または
PS C:\> Set-NetConnectionProfile -Name "識別されていないネットワーク" -NetworkCategory Private


 なお、NATが有効な内部タイプのHyper-V仮想スイッチを使用することは、Azure VMのHyper-Vで動作するHyper-V VMが、インターネットアクセスを含むネットワーク機能に利用可能な唯一の方法です。仮に、Hyper-V VMをAzure VMと同じAzure仮想ネットワーク(VNET)に接続できるようにHyper-Vに「外部」タイプの仮想スイッチを作成したとしても、そこに接続されるHyper-V VMにIPアドレスが自動的に構成されることがないため、Hyper-V VMからはネットワーク機能は利用できません。

 Hyper-Vのこの仮想ネットワークの実装は、NATが有効な内部タイプのHyper-V仮想スイッチは、オンプレミスの物理環境でHyper-Vベースのラボ環境を同じように構築する際も利用できます。業務で使用する物理ネットワークからNATで遮断できるので、評価、検証に都合の良い方法だと思います。

 

内部ネットワーク自動構成用にDHCPサーバーを準備する

 

 最後に、NATが構成された内部ネットワークのネットワーク設定を簡略化するために、Azure VMにDHCPサーバーの役割を追加して、セットアップします(※1)。

 「役割と機能の追加ウィザード」でDHCPサーバーの役割を追加しようとすると、“静的IPアドレスが見つかりませんでした”と警告されますが、「続行」をクリックして、役割を追加してください(画面5)。

 DHCPサーバーの役割を追加し、インストール後の構成を完了すると、内部ネットワーク側のバインド(192.168.0.1)を通じて、内部ネットワークにDHCPサービスを提供することが可能になるので(画面6)、スコープとDHCPオプションを適切にします。例えば、スコープ「192.168.0.101~192.168.0.254」、DHCPオプションのゲートウェイ「192.168.0.1」およびDNSサーバー(Azure VMが参照するAzure提供のDNSサーバーのIPアドレス)のように設定します。


画面5
画面5 警告は無視して「続行」をクリックして、DHCPサーバーの役割を追加する

画面6
画面6 スコープを適切に作成すれば、Hyper-Vホスト(Azure VM)の内部ネットワーク側の静的IPアドレスのバインドを通じて、内部ネットワークにDHCPをサービスできる

 この内部ネットワークに接続されるHyper-V VMにゲストOSをインストールすれば、ネットワーク設定が自動構成され、すぐにインターネットアクセスを含むネットワーク機能を利用できるはずです。

※1 DHCP(動的ホスト構成プロトコル)サーバーは、Azureの仮想ネットワーク(VNET)ではサポートされませんが、入れ子になった仮想化シナリオで使用される内部ネットワークでサポートされます。
Azure 仮想マシンに対する Microsoft サーバー ソフトウェアのサポート
https://learn.microsoft.com/ja-jp/troubleshoot/azure/virtual-machines/windows/server-software-support

 

blog_subscribe

blog_comment

最新記事