2007/04/17(火)VMware player に ethernet を占有させる

LANカードを1枚余計にさして、ホストマシンでは使用せずに VMware 上の仮想マシンに占有させるために格闘してみました。

VMWare のネットワークの仕組

VMware3.0 の Network の設定方法というサイトにネットワークの仕組が書かれています。要するに、VMware内のネットワークはすべて仮想的なネットワークであるVMnetを経由して外部に接続されます。VMnet1やVMnet8などは、仮想的なネットワークの個別の名前です。そういう名前の「HUBがある」と思えば分かりやすいかもしれません。

VMnet0ブリッジ用のネットワーク
VMnet1hostonlyホストオンリー用(仮想マシンとホスト間のみで通信できるネットワーク)
VMnet8natネットワーク用(仮想マシンから、ホストをNATとして外部に通信)

この他、VMnet2~VMnet7は自由に使うことができます。自由というのがくせもので、きちんと設定してあげる必要があります。ホストOS(VMwareが動くOS)上の物理イーサネットをどのVMnet*に割り当てるかは設定ツールが存在します。

Windows ならば c:\program files\vmware\vmware player\vmnetcfg.exe(vmplayerの場合)、Linux ならば vmware-config.pl というスクリプトがあります。この設定は重要です。例えば、VMnet2 に特定のインターフェイスカードをブリッジとして割り付けます。

vmxファイルの設定

続いて、仮想マシン上の ethernet を、特定の VMnet に結びつけます。vmx を次のように設定します。ethernet1 を特定インターフェイスに割り付けます。

ethernet0.present = "true"
ethernet0.connectionType = "bridged"

ethernet1.present = "true"
ethernet1.connectionType = "custom"
ethernet1.vnet = "VMnet2"

ゲストOS(VMware上のOS)がLinuxならば、eth0 が通常の bridge共有、eth1 が占有インターフェイス(Bridge扱い)となります。

ホスト側がWindowsのときの設定

VMwareのホストに占有させたいネットワークカードのプロパティを開き、VMware brigde 以外のプロトコルのチェックを外します。これで占有になりますが、このままではネットワークの接続検出に失敗することがあるようなので、その場合は TCP/IP と適当な IP だけ設定しておきましょう。