[已解决][问题]8。04安装VBOX,桥接上网,导致宿主机不能上网。

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
引火虫
帖子: 758
注册时间: 2006-08-28 9:08
来自: 安徽/安庆

[已解决][问题]8。04安装VBOX,桥接上网,导致宿主机不能上网。

#1

帖子 引火虫 » 2008-05-16 17:35

WUBI安装的UBUNTU 8。04,(也可以说是双系统吧)
按照论坛里的帖子安装的VBOX1。56,
配置了桥接上网,
用了几天了,宿主机和虚拟机都可以上网,
可是这几天宿主机突然就不能上网了,
不管是手动设置IP,还是DHCP,
都不能上网了。
虚拟机正常,
宿主机能PING通局域网里面的其它的计算机,
也能PING通虚拟机,
可就是PING不通网关,
但是将网关的IP放到浏览器的地址栏里回车后,
能打开输入密码的对话框,
可是切换到XP下面,
又可以上网了。

我被搞晕了... .....
请高手帮我分析下,
问题出在哪啊?
下面是终端里运行ifconfig的结果

代码: 全选


br0       Link encap:以太网  硬件地址 --:--:--:--:--:--  
          inet 地址:192.168.0.5  广播:192.168.0.255  掩码:255.255.255.0
          inet6 地址: fe80::216:e6ff:fe59:5f2e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:1145 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:69 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:71769 (70.0 KB)  发送字节:7412 (7.2 KB)

eth0      Link encap:以太网  硬件地址 --:--:--:--:--:--  
          inet 地址:192.168.0.5  广播:192.168.0.255  掩码:255.255.255.0
          inet6 地址: fe80::216:e6ff:fe59:5f2e/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  跃点数:1
          接收数据包:24970 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:13516 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:10682518 (10.1 MB)  发送字节:5393857 (5.1 MB)
          中断:220 基本地址:0xe000 

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  跃点数:1
          接收数据包:2920 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:2920 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:146000 (142.5 KB)  发送字节:146000 (142.5 KB)

tap0      Link encap:以太网  硬件地址 00:ff:10:08:3f:30  
          inet6 地址: fe80::2ff:10ff:fe08:3f30/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:10374 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:24602 错误:0 丢弃:409 过载:0 载波:0
          碰撞:0 发送队列长度:500 
          接收字节:5160603 (4.9 MB)  发送字节:10654880 (10.1 MB)
*************************************************************************
原因可能是虚拟的网卡对真实的网卡产生了干扰。
搜了好久的解决方法是:
原文是:http://www.sikeu.com/user1/yesu/archive ... 04832.html

代码: 全选

一般而言,安装完VirtualBox设定网路时选择默认的NAT模式,Guest就可顺利联网了,但是这种方式比较死板,要作更有弹性的变化, 应该采用桥接模式(Bridged),这里的桥接模式就如同VMware中的Bridged模式,Host与Guest在局域网(LAN)中的地位是相等 的。

网上很多文章,包括VirtualBox自己的帮助文档都有为VirtualBox设置桥接模式的教程,但是基本上都是写Host和Guest都采用dhcp的方式来获取IP,但是在我的环境中,必须要设置自己的静态IP,所以最后有一些稍微不一样。

下面我在Ubuntu7.04下设定VirtualBox中Host Networking为桥接模式的过程, 桥接模式可以使Host OS 和Guest OS在区域网路中处于平行地位。

安装所需工具uml-utilities,bridge-utils

sudo apt-get install uml-utilities bridge-utils


首先为Host OS建立桥接界面(Bridge)和虚拟网卡设备(tap device),这样作的原故,是使将来取得IP是由桥接界面(bridge),而不是由ethx(真实的有线网卡)或tapx(虚拟网卡)来取得IP。

将下面的文本保存成文件,有需要按自己的情况修改一两个地方。存为在/etc/init.d/vboxbridgedrun

sudo gedit /etc/init.d/vboxbridgedrun


引用
# VirtualBox Bridging

# Create a tap device with permission for the user running vbox
# 建立一个使用者(user)有权限的设备tap0,{user}为自己用户名
tunctl -t tap0 -u {user}
chmod 0666 /dev/net/tun

# Bring up ethX and tapX in promiscuous mode
# 将ethx和tapx网卡界面设为混杂模式(Promiscuous)
ifconfig eth0 0.0.0.0 promisc
ifconfig tap0 0.0.0.0 promisc

# Create a new bridge and add the interfaces to the bridge.
# 建立新的桥接界面(bridge),並把 eth0, tap0加入bridge
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 tap0

# 下面是两种获取IP的方式,可以自由选择,把不需要的注释掉就好了。
# 将bridge设成静态IP。XXX都分别对应IP、子网掩码、网关。
ifconfig br0 XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX up
route add default gw XXX.XXX.XXX.XXX
# 将bridge设成动态DHCP分配IP。
#dhclient br0


给上面的文件加上可执行权限

sudo chmod +x /etc/init.d/vboxbridgedrun

然后再建立一个可执行文件,添加如下内容。

sudo gedit /etc/init.d/vboxbridge


引用
/etc/init.d/vboxbridgedrun & 


sudo chmod +x /etc/init.d/vboxbridge

最后在/etc/rc2.d目录下做一个指向/etc/init.d/vboxbridge的链接

cd /etc/rc2.d/
sudo ln -sf ../init.d/vboxbridge S999vboxbridge   #取名S999开头是为了让它最后启动


重新启动电脑之后,现在可以在VirtualBox的Guest OS网路设定画面中,将attached to的选项中选择host interface,interface name选项中设为tap0。

这样就完成Virtualbox桥接网路模式的设定了,马上启动Guest吧 ! Guest的网路设定和Host是独立平行的。

PS:实用小指令

刪除 tap0
tunctl -d tap0

刪除 br0
ifconfig br0 down
brctl delbr br0

将tap0, eth0 移出bridge(br0)
brctl delif br0 tap0
brctl delif br0 eth0
上次由 引火虫 在 2008-05-17 13:19,总共编辑 1 次。
头像
lhw828
帖子: 2797
注册时间: 2007-03-15 16:58
来自: 湖北武汉
联系:

#2

帖子 lhw828 » 2008-05-16 21:42

叫虚拟机设置手动上网,设置ip不能和你机器一样,
引火虫
帖子: 758
注册时间: 2006-08-28 9:08
来自: 安徽/安庆

#3

帖子 引火虫 » 2008-05-17 8:15

lhw828 写了:叫虚拟机设置手动上网,设置ip不能和你机器一样,
我的虚拟机是通过DHCP获取IP的,
并且每次获取的IP都是一样的,192。168。0。7
而宿主机是手动设置IP,是192。168。0。71
可是不管怎么样,
IFCONFIG的时候,
br0和eth0的IP都是192。168。0。5
下面是/etc/network/interfaces内容

代码: 全选

auto lo
iface lo inet loopback




auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user 我的用户名

auto br0
iface br0 inet dhcp
bridge_ports all tap0 

auto eth0
iface eth0 inet dhcp
address 192.168.0.71
netmask 255.255.255.0
gateway 192.168.0.1
回复