検索
連載

【 Set-VMNetworkAdapterVlan 】コマンドレット――Hyper-V仮想マシンの仮想ネットワークアダプターにVLANを設定するWindows PowerShell基本Tips(143)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Set-VMNetworkAdapterVlan」コマンドレットを解説します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Hyper-V」の仮想マシンに接続された仮想ネットワークアダプターにVLAN(Virtual Local Area Network)を設定する「Set-VMNetworkAdapterVlan」コマンドレットです。

Set-VMNetworkAdapterVlanコマンドレットとは?

 Hyper-Vの仮想スイッチはさまざまなネットワーク機能を仮想マシンに提供しており、ネットワークを論理的に分割するVLANにも対応しています。

 仮想マシンの仮想ネットワークアダプターにVLANを設定することで、Hyper-V仮想スイッチで仮想マシンから送出されるイーサネットフレームにVLANタグを付与できます。この動きによって、仮想マシンであっても物理ネットワークのVLANに属することが可能になります。

 Set-VMNetworkAdapterVlanは、仮想マシンに接続されている仮想ネットワークアダプターに対してVLANを設定するコマンドレットです。

 VLANには「アクセスモード」や「トランクモード」、さらには「プライベートVLAN」といったさまざまな設定がありますが、全てSet-VMNetworkAdapterVlanコマンドレットで設定可能です。トランクモードやプライベートVLANなどはGUI(グラフィカルユーザーインタフェース)ツールである「Hyper-Vマネージャー」では設定できず、基本的にはSet-VMNetworkAdapterVlanコマンドレットで設定します。

 VLAN設定は仮想ネットワークアダプターの設定として行う必要があるため、VLANを使用する物理ネットワークに接続する仮想化基盤を管理する上では非常に重要なコマンドレットになります。

 なお、アクセスモードやトランクモードなどのVLANモードの詳細、プライベートVLANの詳細はここでは解説しません。VLANモードやプライベートVLANに関する解説は別連載「今だからこそ学び直すHyper-V再入門」第9回「いまさら聞けないHyper-Vネットワークの詳細(2):仮想スイッチのVLAN機能」を参照してください。

【注】Set-VMNetworkAdapterVlanコマンドレットは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットになります。GUIの「Windowsの機能の有効化」や「役割と機能の追加」からHyper-Vを有効化するか、PowerShellから「Enable-WindowsOptionalFeature」コマンドレットを使用して有効化します。


Set-VMNetworkAdapterVlanコマンドレットの書式

Set-VMNetworkAdapterVlan [オプション]


Set-VMNetworkAdapterVlanコマンドレットの主なオプション

オプション 意味
-VMName 仮想マシン名を指定する。省略可能
-VMNetworkAdapter リソースオブジェクトとして仮想ネットワークアダプターを指定する。省略可能
-VMNetworkAdapterName 仮想ネットワークアダプター名を指定する。省略可能
-ManagementOS ホストOS用の仮想ネットワークアダプターを設定したい場合に指定する。省略可能
-Untagged タグなし(アンタグ)モードに設定する場合に指定する。省略可能
-Access アクセスモードに設定する場合に指定する。省略可能
-Trunk トランクモードに設定する場合に指定する。省略可能
-Isolated プライベートVLANの分離モードに設定する場合に指定する。省略可能
-Community プライベートVLANのコミュニティーモードに設定する場合に指定する。省略可能
-Promiscuous プライベートVLANの無作為検出モードに設定する場合に指定する。省略可能
-VlanId 設定するVLAN IDを指定する。省略可能
-NativeVlanId トランクモードでネイティブVLANとして設定するVLAN IDを指定する。省略可能
-AllowedVlanIdList トランクモードでトランクするVLANのIDを範囲として指定する。省略可能
-PrimaryVlanId プライベートVLANでプライマリーVLANとして設定するVLAN IDを指定する。省略可能
-SecondaryVlanId プライベートVLANでセカンダリーVLANとして設定するVLAN IDを指定する。省略可能
-SecondaryVlanIdList プライベートVLANの無作為検出モードでセカンダリーVLANとして設定するVLANのIDを範囲として指定する。省略可能
-ComputerName リモートのHyper-Vホストの仮想ネットワークアダプターのVLANを設定する場合にコンピュータ名を指定する。省略可能

仮想マシンの仮想ネットワークアダプターにアクセスモードでVLANを設定する

 Set-VMNetworkAdapterVlanコマンドレットは必須オプションはありませんが、「仮想マシン名」「仮想ネットワークアダプター名」、もしくは「仮想ネットワークアダプターのリソースオブジェクト」を指定してVLANを設定する必要があります。

 今回は仮想マシン名を指定し、その仮想マシンに接続された仮想ネットワークアダプターに対して、アクセスモードで「VLAN 110」に接続するように設定します(画面1)。なお、Set-VMNetworkAdapterVlanコマンドレットは管理者権限での実行が必要となります。

コマンドレット実行例

Set-VMNetworkAdapterVlan -VMName Test-VM01 -Access -VlanId 110

ALT
画面1 仮想マシンを指定して、アクセスモードで「VLAN 110」に接続するようVLANを設定した

 仮想マシンとして指定した「Test-VM01」には仮想ネットワークアダプターが1つしか存在しないため、仮想ネットワークアダプターの設定は不要になります。上記実行例では、本連載142回で紹介した「Get-VMNetworkAdapterVlan」コマンドレットでVLAN設定を取得していますが、接続されている仮想ネットワークアダプターがアクセスモードで「VLAN 110」に接続するように設定変更されていることが分かります。

 アクセスモードでのVLAN設定は、Hyper-VマネージャーでのVLAN設定と同義なので、Hyper-Vマネージャーから仮想ネットワークアダプターの設定を確認すると、「仮想LAN IDを有効にする」のチェックボックスにチェックが入り、VLAN IDとして「110」が設定されていることが確認できます(画面2)。

ALT
画面2 コマンドレット実行後にHyper-Vマネージャーから参照すると、VLAN設定が有効になっていることが確認できる

 複数の仮想ネットワークアダプターが接続されている仮想マシンの場合は、仮想ネットワークアダプターを指定しないと接続されている仮想ネットワークアダプター全てに対してVLANが設定されてしまうため、「-VMNetworkAdapterName」オプションを使用してVLANを設定する仮想ネットワークアダプターを特定します(画面3)。

コマンドレット実行例

Set-VMNetworkAdapterVlan -VMName Test-VM07 -VMNetworkAdapterName "FrontNIC" -Access -VlanId 110

ALT
画面3 「-VMNetworkAdapterName」オプションを使用して、仮想ネットワークアダプターを指定してVLANを設定した

 画面3では、既にアクセスモードでVLANが設定されている仮想ネットワークアダプターに対して設定していますが、一部の例外を除いて上書き設定となるため問題ありません。


仮想マシンの仮想ネットワークアダプターにトランクモードでVLANを設定する

 トランクモードでのVLAN設定はHyper-Vマネージャーでは行うことができないため、Set-VMNetworkAdapterVlanコマンドレットで実施します(画面4)。

コマンドレット実行例

$vnic = Get-VMNetworkAdapter -VMName Test-VM07 -VMNetworkAdapterName "BackendNIC"
Set-VMNetworkAdapterVlan -VMNetworkAdapter $vnic -Trunk -allowedVlanIdList 110-119 -NativeVlanId 120

ALT
画面4 「-VMNetworkAdapter」オプションでリソースオブジェクトとして仮想ネットワークアダプターを指定し、トランクモードを設定した

 上記実行例では、本連載135回で紹介した「Get-VMNetworkAdapter」コマンドレットで仮想ネットワークアダプターを特定し、その実行結果を変数に格納した上で「-VMNetworkAdapter」オプションに引数として指定しています。指定された仮想ネットワークアダプターに対してトランクモードでVLAN 110〜119までをトランクするVLANとしてトランクモードで設定しています。

 「-NativeVlanId」オプションには、仮想ネットワークアダプターから送出される「タグなしイーサネットフレーム」をどのVLANに渡すかを指定しています。

 なお、トランクモードからアクセスモードに変更する場合は、トランクモードの状態で「-Access」オプションを指定してコマンドレットを実行しても画面5のようにエラーで設定できません。この場合は、一度「-Untagged」オプションを使用してVLAN設定をタグなし(アンタグ)モードにしてから、改めてアクセスモードへ変更してください。

ALT
画面5 VLAN設定変更でエラーが発生した場合には、一度タグなし(アンタグ)モードにしてから改めて設定を行う

ホストOSが使用する仮想ネットワークアダプターのVLANを設定する

 ホストOSが使用する仮想ネットワークアダプター、すなわちホストOSが仮想スイッチ経由で通信する際に使用される仮想ネットワークアダプターにVLANを設定する場合は「-ManagementOS」オプションを使用します(画面6)。

コマンドレット実行例

Set-VMNetworkAdapterVlan -ManagementOS -Access -VlanId 120

ALT
画面6 「-ManagementOS」オプションを使用することでホストOSが使用する仮想ネットワークアダプターのVLANを設定できる

VLAN設定を解除する

 モードにかかわらず、VLAN設定を解除したい場合は「-Untagged」オプションを使用してVLAN設定をタグなし(アンタグ)モードに設定します(画面7)。タグなし(アンタグ)モードはVLANを設定していない状態なので、VLAN設定を解除することと同義になります。

コマンドレット実行例

Set-VMNetworkAdapterVlan -ManagementOS -Untagged

ALT
画面7 タグなし(アンタグ)モードへ変更することで、VLANの設定が解除された

筆者紹介

後藤 諭史(ごとう さとし)

株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2026)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る