虚拟机的网络连接方式是NAT时,对于宿主机来说,虚拟机是不可见的。如果希望NAT方式下,宿主机可以访问虚拟机,需要使用“port forwarding”方式。但是对于某应用来说,比如GlassFish, 需要使用多个端口,“port forwarding”需要的配置信息很多。接下来介绍用“Host Interface Networking”方式来实现Windows 宿主机访问OpenSolaris 虚拟机的方法。
分为几大步骤:
1.
安装Solaris的Guest Additions.
2.
为虚拟机创建”Virtual Host Interface”
3.
在Windows 宿主机配置桥接
4.
宿主机与虚拟机相互访问
5.
宿主机与虚拟机访问互联网
A. 安装Solaris的Guest Additions.
1。安装VirtualBox增强功能包(Guest Additions)。在VirtualBox中选择“设备”-〉“安装增强功能包”。VirtualBox会自动在OpenSolaris虚拟机种创建虚拟光盘VBOXADDITIONS....
图18:在虚拟机中安装VirtualBox增强功能包
2。打开OpenSoalris 终端, 转换用户名为超级用户 (命令行:su root)
3。安装VBoxSolarisAdditions.pkg,在终端中输入如下命令行,并按照提示完成安装
cd /cdrom/vboxaddtions_1.6.0_30421
pkgadd -d VBoxSolarisAdditions.pkg
4。VirtualBox缺省安装在虚拟机Solaris的/opt/VirtualBoxAdditions/ 目录下
B. 为虚拟机创建”Virtual Host Interface”
1.
停止OpenSolaris虚拟机
2.
在virtualBox中的虚拟机(OpenSolaris)网络配置中,设置”网络连接方式”为”Host Interface”. 创建新的Host Interfaces。 并把”Host Interface名称”选为刚创建的Host Interfaces, 比如”VirtualBox Host Interface 1”
图19:创建"Host Interface"
3.
设置OpenSolaris虚拟机采用连接方式为”Host Interface”的网络适配器.
图20:配置虚拟机使用"Host Interface"连接方式
4.
开启OpenSolaris虚拟机. 这时可以在Windows的”网络连接”窗口中看到新创建的”
Virtual Host Interface 1“, 作为虚拟机的网络适配器.
图21:虚拟机的网络适配器"VirtualBox Host Interface 1"
C. 在Windows 宿主机配置桥接
1。记录宿主机网卡的配置信息,比如IP地址, 掩码, 网关, DNS信息等.比如下图中的”本地连接”中的 TCP/IP配置信息. 原因是一旦本地连接加入到“网络桥”后, 在“本地连接”中就查找不到这些信息了。
图22:"本地连接"网络适配器的原有配置信息
2。现在需要桥接的有两块网络适配器,一个是对应虚拟机上的
“VirtualBox Host Interface 1”,一个是宿主机上的网络适配器,比如“本地连接”。这里需要注意的是, "本地连接"的网络适配器就是在之前创建Host Interface对应的那块网卡. 选中两块网卡,右键选择“桥接”。
图23:建立桥接
3。桥接完成后,是如下状态。
图24:完成后的网络桥
这时候,宿主机与虚拟机已经连成了一个内部局域网, 通过"网络桥"与外界联系.
在Windows宿主机上,在终端中用“ipconfig /all”查看“网络桥“的网络信息
在openSolaris虚拟机, 在终端中用“ifconfig -a”查看虚拟网卡的网络信息。 比如看到虚拟机的IP地址为“10.10.255.162”
图25: 虚拟机的网络信息
可以看到宿主机与虚拟机都在同一个网段里,比如“10.10.*”网段,而采用VirtualBox内置的DHCP服务器(10.10.0.1)。
D. 宿主机与虚拟机相互访问
1。此时宿主机与虚拟机可以看成是位于同一个局域网下的两台相联的机器了,它们之间可以相互访问。如果需要从Windows宿主机上访问OpenSolaris虚拟机上的Web应用程序,可以在Windows 宿主机上设置虚拟机的IP地址和主机名的对应关系。例如,
*
打开文件%SystemRoot%\system32\drivers\etc\hosts
*
编辑内容
127.0.0.1 localhost
10.10.255.162 vm-solaris
2。下面是在Windows 宿主机访问OpenSolaris虚拟机上GlassFish(Sun Java System Application Server)的截图。
E. 宿主机与虚拟机访问互联网
要让宿主机与虚拟机都可以访问互联网。很简单,按照普通的网卡配置流程配置"网络桥"就可以了。包括IP地址, 掩码, 网关, DNS等信息。这样宿主机与虚拟机组成的一个局域网,通过宿主机上的“网络桥”连接互联网。
图27: “网络桥”配置信息
通过“桥连接”配置完成后,就可以做更高级的实验,比如GlassFish的集群配置和负载平衡。这些都可以在一台电脑上搞定。用VirtualBox的优点还在于,如果是安装相同设置的虚拟机,那么在安装完一台之后虚拟机上的操作系统以及相应的软件后,把VDI文件复制几份,就可以快速地建立几个虚拟机。
(四)Windows中复制虚拟机
在Windows中复制虚拟机不能通过简单的VDI文件(即虚拟映像文件)拷贝, 因为每个VDI文件有唯一的UDDI号,来对应相应的虚拟机,而在Windows的Explorer中的复制不会改变这个UDDI号码,因此需要通过VirtualBox的工具来克隆VDI文件。
假设已经存在的OpenSolaris虚拟硬盘文件是:
C:\Documents and Settings\Administrator\.VirtualBox\VDI\OpenSoalris.vdi
VirtualBox安装目录是:
C:\Program Files\Sun\xVM VirtualBox
1。在Windows中打开终端,输入以下命令
set PATH=%PATH%;C:\Program Files\Sun\xVM VirtualBox
c:
cd \Documents and Settings\Administrator\.VirtualBox\VDI
VBoxManage clonevdi OpenSoalris.vdi OpenSolaris2.vdi
2。命令的结果是在\Documents and Settings\Administrator\.VirtualBox\VDI生成一个OpenSoalris2.vdi文件
图28: 复制虚拟硬盘
3。在VirtualBox中,点击"新建"按钮,新建虚拟机, 参考”图7:VirtualBox中新建虚拟硬盘”, 点击”现有”按钮, 使用复制的虚拟硬盘,比如OpenSoalris2.vdi.
图29: 新建虚拟机使用复制的虚拟硬盘
(五)问题及解决
问题1:
问题描述:“ Unable to allocate and lock memory”.
图30: 内存错误
问题原因: 电脑内存不够.
解决方案: 在VirtualBox中的"常规"中调整虚拟机的内存
问题2:
问题描述: “本地连接电缆被拔出”,而网络,网线,以及接口都没有问题.
问题原因: 网络适配器(网卡)不支持VirtualBox的某些功能
解决方案:
下载和安装最新的驱动程序,比如在本例中,从Intel网站上下载 Intel(R) PRO/1000 MT Network Connection的驱动程序并安装. (
http://downloadcenter.intel.com/ ... ID=871&lang=zho)
"本地连接电缆被拔出"的错误还出现在网络环境发生了变化,比如Host电脑从家中移到了办公室,那么解决这个问题的方法就是恢复到桥连接前的状态:
1.
在Windows中删除桥连接
2.
在VirtualBox中虚拟机的“网络配置”删除“Virtual Host Interface”
3.
重新安装网卡驱动程序
4.
重新启动Windows
问题3:
问题描述:虚拟机在NAT方式下, 无法访问互联网
问题原因:虚拟机无法获得宿主机的DNS信息
解决方案:
通常NAT的设置,不用再做其他设置, 虚拟机就可以连接到Internet上了。有些情况下,虚拟机无法获得宿主机的DNS信息,需要在虚拟机中手工加入DNS.
[
本帖最后由 云杉上的蝴蝶 于 2008-6-5 15:21 编辑 ]