【Windows 11】Hyper-Vで物理NICをトランク化してVLANタグを扱う方法
導入
ネットワーク検証で管理系通信やE2Eの通信を流すためのテスト端末を複数台準備するという作業は、正直かなり負担が大きいのではないでしょうか。
私自身も以前は、数台のPCを机の上に並べ、電源タップを増設し、LANケーブルを引き回しながら検証環境を構築していました。
しかし、こうした作業は手間がかかるだけでなく、物理的なスペースの確保にも悩まされ、毎回大きな労力が必要になるのが実情です。
そこで本記事では、Hyper-Vを有効化したWindows PC1台 + VLAN間ルーティング可能なネットワーク機器1台の最小構成で、セグメントを分けて複数のホストを用意できる環境を再現する方法を紹介します。
構成イメージは以下の通りです。
Ubuntu VM・コンテナA・コンテナB間でpingによる疎通確認ができる状態をゴールとします。

動作環境
以下の環境で動作を確認しています。
- ホストOS
- Windows 11 Enterprise 評価版
- ハイパーバイザー
- Hyper-V
- 物理・仮想ネットワークの接続
- 外部仮想スイッチを使用
- 仮想マシン
- Ubuntu Server 24.04.3 LTS
- コンテナエンジン
- Podman
- コンテナ
- Ubuntu 22.04
- macvlanモード
- bridge
- 物理ルータ
- C891FJ-K9
物理ルータのインターフェイス設定は以下の通りです。
interface GigabitEthernet6
switchport trunk native vlan 40
switchport trunk allowed vlan 1,2,40,100,200,1002-1005
switchport mode trunk
no ip address
!Hyper-Vの有効化
管理者権限のPowerShellを起動し、以下のコマンドを実行します。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestartコマンド実行後、設定を反映するために再起動してください。
仮想環境構築
仮想スイッチ作成
再起動後、ネットワークアダプタ一覧にDefault Switchが追加されていることを確認します。あわせて、使用する物理NICの名称を控えておきます。(本例では「イーサネット」)

管理者権限のPowerShellを起動し、以下のコマンドを実行して外部仮想スイッチを作成します。NetAdapterNameは、先ほど控えた「イーサネット」を指定します。
New-VMSwitch -Name "ExternalTrunk" -NetAdapterName "イーサネット" -AllowManagementOS $true -Notes "外部接続用"仮想マシン作成
引き続きPowerShellを使用して操作していきます。
まずは仮想ハードディスク(VHDX)を作成します。
New-VHD -Path "C:\VMs\Ubuntu01\Ubuntu01.vhdx" -SizeBytes 60GB -Dynamic続いて仮想マシンを新規作成し、必要なリソースを割り当てていきます。なお、パスなどはご自身の環境に合わせて適宜変更してください。
New-VHD -Path "C:\VMs\Ubuntu01\Ubuntu01.vhdx" -SizeBytes 60GB -Dynamic
New-VM -Name "Ubuntu01" `
-MemoryStartupBytes 4GB `
-Generation 2 `
-VHDPath "C:\VMs\Ubuntu01\Ubuntu01.vhdx" `
-SwitchName "ExternalTrunk"
Set-VMProcessor -VMName "Ubuntu01" -Count 2
Set-VMFirmware -VMName "Ubuntu01" -EnableSecureBoot Off
Add-VMDvdDrive -VMName "Ubuntu01" -Path "C:\Users\gumio\Desktop\Installer\Ubuntu-24.04.3\ubuntu-24.04.3-live-server-amd64.iso"仮想マシンのNIC設定
作成したUbuntu VMのNIC名称を確認し、対象のNICをトランクポートとして設定します。下記は、仮想スイッチとUbuntu VM間をトランクリンクとして構成し、「タグ無し,VLAN100,200」をAllowedする例です。
Get-VMNetworkAdapter -VMName "Ubuntu01"
Set-VMNetworkAdapterVlan -VMName "Ubuntu01" -VMNetworkAdapterName "ネットワーク アダプター" -Trunk -NativeVlanId 0 -AllowedVlanIdList "100,200"対象のNICでMACアドレススプーフィングを許可し、実質的に無差別モードを有効化します。
Set-VMNetworkAdapter -VMName "Ubuntu01" -MacAddressSpoofing OnTips
今回の構成では、物理ネットワークにおけるタグ無しVLANのIDを40としています。ただし、仮想マシンのNICに対して「-NativeVlanId 40」を設定すると、仮想マシンから送信されたタグ無しフレームに対して、仮想スイッチがVLAN ID 40を付与してアップリンクへ転送する挙動となるため注意が必要です。
この構成では、タグ無しフレームをそのままアップリンクへ転送するため、「-NativeVlanId 0」が正しい設定となります。
仮想マシン起動~初期設定
仮想マシンを起動し、セットアップウィザードに従ってUbuntuの初期設定をしましょう。
Start-VM -Name "Ubuntu01"Ubuntuのインストール完了後、ISOファイルは不要となるためアンマウントします。
Get-VMDvdDrive -VMName "Ubuntu01"
Set-VMDvdDrive -VMName "Ubuntu01" -Path $null
Get-VMDvdDrive -VMName "Ubuntu01"コンテナ作成~疎通確認
コンテナの作成から疎通確認までの手順は、過去の記事と同じ内容となります。詳しい解説は以下の記事にまとめていますので、あわせてご参照下さい。
なお、Netplanファイルに記載するインターフェイス名は、ご自身の環境に合わせて適宜修正して下さい。
まとめ
今回紹介した方法を活用することで、これまで物理端末を複数用意して行っていた検証作業を、ノートPC1台で効率的かつスマートに再現できるようになります。
限られたスペースでも柔軟にネットワーク構成を試せるため、日常的な検証はもちろん、設計構築の事前検証やトラブルシューティングにも役立つはずです。
この記事が皆様の検証環境づくりに少しでも役に立てば幸いです。
