2013年5月6日月曜日

Hyper-VをVLAN環境で構築する際のメモ

Hyper-VをVLAN環境で構築する際、随分嵌ったので覚書を残しておく。

検証環境:
WindowsServer2012 Standerd
コンソールで入れると色々嵌ったので、諦めてGUIでインストール。
サーバはHyper-Vのみインストール状態。

ネットワーク環境は以下のとおり。
やりたいのは、Hyper-Vで192.168.0.0/24上にあるマシンと、192.168.24.0/24上にあるマシンを、
一台のHyper-Vサーバ上で仮想化したい。
ただし、サーバの物理NICは1つしかない。

ポイントその1
サーバのNICドライバは、Microsoft提供のドライバを用いること。チップメーカの色々入ったドライバはダメ!(理由は後述)

ポイントその2
サーバのNICへ割り当てるL2スイッチのポートは、VLANタグをそのまま通す設定にする。(つまり、VLANを解かない。(トランクモード)
そうすると、NICにはIPが振られないので、当然通信不能になる。がそれでいい。

ポイントその3
VLANの分解はHyper-Vの仮想スイッチで行う。
このあたりが分かりにくいところ。
イメージはこんな感じ。

つまり、物理的なマシンも、すべての通信は仮想ハブを経由するようになる。
(管理オペレーティングシステムの仮想LAN IDを有効にするにチェックした場合)
なので、VLANの分解は仮想スイッチ側で行う。

一寸詳細解説。
Hyper-Vの仮想スイッチにNICを割り当てると、Hyper-Vは物理NICの設定をそっくりコピーした仮想NICを作成し、もともとあった物理NICをHyper-V拡張可能仮想スイッチを残して全て無効にします
ここで、チップメーカのドライバで、VLANを分解して仮想NICを割り当てるものとか、ドライバが独自でNICを管理している場合、物理NICの制御がこの段階で外れます。(あくまで推測ですが。)その結果、仮想NIC上でこれらのドライバがいくら有効であっても、物理NICにはドライバが有効ではないので、通信不能になります。この点が私を苦しませた嵌りポイントでした。つまり、OSの管理下にある標準ドライバ以外のドライバは機能しなくなります。これがドライバがMSじゃないといけない理由です。

以下手順。
1:Hyper-Vマネージャより、仮想スイッチマネージャを起動。
「外部」が選択されている状態で、仮想スイッチの作成をクリック。

2:外部ネットワークより、物理NICを選択。
管理オペレーティングシステムにこのネットワークアダプターの共有を許可するにチェックを入れる。(この物理サーバにもIPを割り当てないとリモートメンテナンス出来ないので。)
VLAN IDのところにある、管理オペレーティングシステムの仮想LAN IDを有効にするにチェックを入れる。
その下にあるVLANのIDにこの物理サーバを所属させるVLANのIDを入れる。ここの注意書きにあるように、このVLAN IDは物理サーバとの通信に使われるものであり、仮想マシンには影響しない。
仮想スイッチがL2スイッチで、物理サーバの接続しているポートのVLANを分解しているイメージ。

これで、物理サーバにめでたくIPが振られた。

次に仮想マシンに対し割り当てを行う。

以下手順。
(仮想マシンの作成などは省略)
1:仮想マシンの設定より、ネットワークアダプタの設定を開く。
仮想スイッチのところに、先ほど設定した仮想スイッチを選択する。
VLAN IDのところに、仮想マシンを所属させたいVLANのIDを入れる。
ここのIDは、先ほど述べたように、物理サーバのVLANとは無関係。
無論、この物理NICへ該当VLAN IDのパケットが流れるようにL2スイッチで設定してあることが前提だが。

っとこれだけである。

なお、余談だが、仮想マシンでのネットワークアダプタが、仮想マシン上で動かすOSがLinuxとかだと、そもそも動かない事がある。(はまりポイント)
下の方にチラッと書いてあるのだが、その場合は、レガシーネットワークアダプタを用いる。
実は仮想マシンのハードウエアは幾つか追加できる。気づかない人もいるようなのでちょっと手順を記す。

仮想マシンの設定より、左側上部にひっそりとハードウエアの追加というのがあるので、クリックすると、追加できるハードウエアが出てくる。

ここで、レガシーアダプタを選択、追加し、あとの設定は同じようにすればOK。
不要になったネットワークアダプタは削除しても問題ない。
逆に仮想NICを複数追加することもできる。別々のVLAN IDを割り当てることもできる。