2008-02-12

VMwareで物理NICを指定したブリッジ接続を行う方法

2009-04-06 設定ファイルの例をVMware2.0の物に置き換えました(内容は変わっていません)

2008-09-03 設定を書き換えたらVMwareのデーモンのみ再起動するように修正しました


2008-03-05 再度追記 やってしまいました。VMware Fusionではこの方法で大丈夫です。
今日確認してみましたが、問題なさそうでした。お騒がせいたしました。


2008-03-04 追記 この方法は恐らく問題があります。VMwareで物理NICを指定したブリッジ接続を行う方法 訂正番 をご覧ください。

この方法、ずっと知りたかったんですがやっとわかりました。
VMware Fusionをインストール時にはネットワーク設定は

vmnet0 : ブリッジ接続(NIC自動選択)
vmnet1 : ホストオンリー
vmnet8 : NAT接続

のようになっていますが、これに

vmnet2 : ブリッジ接続(有線LAN接続)
vmnet3 : ブリッジ接続(無線LAN接続)

を追加しようと思います。

まず、/Library/Application Support/VMware Fusion/boot.shを編集します
root権限が必要なため、ターミナルを起動してviで編集します。
viの使い方はこの辺りを参考にさせていただきました。
テキストエディットで編集できれば楽なのですが、やり方を知らないので
$ sudo vi /Library/Application\ Support/VMware\ Fusion/boot.sh
起動したらこの部分(ファイル最後尾付近にあります)の青色の部分をコピーして
# vmnet-bridge puts itself in background (daemon mode)
# Bridge to host network interface 'en0'.
#"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 en0
# Bridge to the primary host network interface (which can change over time).
"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 ''

# restart cisco vpn client
# if we create interfaces inbetween the time the cisco vpn kext is
# loaded and the time the cisco vpn client is started, the client
# gets confused and terminates with error 51 (PR306839). If the
# cisco vpn client is installed on this machine, we defensively
# restart it.
if [ -e "/System/Library/StartupItems/CiscoVPN/CiscoVPN" ]; then
logger -s -t "VMware Fusion 156731" "restart cisco vpn client"
/System/Library/StartupItems/CiscoVPN/CiscoVPN restart || true
fi
;;

--stop)
logger -s -t "VMware Fusion 156731" "Shutting down VMware Fusion: "

# First attempt to synchronously kill the daemons this script had launched.
vmware_stop_pidfile /var/run/vmnet-bridge-vmnet0.pid || true
vmware_stop_pidfile /var/run/vmnet-dhcpd-vmnet1.pid || true
vmware_stop_pidfile /var/run/vmnet-dhcpd-vmnet8.pid || true
vmware_stop_pidfile /var/run/vmnet-natd-vmnet8.pid || true
vmware_stop_pidfile /var/run/vmnet-netif-vmnet1.pid || true
vmware_stop_pidfile /var/run/vmnet-netif-vmnet8.pid || true
このように貼り付け、赤字の部分を変更します
# vmnet-bridge puts itself in background (daemon mode)
# Bridge to host network interface 'en0'.
#"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 en0
# Bridge to the primary host network interface (which can change over time).
"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 ''
"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet2.pid vmnet2 en0
"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet3.pid vmnet3 en1

# restart cisco vpn client
# if we create interfaces inbetween the time the cisco vpn kext is
# loaded and the time the cisco vpn client is started, the client
# gets confused and terminates with error 51 (PR306839). If the
# cisco vpn client is installed on this machine, we defensively
# restart it.
if [ -e "/System/Library/StartupItems/CiscoVPN/CiscoVPN" ]; then
logger -s -t "VMware Fusion 156731" "restart cisco vpn client"
/System/Library/StartupItems/CiscoVPN/CiscoVPN restart || true
fi
;;

--stop)
logger -s -t "VMware Fusion 156731" "Shutting down VMware Fusion: "

# First attempt to synchronously kill the daemons this script had launched.
vmware_stop_pidfile /var/run/vmnet-bridge-vmnet0.pid || true
vmware_stop_pidfile /var/run/vmnet-bridge-vmnet2.pid || true
vmware_stop_pidfile /var/run/vmnet-bridge-vmnet3.pid || true
vmware_stop_pidfile /var/run/vmnet-dhcpd-vmnet1.pid || true
vmware_stop_pidfile /var/run/vmnet-dhcpd-vmnet8.pid || true
vmware_stop_pidfile /var/run/vmnet-natd-vmnet8.pid || true
vmware_stop_pidfile /var/run/vmnet-netif-vmnet1.pid || true
vmware_stop_pidfile /var/run/vmnet-netif-vmnet8.pid || true
設定できたらデーモンを再起動するためにターミナルから
$ sudo /Library/Application\ Support/VMware\ Fusion/boot.sh --restart
と実行します。

で、次に仮想PCのパッケージ〜.vmwareを右クリックして「パッケージの内容を表示」で開いたパッケージから〜.vmxをテキストエディットで開きます。
開いたvmxファイルのネットワーク設定を
ethernet0.present = "TRUE"
ethernet0.connectionType = "bridged"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.addressType = "generated"
ethernet0.pciSlotNumber = "32"
ethernet0.generatedAddress = "xx:xx:xx:xx:xx:xx"
ethernet0.generatedAddressOffset = "0"
ethernet0.startConnected = "TRUE"
から
ethernet0.present = "TRUE"
ethernet0.connectionType = "custom"
ethernet0.vnet = "vmnet2"
ethernet0.wakeOnPcktRcv = "FALSE"
ethernet0.addressType = "generated"
ethernet0.pciSlotNumber = "32"
ethernet0.generatedAddress = "xx:xx:xx:xx:xx:xx"
ethernet0.generatedAddressOffset = "0"
ethernet0.startConnected = "TRUE"
に変更します。
vmnet2が有線、vmnet3が無線専用です。

これで準備はOK、仮想PCを実行してみると狙い通り、うまくいきました。

ちなみにVMware Fusionの設定画面から見ると…


今まで選択肢としてなかったカスタム設定が増えてます(^^)

まだ使い始めて半日なので問題が起こる可能性はありますが、今のところ快適です。一応Ver2.0.3まで動作確認済です。
ちなみに、この設定方法はVMware CommunityのDavePさんの書き込みを参考にさせてもらいました。というか、そのまんまです。(^^;)

DavePさんに感謝!!


3 件のコメント:

masami8519 さんのコメント...

この不定期メモを参考にさせていただいているmasamiといいます。今回fusionが2.0.3になりましたが、どうも設定が反映されない様なんです。2.0.2までは大丈夫だったのですが・・・。NOVAさんの環境では問題ありませんでしょうか?宜しくお願い致します。

NOVA さんのコメント...

masami8519 さん、コメントありがとうございました

2.0.3にアップデートしたので確認してみましたが、特に問題ありませんでした。

試すついでに設定ファイルの例を2.0.3のものに書き換え、変更点がわかりやすくなるように色をつけておきましたので設定に漏れがないかご確認ください。

safembox-etc さんのコメント...

設定ファイル例ありがとうございました。
同じはずなのに・・・と思いながらも
もう一度、NOVAさんの設定例を一文字、一文字丁寧に入力してみたところ、
な!なんと!出来ました!(^^)ありがとうございます。<(_ _)>

他のコメントもとてもわかりやすく、度々参考にさせていただいてます。

本当にありがとうございました。