從純 User 的角度來看,比起 VMWare,VirtualBox 的好處是,不必載入一堆有的沒有的核心模組(只有一個 vboxdrv),而且少了一堆 init script。付出的代價是... 某些方面的設定多了一些,不過這些設定並不複雜,只是麻煩些罷了。
如果您也跟我一樣不想讓 VirtualBox 用內部的 NAT,而是透過 Host Interface 直接上網,可以這麼作。首先假設網路拓樸長這樣:
-
增加一個 bridge 介面
這個根據系統,會有不同的設定。在 Gentoo(baselayout-2)下,請安裝 usermode-utilities 與 bridge-utils,並修改 /etc/conf.d/net 這個檔案:
config_eth0="null" # eth0 設為 null,並且把其他跟 eth0 有關的設定都拿掉
bridge_br0="eth0" # 讓 bridge 由 eth0 組成
config_br0=( "192.168.1.254/24" ) # 改成您的 IP
#config_br0=( "dhcp" ) # 如果您要讓這台機器走 dhcp
brctl_br0=(
"setfd 0"
"sethello 0"
"stp off"
)
routes_br0=( 'default via 192.168.1.1' ) # 如果用 dhcp,請註解掉。
fallback_br0=( "apipa" ) # 可有可無...
...
link_ppp0="br0" # 如果有 adsl 撥接,請改成透過 br0。
... -
增加相應的 init script
$ sudo ln -s /etc/init.d/net.{lo,br0}
-
修改 /etc/sudoers
加入以下這行:
%vboxusers ALL=(ALL) NOPASSWD: /usr/bin/VBoxAddIF, /usr/bin/VBoxDeleteIF
-
加入一個 helper script
放在哪裡都可以。為了讓所有的 User 都可以用,我放在 /usr/bin/VBoxIFManager.sh,別忘了 chmod +x 喔!
#!/bin/bash
IF="${1}"
ACTION="${2}"
BRIDGE="br0"
case "${ACTION}" in
up)
sudo VBoxAddIF "${IF}" "${LOGNAME}" "${BRIDGE}" > /dev/null 2>&1
;;
down)
sudo VBoxDeleteIF "${IF}" > /dev/null 2>&1
;;
esac
echo "${IF}" -
VirtualBox 內的設定
在 Virtual Machine Settings 裡的 Networking 下...- Attached to 選 Host Interface
- Interface name 留空白
- Setup Application 填入「/path/to/VBoxIFManager.sh vbox0 up」
- Terminate Application 填入「/path/to/VBoxIFManager.sh vbox0 down」
1 則留言:
我怎麼覺得Xen的設定更複雜....
張貼留言