一 安装与配置
sudo install apt-get VirtualBox
2.新立得安装或网站上下载的编译安装完后,直接从"系统工具"就可运行Inntek VirtualBox了
3.现在需将当前使用用户添加到vboxusers组中(如果没做这个用户组设定的话您运行VirtualBox会报一个权限错:
VirtualBox kernel driver not accessible, permission problem)
sudo usermod -G vboxusers -a user
user是你的用户名,然后重启电脑.否则运行会说你没有权限.
4.Virtualbox中安装winXP
我选择的是DeepinXP-V5.5.iso版本(217MB),接下来开始安装前的配置:
1) 选择New --next 如图3
创建你的guest机名字和选择系统类型
然后选择内存大小,一般默认192够了.
2) 选择guest机的虚拟硬盘大小.第一次运行当然选New新创建啦,点Next>
一路点Next>
选硬盘文件类型,上面一种: 不固定硬盘文件大小,随着系统扩大硬盘文会相应当扩大;下面一种: 固定硬盘文件的大小.其他点Next.完成配置
3) 安装操作系统XP
选择File--virtualbox disk manager ,在CD/DVD Images中add你安装文件.iso
接下来启动虚拟系统start,接下来就像真的硬盘安装系统一样啦..!!不过我感觉要比真实安装要快.
4)进入系统后直接就可以上网了(前提是你的host联网)..不过你是否发现guest中没又声音,哈哈不要急,关闭guest,在settings--Audio中选择driver就行了,顺便把USB也选上吧.
5)Start 尽情享受同时运行2个系统带来的乐趣吧!
5.安装VBoxGuestAdditions
进入guest你会发现鼠标只能在guest中使用,而要切换出来需要按右Crtl,比较不方便
打开虚拟机,点击菜单 Devices -> Install Guest Additions 点Nest>完了后重启guest
这样guest和host之间可以自由切换鼠标, 就像普通的应用程序窗口那样
如果点击Install Guest Additions没有反应?
进入guest,选择Devices->UMount CD/DVD-ROM,然后再点击Install Guest Additions就行了。
在虚拟机窗口点击菜单 VM -> Auto Resize Guest Display
拖动改变虚拟机窗口大小, 虚拟机分辨率会自动调整适应。全屏下"右 "crtl+f切换到窗口
6. host与guest文件共享图形工具
$sudo apt-get install vboxsharedfolder
此软件在本论坛置顶:vbox下的图形化共享工具
7.guest的备份很简单,只要把/home/...../.VirtualBox/VDI/NewHardDisk1.vdi 文件备份下就行了.
二 已知常见问题:
1Q 不能运行,即点击virtualbox后没反应;
A 已知都是内核模块没加载,运行命令
CODE:
#dmesg | grep vboxdrv
# vboxdrv: disagrees about version of symbol struct_module
产生原因是进行了内核或者头文件单一升级,造成头文件与内核不符合,直接强制加载内核模块即可解决:
CODE:
sudo modprobe -f vboxdrv
使用这样的方式要求每次host开机后都要手动运行一次,很不方便,要使内核与模块相符合,可以:
1 如果你只是进行了头文件升级,只需要再次升级内核就可以了;
2 如果是升级的内核,需要先更新头文件后重新安装VirtualBox。
2Q 终端运行VirtualBox命令出现COM权限错误;
A 主要产生原因是不是用deb包安装而是用run包安装后,第一次使用时就 sudo VirtualBox命令运行造成在用户目录下的配置文件被修改成root了。可以手动修改权限回来,但是建议重新安装deb包;
3Q 不知道如何与主机通信;
A VirtualBox主要采用smb与主机通信,缺省采用NAT的方式,自带DHCP服务,因此客户端不要要进行任何设置。默认得到的客户端ip是 10.0.2.15,网关是10.0.2.2,DNS是10.0.2.3,可以手动如此修改。但是,一般只要重启一次主机后自带的DHCP就会生效的。对 主机资源采用smb方式进行共享,需要采用\ip地址(主机的ip地址)的方式访问;
其实,VirtualBox本身还带有一个虚拟的小型局域网络,提供额外的smb服务,即程序VBoxManage,使用该命令行的方式可以指定host 的目录共享给guest机,主机被虚拟成netbios名为vboxsvr,客户机通过访问 \\vboxsvr\共享名获得读写共享,但是这种共享方式很麻烦,没有直接host开启smb来得方便。为简化这种共享,网友huangjiahua (ubuntu中国)特地制作了一个配置软件,此软件在本论坛置顶:vbox下的图形化共享工具。注意的是,安装后的菜单也在系统工具下面,配置共享前 guest不能开启。
4Q 不能用USB设备;
A 由于系统自身usbfs权限限制,需要root权限运行VirtualBox才能加载USB设备;即需要
CODE:
sudo VirtualBox
方式来启动程序;
参考[url]http://www.cslog.cn/Content/ubuntu_virtualbox_usb_dev.html[/url],发现只要只要赋予普通用户usbfs权限,也是可以直接启用的usb的,即在/etc/fstab文件中添加如下一行自动挂载:
CODE:
none /proc/bus/usb usbfs devgid=1000,devmode=664 0 0
注意,并不需要添加usbfs组,直接使用一个已经存在的用户组就行了。如果你桌面一般只有一个用户,使用gid=1000的用户组就是你的第一个用户的自身组。使用devmode=666就可以使得任意用户都有了usbfs的使用权限了。
还要注意,由于usbfs之前已经被挂载了,所以需要重启host。
5Q 如何设置桥接模式网络;
A 虽然VirtualBox自带的NAT模式网络已经很好了,但要把guest机加入host机的网络,就需要桥接模式,这里网友leemars (linuxsir论坛) 作了详细阐述,出于方便查找和收藏,我放在blog里面了,看这里:[url]http://blog.openrays.org/blog-htm-do-[/url] showone-tid-287.html
关于桥接模式自动运行,把在另外一个帖子的解决办法也贴在这里:
使用blog里面的第2中方法:
先建立一个脚本文件,比如
sudo gedit /etc/init.d/VBoxBridgedRun
将那段代码写入,然后 sudo chmod 755 /etc/init.d/VBoxBridgedRun
再建立一个脚本文件
sudo gedit /etc/init.d/VBoxBridged
写入这行代码:
/etc/init.d/VBoxBirdgedRun &
即:让那段代码在后台运行。
后面就是将后一个文件链接到rc2.d文件夹中,最好放在最后,即S9999VBoxBridged之类;
VirtualBox网络配置详解
下面简单介绍一下Test-bed Environment:
Host : 偶的本本
OS : Arch Linux (Kernel Version 2.6.20) 已安装uml_utilities(包含tunctl工具)和bridge-utils(包含brctl工具)两个包.
Username : leemars
LAN IP : 192.168.1.106/24
Interface : ath0
Guest : 偶的本本上的一个虚拟机
OS : Win2003
Host Interface : tap0
Non-Host : 偶的台式机
OS : WinXP
LAN IP : 192.168.1.120/24
Wireless Router:
LAN IP : 192.168.1.1/24 Gateway
WAN IP : 172.18.60.55/24 绑定MAC
Router开启了DHCP
Network Environment :
Non-Host直接接在无线路由上, Host通过无线网卡与无线路由连接. 无线路由开启了DHCP功能.
===================================
最简单的方案 : NAT(by VirtualBox)
Host :
直接使用VirtualBox提供的NAT功能.
Guest :
网卡设置为使用DHCP.
Guest -> WAN :
由VirtualBox的NAT提供WAN的访问服务.
Guest -> Host :
需要注意的是, 如果直接访问Guest拿到的网关IP, 会发现这个IP似乎是Host. 不过事实上不能直接访问网关IP来访问Host. 因为这个IP是由VirtualBox负责的, 只实现了NAT的功能, 其他的一些功能并不能正常运行(如FTP). 如果要访问Host, 应该访问Host的真实IP.
Host -> Guest :
不可访问. 虽然VirtualBox的NAT功能中包括了Port Forwarding的功能, 但截至到1.3.6 Snapshot, 这个功能仍没有出现在GUI中. 不过在OSE Version中已经可以使用这个功能. 通过Port Forwarding可以实现部分的向内访问.
VirtualBox NAT没有什么玩法了. 下面的方案都是使用VirtualBox的Host Interface功能.
-----------------------------------------------------------------------------
方案一 : NAT(by Linux) + Route
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#iptables -t nat -A POSTROUTING -j MASQUERADE #利用iptables完成NAT功能
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ifconfig tap0 up #激活tap0
#ifconfig tap0 10.10.10.1 netmask 255.255.255.0 #为tap0指定IP和网段, 为10.10.10.1/24.
Guest :
网卡设置如下:
IP : 10.10.10.10
Netmask : 255.255.255.0
Gateway : 10.10.10.1
Guest -> WAN :
由Linux的iptables完成NAT功能, 提供WAN的访问服务.
Guest -> Host :
10.10.10.1是真实的Host. Guest对Host的任何访问都可以通过访问10.10.10.1来完成.
Host -> Guest :
10.10.10.10是真实的Guest. Host对Guest的任何访问都可以通过访问10.10.10.10来完成.
Non-Host -> Guest :
因为Guest是在Host的NAT之后的一个私有子网中, 所以直接访问是不行的. 不过可以通过iptables来完成Port Forwarding, 实现部分的向内访问.
-----------------------------------------------------------------------------
方案二 : Transparent Bridge (Layer 2)
在我的机器上测试下来的结果很遗憾, 无线网卡似乎不能配合Bridge工作. 建好Bridge之后, Guest只能访问Host, 连网关都访问不到. 所以我改用有线网卡来进行测试, 有线网卡为eth0, IP地址同ath0.
Host :
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ifconfig eth0 0.0.0.0 promisc #使eth0进入promiscuous模式
#ifconfig tap0 0.0.0.0 promisc #使tap0进入promiscuous模式
#brctl addbr br0 #增加一个网桥
#brctl addif br0 eth0 #将eth0加入网桥
#ifconfig eth0 up #激活eth0
#dhclient br0 #为br0设置IP地址
#brctl addif br0 tap0 #将tap0加入网桥
#ifconfig tap0 up #激活tap0
Guest :
网卡设置为DHCP. 或者在设置为Host的Subnet中的一个IP地址, 如下例:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Guest -> WAN :
由网关提供WAN的访问服务.
Guest -> Host :
直接访问Host的IP地址即可.
Host -> Guest :
直接访问Guest的IP地址即可.
Non-Host -> Guest :
直接访问Guest的IP地址即可.
(由于建立了eth0和tap0的Bridge, Non-Host的ARP包被eth0接收到后, 被Brideg转发至tap0上, 数据链路得以建立.)
-----------------------------------------------------------------------------
方案三 : Transparent IP (Layer 3) proxy ARP bridge (by parprouted)
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#ip addr add 169.1.1.1/32 dev tap0 #为tap0任意指定一个私有地址
#parprouted [-d] ath0 tap0 #启动parprouted监听ath0和tap0. -d参数为Debug模式
Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Guest -> WAN :
由网关来提供WAN的访问服务.
Guest -> Host :
直接访问Host的IP地址即可.
Host -> Guest :
直接访问Guest的IP地址即可.
Non-Host -> Guest :
直接访问Guest的IP地址即可.
Troubleshooting:
这个parprouted软件有时会出现无法连通的情况. 这时可以尝试更换Guest的IP地址来解决问题. 这个貌似是parprouted软件的BUG.
-----------------------------------------------------------------------------
方案四 : ARP Proxy(by Linux) + Route
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#route add -host 192.168.1.201 dev tap0 #增加一个路由, 将192.168.1.201定向到tap0
#echo 1 > /proc/sys/net/ipv4/conf/ath0/proxy_arp #打开ath0上的ARP Proxy
#echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp #打开tap0上的ARP Proxy
Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Guest -> WAN :
由网关来提供WAN的访问服务.
Guest -> Host :
直接访问Host的IP地址即可.
Host -> Guest :
直接访问Guest的IP地址即可.
Non-Host -> Guest :
直接访问Guest的IP地址即可.
作者:leemars(linuxsir论坛)
关于桥接模式自动运行
先建立一个脚本文件,比如
sudo gedit /etc/init.d/VBoxBridgedRun
将那段代码写入,然后 sudo chmod 755 /etc/init.d/VBoxBridgedRun
再建立一个脚本文件
sudo gedit /etc/init.d/VBoxBridged
写入这行代码:
/etc/init.d/VBoxBirdgedRun &
即:让那段代码在后台运行。
后面就是将后一个文件链接到rc2.d文件夹中,最好放在最后,即S9999VBoxBridged之类;
CODE:
另類回答:
/etc/sysconfig/network-scripts/ifcfg-eth0 :
CODE:
DEVICE=eth0
TYPE=ETHER
BRIDGE=br0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth1 :
CODE:
DEVICE=eth1
TYPE=ETHER
BRIDGE=br0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-br0 :
CODE:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
sudo install apt-get VirtualBox
2.新立得安装或网站上下载的编译安装完后,直接从"系统工具"就可运行Inntek VirtualBox了
3.现在需将当前使用用户添加到vboxusers组中(如果没做这个用户组设定的话您运行VirtualBox会报一个权限错:
VirtualBox kernel driver not accessible, permission problem)
sudo usermod -G vboxusers -a user
user是你的用户名,然后重启电脑.否则运行会说你没有权限.
4.Virtualbox中安装winXP
我选择的是DeepinXP-V5.5.iso版本(217MB),接下来开始安装前的配置:
1) 选择New --next 如图3
创建你的guest机名字和选择系统类型
然后选择内存大小,一般默认192够了.
2) 选择guest机的虚拟硬盘大小.第一次运行当然选New新创建啦,点Next>
一路点Next>
选硬盘文件类型,上面一种: 不固定硬盘文件大小,随着系统扩大硬盘文会相应当扩大;下面一种: 固定硬盘文件的大小.其他点Next.完成配置
3) 安装操作系统XP
选择File--virtualbox disk manager ,在CD/DVD Images中add你安装文件.iso
接下来启动虚拟系统start,接下来就像真的硬盘安装系统一样啦..!!不过我感觉要比真实安装要快.
4)进入系统后直接就可以上网了(前提是你的host联网)..不过你是否发现guest中没又声音,哈哈不要急,关闭guest,在settings--Audio中选择driver就行了,顺便把USB也选上吧.
5)Start 尽情享受同时运行2个系统带来的乐趣吧!
5.安装VBoxGuestAdditions
进入guest你会发现鼠标只能在guest中使用,而要切换出来需要按右Crtl,比较不方便
打开虚拟机,点击菜单 Devices -> Install Guest Additions 点Nest>完了后重启guest
这样guest和host之间可以自由切换鼠标, 就像普通的应用程序窗口那样
如果点击Install Guest Additions没有反应?
进入guest,选择Devices->UMount CD/DVD-ROM,然后再点击Install Guest Additions就行了。
在虚拟机窗口点击菜单 VM -> Auto Resize Guest Display
拖动改变虚拟机窗口大小, 虚拟机分辨率会自动调整适应。全屏下"右 "crtl+f切换到窗口
6. host与guest文件共享图形工具
$sudo apt-get install vboxsharedfolder
此软件在本论坛置顶:vbox下的图形化共享工具
7.guest的备份很简单,只要把/home/...../.VirtualBox/VDI/NewHardDisk1.vdi 文件备份下就行了.
二 已知常见问题:
1Q 不能运行,即点击virtualbox后没反应;
A 已知都是内核模块没加载,运行命令
CODE:
#dmesg | grep vboxdrv
# vboxdrv: disagrees about version of symbol struct_module
产生原因是进行了内核或者头文件单一升级,造成头文件与内核不符合,直接强制加载内核模块即可解决:
CODE:
sudo modprobe -f vboxdrv
使用这样的方式要求每次host开机后都要手动运行一次,很不方便,要使内核与模块相符合,可以:
1 如果你只是进行了头文件升级,只需要再次升级内核就可以了;
2 如果是升级的内核,需要先更新头文件后重新安装VirtualBox。
2Q 终端运行VirtualBox命令出现COM权限错误;
A 主要产生原因是不是用deb包安装而是用run包安装后,第一次使用时就 sudo VirtualBox命令运行造成在用户目录下的配置文件被修改成root了。可以手动修改权限回来,但是建议重新安装deb包;
3Q 不知道如何与主机通信;
A VirtualBox主要采用smb与主机通信,缺省采用NAT的方式,自带DHCP服务,因此客户端不要要进行任何设置。默认得到的客户端ip是 10.0.2.15,网关是10.0.2.2,DNS是10.0.2.3,可以手动如此修改。但是,一般只要重启一次主机后自带的DHCP就会生效的。对 主机资源采用smb方式进行共享,需要采用\ip地址(主机的ip地址)的方式访问;
其实,VirtualBox本身还带有一个虚拟的小型局域网络,提供额外的smb服务,即程序VBoxManage,使用该命令行的方式可以指定host 的目录共享给guest机,主机被虚拟成netbios名为vboxsvr,客户机通过访问 \\vboxsvr\共享名获得读写共享,但是这种共享方式很麻烦,没有直接host开启smb来得方便。为简化这种共享,网友huangjiahua (ubuntu中国)特地制作了一个配置软件,此软件在本论坛置顶:vbox下的图形化共享工具。注意的是,安装后的菜单也在系统工具下面,配置共享前 guest不能开启。
4Q 不能用USB设备;
A 由于系统自身usbfs权限限制,需要root权限运行VirtualBox才能加载USB设备;即需要
CODE:
sudo VirtualBox
方式来启动程序;
参考[url]http://www.cslog.cn/Content/ubuntu_virtualbox_usb_dev.html[/url],发现只要只要赋予普通用户usbfs权限,也是可以直接启用的usb的,即在/etc/fstab文件中添加如下一行自动挂载:
CODE:
none /proc/bus/usb usbfs devgid=1000,devmode=664 0 0
注意,并不需要添加usbfs组,直接使用一个已经存在的用户组就行了。如果你桌面一般只有一个用户,使用gid=1000的用户组就是你的第一个用户的自身组。使用devmode=666就可以使得任意用户都有了usbfs的使用权限了。
还要注意,由于usbfs之前已经被挂载了,所以需要重启host。
5Q 如何设置桥接模式网络;
A 虽然VirtualBox自带的NAT模式网络已经很好了,但要把guest机加入host机的网络,就需要桥接模式,这里网友leemars (linuxsir论坛) 作了详细阐述,出于方便查找和收藏,我放在blog里面了,看这里:[url]http://blog.openrays.org/blog-htm-do-[/url] showone-tid-287.html
关于桥接模式自动运行,把在另外一个帖子的解决办法也贴在这里:
使用blog里面的第2中方法:
先建立一个脚本文件,比如
sudo gedit /etc/init.d/VBoxBridgedRun
将那段代码写入,然后 sudo chmod 755 /etc/init.d/VBoxBridgedRun
再建立一个脚本文件
sudo gedit /etc/init.d/VBoxBridged
写入这行代码:
/etc/init.d/VBoxBirdgedRun &
即:让那段代码在后台运行。
后面就是将后一个文件链接到rc2.d文件夹中,最好放在最后,即S9999VBoxBridged之类;
VirtualBox网络配置详解
下面简单介绍一下Test-bed Environment:
Host : 偶的本本
OS : Arch Linux (Kernel Version 2.6.20) 已安装uml_utilities(包含tunctl工具)和bridge-utils(包含brctl工具)两个包.
Username : leemars
LAN IP : 192.168.1.106/24
Interface : ath0
Guest : 偶的本本上的一个虚拟机
OS : Win2003
Host Interface : tap0
Non-Host : 偶的台式机
OS : WinXP
LAN IP : 192.168.1.120/24
Wireless Router:
LAN IP : 192.168.1.1/24 Gateway
WAN IP : 172.18.60.55/24 绑定MAC
Router开启了DHCP
Network Environment :
Non-Host直接接在无线路由上, Host通过无线网卡与无线路由连接. 无线路由开启了DHCP功能.
===================================
最简单的方案 : NAT(by VirtualBox)
Host :
直接使用VirtualBox提供的NAT功能.
Guest :
网卡设置为使用DHCP.
Guest -> WAN :
由VirtualBox的NAT提供WAN的访问服务.
Guest -> Host :
需要注意的是, 如果直接访问Guest拿到的网关IP, 会发现这个IP似乎是Host. 不过事实上不能直接访问网关IP来访问Host. 因为这个IP是由VirtualBox负责的, 只实现了NAT的功能, 其他的一些功能并不能正常运行(如FTP). 如果要访问Host, 应该访问Host的真实IP.
Host -> Guest :
不可访问. 虽然VirtualBox的NAT功能中包括了Port Forwarding的功能, 但截至到1.3.6 Snapshot, 这个功能仍没有出现在GUI中. 不过在OSE Version中已经可以使用这个功能. 通过Port Forwarding可以实现部分的向内访问.
VirtualBox NAT没有什么玩法了. 下面的方案都是使用VirtualBox的Host Interface功能.
-----------------------------------------------------------------------------
方案一 : NAT(by Linux) + Route
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#iptables -t nat -A POSTROUTING -j MASQUERADE #利用iptables完成NAT功能
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ifconfig tap0 up #激活tap0
#ifconfig tap0 10.10.10.1 netmask 255.255.255.0 #为tap0指定IP和网段, 为10.10.10.1/24.
Guest :
网卡设置如下:
IP : 10.10.10.10
Netmask : 255.255.255.0
Gateway : 10.10.10.1
Guest -> WAN :
由Linux的iptables完成NAT功能, 提供WAN的访问服务.
Guest -> Host :
10.10.10.1是真实的Host. Guest对Host的任何访问都可以通过访问10.10.10.1来完成.
Host -> Guest :
10.10.10.10是真实的Guest. Host对Guest的任何访问都可以通过访问10.10.10.10来完成.
Non-Host -> Guest :
因为Guest是在Host的NAT之后的一个私有子网中, 所以直接访问是不行的. 不过可以通过iptables来完成Port Forwarding, 实现部分的向内访问.
-----------------------------------------------------------------------------
方案二 : Transparent Bridge (Layer 2)
在我的机器上测试下来的结果很遗憾, 无线网卡似乎不能配合Bridge工作. 建好Bridge之后, Guest只能访问Host, 连网关都访问不到. 所以我改用有线网卡来进行测试, 有线网卡为eth0, IP地址同ath0.
Host :
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ifconfig eth0 0.0.0.0 promisc #使eth0进入promiscuous模式
#ifconfig tap0 0.0.0.0 promisc #使tap0进入promiscuous模式
#brctl addbr br0 #增加一个网桥
#brctl addif br0 eth0 #将eth0加入网桥
#ifconfig eth0 up #激活eth0
#dhclient br0 #为br0设置IP地址
#brctl addif br0 tap0 #将tap0加入网桥
#ifconfig tap0 up #激活tap0
Guest :
网卡设置为DHCP. 或者在设置为Host的Subnet中的一个IP地址, 如下例:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Guest -> WAN :
由网关提供WAN的访问服务.
Guest -> Host :
直接访问Host的IP地址即可.
Host -> Guest :
直接访问Guest的IP地址即可.
Non-Host -> Guest :
直接访问Guest的IP地址即可.
(由于建立了eth0和tap0的Bridge, Non-Host的ARP包被eth0接收到后, 被Brideg转发至tap0上, 数据链路得以建立.)
-----------------------------------------------------------------------------
方案三 : Transparent IP (Layer 3) proxy ARP bridge (by parprouted)
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#ip addr add 169.1.1.1/32 dev tap0 #为tap0任意指定一个私有地址
#parprouted [-d] ath0 tap0 #启动parprouted监听ath0和tap0. -d参数为Debug模式
Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Guest -> WAN :
由网关来提供WAN的访问服务.
Guest -> Host :
直接访问Host的IP地址即可.
Host -> Guest :
直接访问Guest的IP地址即可.
Non-Host -> Guest :
直接访问Guest的IP地址即可.
Troubleshooting:
这个parprouted软件有时会出现无法连通的情况. 这时可以尝试更换Guest的IP地址来解决问题. 这个貌似是parprouted软件的BUG.
-----------------------------------------------------------------------------
方案四 : ARP Proxy(by Linux) + Route
Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#route add -host 192.168.1.201 dev tap0 #增加一个路由, 将192.168.1.201定向到tap0
#echo 1 > /proc/sys/net/ipv4/conf/ath0/proxy_arp #打开ath0上的ARP Proxy
#echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp #打开tap0上的ARP Proxy
Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Guest -> WAN :
由网关来提供WAN的访问服务.
Guest -> Host :
直接访问Host的IP地址即可.
Host -> Guest :
直接访问Guest的IP地址即可.
Non-Host -> Guest :
直接访问Guest的IP地址即可.
作者:leemars(linuxsir论坛)
关于桥接模式自动运行
先建立一个脚本文件,比如
sudo gedit /etc/init.d/VBoxBridgedRun
将那段代码写入,然后 sudo chmod 755 /etc/init.d/VBoxBridgedRun
再建立一个脚本文件
sudo gedit /etc/init.d/VBoxBridged
写入这行代码:
/etc/init.d/VBoxBirdgedRun &
即:让那段代码在后台运行。
后面就是将后一个文件链接到rc2.d文件夹中,最好放在最后,即S9999VBoxBridged之类;
CODE:
另類回答:
/etc/sysconfig/network-scripts/ifcfg-eth0 :
CODE:
DEVICE=eth0
TYPE=ETHER
BRIDGE=br0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth1 :
CODE:
DEVICE=eth1
TYPE=ETHER
BRIDGE=br0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-br0 :
CODE:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
ONBOOT=yes
本文转自 song8575 51CTO博客,原文链接:http://blog.51cto.com/song8575/36882