ESXi のゲスト Windows マシン上でネットワークブリッジを使えるようにする
ESXi 上の Windows ゲストでネットワークブリッジの設定をする際にうまく行かず悩んだ点があったのでエントリ書いておきます。
Windows XP 以降には「ネットワークブリッジ」という機能があり、Windows マシン上に繋がった別々のネットワークを1つのネットワークとして結合することができます。
想定しているネットワーク構成のイメージは以下のようなものです。
ESXi のゲストとして、HostA、HostB という2つの Windows ゲストがあって、それぞれが別々の仮想スイッチ(vSwitch)につながっている状態です。ここで、2つのネットワークアダプタを持ち双方の仮想スイッチに繋がった BridgeHost というWindowsゲストを配置してそれぞれのネットワークを Windows のネットワークブリッジ機能を使って結合し、HostA と HostB が BridgeHost を介して通信できるようにする、というのが目標です。
実マシンとスイッチで構成されていれば、上図のように2つのネットワークアダプタを追加したネットワークブリッジを作成*1すれば、期待通りにブリッジされて HostA と HostB は同じネットワークに繋がっているかのように通信することができます。
ところが、ESXi のゲストの場合は、この設定だけでは HostA と Host B は通信することができません。
具体的に言いますとブロードキャストのイーサネットフレームは相手側に到達しますが、双方のネットワークアダプタの Mac アドレス宛のイーサネットフレームが BridgeHost を通過できません。(というより BridgeHost にも到達しません)
例えば HostA から HostB に ping コマンドを打った場合。
- HostA は HostB の Mac アドレスを解決するべくブロードキャスト宛に ARP リクエストを投げる
- BridgeHost はブロードキャスト宛の ARP リクエストを受け取り、HostB の居る vSwitch1 に ARP リクエストを転送する。
- HostB は ARP リクエストを受け取り、HostA の Mac アドレス宛に ARP リプライを送信する。
- しかし HostA 宛の ARP リプライは BridgeHost には届かず、したがって HostA にも転送されない。
- HostA は ARP リクエストを再送を繰り返すが、リプライは受け取れない…
これは ESXi の vSwitch のセキュリティ設定にて「無差別モード」がデフォルトで拒否になっている為です。つまり vSwtich としては BridgeHost 宛で無い(HostA宛)のイーサネットフレームを BridgeHost のネットワークアダプタに転送しないようになっているのです。
これを変更するためには以下の要領で vSwitch の設定を変更する必要があります。
セキュリテイタブより「無差別モード」を「承諾」に変更して「OK」をクリックします。
これで期待通り、HostA 宛、HostB 宛 のイーサネットフレームが BridgeHost を通過することができるようになり、HostA と HostB が通信できる様になります。なお、BridgeHost がブリッジ接続するアダプタに繋がった全ての vSwitch の設定を変更する必要があります。*2
ご参考
vSphere Clinet のオンラインヘルプによると以下のように説明されています。
vSphere 標準スイッチのセキュリティ ポリシーの編集
レイヤー 2 は、データ リンク レイヤーです。レイヤー 2 セキュリティ ポリシーの 3 つの要素は、 無差別モード、MAC アドレス変更、および偽装転送の 3 つです。無差別モード以外では、ゲスト アダプタは、自身の MAC アドレスのトラフィックのみを検出します。無差別モードでは、すべて のパケットを検出できます。デフォルトでは、ゲスト アダプタは無差別モード以外に設定されます。
無差別モードオプション
拒否 | ゲスト アダプタを無差別モードに設定しても、アダプタが受信するフレームには影響しません。 |
承諾 | ゲスト アダプタを無差別モードに設定すると、アダプタに接続するポート グループの VLAN ポリシーが許可する vSphere 標準スイッチを通過したすべてのフレームが検出されます。 |
Windows のネットワークブリッジについてはこちらが詳しいです。
Windows XP ネットワーク ブリッジの動作概念