作者 主題: [分享] Ubuntu8.04 + VBox + XP 用 Host Interface 上網  (閱讀 12055 次)

0 會員 與 1 訪客 正在閱讀本文。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
預設是用 VBox 的 NAT 上網

不過因為要讓 guest XP 跟外面的其他電腦能連線

所以要換用 Host Interface

下面操作是直接參考 VBox 的 User Manual

Guest XP 原來的 IP 是 10.0.2.15, DHCP Server: 10.0.2.2

這是 VBox 給的...

step1. 安裝 bridge-utils 套件

引用
$ sudo apt-get install bridge-utils
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  python-compizconfig
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
  bridge-utils
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 30.7kB of archives.
After this operation, 156kB of additional disk space will be used.
Get:1 http://tw.archive.ubuntu.com hardy/main bridge-utils 1.2-2 [30.7kB]
Fetched 30.7kB in 0s (40.0kB/s)         
Selecting previously deselected package bridge-utils.
(Reading database ... 118807 files and directories currently installed.)
Unpacking bridge-utils (from .../bridge-utils_1.2-2_amd64.deb) ...
Setting up bridge-utils (1.2-2) ...

我的 Ubuntu 是 amd64 版的, 所以抓到 bridge-utils_1.2-2_amd64.deb 來安裝



step2. 編輯 vim /etc/network/interfaces

引用
auto lo
iface lo inet loopback

這是原來的內容, 在下面加上紅色的部分...

引用
auto lo
iface lo inet loopback

auto br0
iface br0 inet dhcp
    bridge_ports eth0


存檔後重新啟動網路讓新的設定生效..

引用
$ sudo /etc/init.d/networking restart
 * Reconfiguring network interfaces...                                                                               
Waiting for br0 to get ready (MAXWAIT is 32 seconds).
Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

wifi0: unknown hardware address type 801
wifi0: unknown hardware address type 801
Listening on LPF/br0/00:16:d4:19:d0:f0
Sending on   LPF/br0/00:16:d4:19:d0:f0
Sending on   Socket/fallback
DHCPDISCOVER on br0 to 255.255.255.255 port 67 interval 6
DHCPOFFER of 192.168.1.3 from 192.168.1.1
DHCPREQUEST of 192.168.1.3 on br0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.3 from 192.168.1.1

bound to 192.168.1.3 -- renewal in 260814 seconds.                                 [ OK ]

br0 從我的 IP 分享器得到新的 IP: 192.168.1.3

可以用 ifconfig 看一下..



step3. 建立一個虛擬界面(vbox0)給 guest 用

引用
# sudo VBoxAddIF vbox0 yamaka br0
VirtualBox host networking interface creation utility, version 1.5.6
(C) 2005-2007 innotek GmbH
All rights reserved.

Creating the permanent host networking interface "vbox0" for user yamaka.

藍字的部分換成你自己的帳號別照抄, 不然會有問題 XD

然後在 guest 的網路卡設定的地方輸入 vbox0 就可以用了



step4.

Xp 關機, 將網路卡的 Attached to 改成 "Host Interface"

在下面 Host Interface Settings 的 Interface Name 欄位輸入 vbox0

按 OK, 啟動 XP.....

可能會出現錯誤的對話盒, 說是無法存取 /dev/net/tun

沒關係, 改一下權限就好了...

$ sudo chmod 0666 /dev/net/tun

再次啟動 XP, 這次應該沒問題了 ^^

XP 開機後看一下網路的狀態

我的 IP是: 192.168.1.4, DHCP Server: 192.168.1.1

192.168.1.1 是我的 IP 分享器

這樣就可以跟外面的電腦連線了

例如我打開檔案總管的 網路上的芳鄰

另一台主機分享出來的 samba 就可以存取到了 ^________^

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
有試過用 start up application 來調用你的 script 嗎?

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
有試過用 start up application 來調用你的 script 嗎?

只看過 User Manual 的說明, 還沒去玩 ^^"

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
有試過用 start up application 來調用你的 script 嗎?

只看過 User Manual 的說明, 還沒去玩 ^^"
玩玩吧,我現在就卡在這裡。其他都 okay。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
今天早上重開機,發現昨天的設定有點問題

會造成 br0, eth0 都取得同樣的 IP, 所以... = ="


再度爬了一下估狗, 順便將 TAP 的設定方式研究一下...

綜合了 VBox 的使用手冊說明跟網路上的一些用法

回復 /etc/network/interfaces 為原來的

下面兩個 script 經測試可以正常運作

tapStartup.sh

引用
#!/bin/sh

# Create an new TAP interface for the user 'vbox' and remember its name.
interface=`VBoxTunctl -b -u yamaka`

# If for some reason the interface could not be created, return 1 to
# tell this to VirtualBox.
if [ -z "$interface" ]; then
exit 1
fi

# Write the name of the interface to the standard output.
echo $interface

/usr/sbin/brctl addbr br0
/sbin/ifconfig eth0 0.0.0.0 promisc
/usr/sbin/brctl addif br0 eth0
/sbin/dhclient br0

# And add it to the bridge.
/usr/sbin/brctl addif br0 $interface

# Bring up the interface.
/sbin/ifconfig $interface up

chmod 666 /dev/net/tun

tapCleanup.sh

引用
#!/bin/sh

# Remove the interface from the bridge.  The second script parameter is
# the interface name.
/usr/sbin/brctl delif br0 eth0
/usr/sbin/brctl delif br0 $2

/usr/sbin/brctl delbr br0

ifconfig $2 down
ifconfig br0 down
ifconfig eth0 down
ifconfig eth0 up

# And use VBoxTunctl to remove the interface.
VBoxTunctl -d $2


兩個 script 分別填入網路設定的

Setup Application 及 Terminate Application

例如: gtksudo /yourpath/tapStartup.sh

(Ubuntu 要用 gksudo)

Interface Name 保留空白

VM 啟動時會要求輸入密碼

然後自動啟用 br0, eth0, 並建立 tap0.....

結束 VM 時則會移除 br0, tap0


就這樣, 不過用起來有點不方便

每次啟動 br0 都要花好多時間

如果 VM 只是暫停, 下次啟動時

br0, tap0 並不會自動開啊 ~~

所以, 有需要的話, 先參考參考嘍 ^^"


更正: guest 暫停或繼續時, script也會運作

剛剛看錯, 以為不會, 熱昏頭了orz..
« 上次編輯: 2008-06-24 15:08 由 yamaka »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
奇怪了,我的 script 連跑都不跑。
我的問題:
http://forums.virtualbox.org/viewtopic.php?t=3871
(最後兩篇)

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
奇怪了,我的 script 連跑都不跑。
我的問題:
http://forums.virtualbox.org/viewtopic.php?t=3871
(最後兩篇)

呃~~ 有沒有跳出輸入密碼的對話框??

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
奇怪了,我的 script 連跑都不跑。
我的問題:
http://forums.virtualbox.org/viewtopic.php?t=3871
(最後兩篇)

呃~~ 有沒有跳出輸入密碼的對話框??
沒呢,我的 sudo 有設 NOPASSWD:
而且在 script 在 shell 手動跑是可以的。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
奇怪了,我的 script 連跑都不跑。
我的問題:
http://forums.virtualbox.org/viewtopic.php?t=3871
(最後兩篇)

呃~~ 有沒有跳出輸入密碼的對話框??
沒呢,我的 sudo 有設 NOPASSWD:
而且在 script 在 shell 手動跑是可以的。

啊~~ 這就莫宰羊了耶~~~

要不要試試笨方法...........













就是..... 先取消 NOPASSWD, 看會不會跳出密碼輸入框 ^^

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
問題是,連裡面的 echo 命令都不跑耶!
不過,我會試試的... 反正死馬當活馬醫~~

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
問題是,連裡面的 echo 命令都不跑耶!
不過,我會試試的... 反正死馬當活馬醫~~

剛剛試了一下昨天灌的 openSUSE 11 + VBox 1.5.6

將 user 設成 sudo NOPASSWD, 然後去開 VM

script 有跑耶~~~~~  XDDD

暫停或結束 VM 也有跑 script, tap0 都有正常建立跟刪除 ^^

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
問題是,連裡面的 echo 命令都不跑耶!
不過,我會試試的... 反正死馬當活馬醫~~

剛剛試了一下昨天灌的 openSUSE 11 + VBox 1.5.6

將 user 設成 sudo NOPASSWD, 然後去開 VM

script 有跑耶~~~~~  XDDD

暫停或結束 VM 也有跑 script, tap0 都有正常建立跟刪除 ^^
哦?
感謝您的 info。
我將 vbox 卸掉再看看好了。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
原來的兩支 script 拆成3支, 並做了一些修改..

b0Startup.sh

引用
#!/bin/sh

#系統啟動後自動建立br0
/sbin/brctl addbr br0
/sbin/ifconfig eth0 0.0.0.0 promisc
/sbin/brctl addif br0 eth0
/sbin/dhclient br0

chmod 666 /dev/net/tun

這支 script 可以放在系統啟動後讓它自動跑


tapStartup.sh

引用
#!/bin/sh

# Create an new TAP interface for the user 'vbox' and remember its name.
interface=`VBoxTunctl -b -u yourname`

# If for some reason the interface could not be created, return 1 to
# tell this to VirtualBox.
if [ -z "$interface" ]; then
exit 1
fi

# Write the name of the interface to the standard output.
echo $interface

# And add it to the bridge.
/sbin/brctl addif br0 $interface

# Bring up the interface.
/sbin/ifconfig $interface up

跟原來的一樣, 只是把建立 br0 的部分移除


tapCleanup.sh

引用
#!/bin/sh
ifconfig $2 down
# And use VBoxTunctl to remove the interface.
VBoxTunctl -d $2

這裡只剩下兩行, 本來是要移除br0,

但是可能還會有其他的 VM 還活著啊~~

所以只剩下刪除 tapX 的部分...


如果 VM 當了(非正常結束)

那原來配置的 tapX 不會自動釋放

可以用 sudo tapCleanup.sh 0 tapX 來清除

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
thanks!

我找到問題了,
原來當初我用的 tap 名稱,跟 tunctl 建立的名字不一樣。