【QAコーナー】Hyper-VのVLANモード

 
以前、Hyper-VのVLANに関するご質問で
「VLANのアクセスモードとトランクモードはどうやって設定するのか?」
というのがありました。
 
TechNetのサイトでも、アクセスモードとトランクモードについては説明がありますね。
■仮想ネットワークを構成する
 
説明を見てもらえれば、アクセスモードとトランクモードの違いは確認できるのだけど、
(Hyper-Vだけで)どうやって設定するの? という問題があります。
Hyper-Vのユーザーインターフェイスには、VLAN IDの設定こそ、あるものの
その他の設定項目がないので、WMIを使って設定しなければなりません。
 
 
Hyper-Vの仮想スイッチについて、まずは仮想スイッチの存在を確認しておく必要が
あるのですが、Windows 7の無人インストールのときにもお世話になった、
阿部さんのブログで詳しく説明してくださっていました。
 
■MCTの憂鬱 – Hyper-V 2.0 新機能~ネットワーク編その1
 
阿部さんのブログは、私が技術的なことに関してどのように解説しようかな?と悩んでいる内容について
ずばっ!と解説しくださっているので、いつも参考にさせてもらっています。
阿部さんとじっくりお話しした機会は(実は)多くないのですが、
モノの本質を捕らえて、話をしてくださる方なので、
あのようなお話しの仕方がブログにも反映されているのだな、と感心しております。
(私も見習わないといけないですね)
 
 
話をアクセスモードとトランクモードに戻します。
仮想スイッチに仮想マシンに接続しているとき、ポート(?)を単位に
VLAN IDを設定することができます。
VLAN IDを設定すると、その様子はWMIのMsvm_VLANEndpointSettingDataクラスで確認できます。
PowerShellを使って確認している様子がこちら。
 
 
Msvm_VLANEndpointSettingDataクラスのAccessVLAN値がVLAN IDを表します。
(ちなみに、NativeVLAN値やDefaultVLAN値でもVLAN IDは確認できます。詳細はこちらへ)
Msvm_VLANEndpointSettingDataクラスのElementName値をキーにして、
Msvm_VLANEndpointクラスのOperationalEndpointMode値を見に行くと、
そのVLAN IDが割り当てられているポートではアクセスモードか、 トランクモードか確認できます。
今回は、上図のVLAN IDが20となっているElementName値をWhere条件に入れてみました。
 
 
OperationalEndpointMode値がVLANモードを表していて、2はアクセスモード、5がトランクモードです。
この値を変更するときは、DesiredEndpointMode値を変更するそうです。(と、MSDNに書いてありました)
設定方法はご覧のとおり。
 


PS C:> $VLAN = gwmi -Namespace rootVirtualization -Class Msvm_VLANEndpoint | Where {$_.Name -match "Msvm_VLANEndpointSettingDataクラスのElementName値をここに入れる"}
PS C:> $VLAN.DesiredEndpointMode = 5

 

 
ここまで設定方法を書いてみましたが、実際にどのようにVLAN IDの受け渡しを行うか
(または、トランクモードがきちんと動作するのか?)については環境の問題もあり、まだ確認できていません。
確認できたら、改めてご紹介します。
ちなみに、できましたよ!とか、設定が間違っているよ!とか、ありましたら、
指摘していただければ、うれしいです。
 
参考URL
■Msvm_VLANEndpoint Class
■Msvm_VLANEndpointSettingData Class