sishui198
作者sishui198·2012-01-21 11:57
软件开发工程师·Esri中国(北京)有限公司

vmware和virtualbox的网络连接方式

字数 5719阅读 7224评论 0赞 0

http://www.canail.com/os/vmware_virtualbox_net.html

首先说一下,vmware和virtualbox。vmware是一款商业软件,既然是商业的,当然是要收费的。vmware旗下有很多产品,非常强大。前一阵在csdn置顶的文章中看到李开复说,微软最大的敌人不是google,而是vmware!!扯远了。我们平常做实验用的工具主要是vmware workstation和vmware server。vm workstation是收费的,不过可以从网上下载一些绿色版等等。但是,就我的使用经验来说,绿色版的workstation往往对网络连接的支持不好,vmware tools也得自己再手动安装。所以,大家不妨下载完整版的workstation,然后搜一下序列号。当然,仅供实验所用,如有商业用途,请购买正版,呵呵。vmware server倒是免费的,自己从官网申请一个正版序列号就行了。server的2.0版本是网页版,用起来很不方便,所以还是推荐大家用server的1.0版本。除了vmware系列,我们也可以使用virtualbox,这是一款免费的开源软件,不需要任何费用。之前,virtualbox属于sun,后来正如大家知道的那样,sun并入oracle,所以现在的virtualbox都叫oracle virtualbox了。话说,oracle确实野心很大,底层的系统(solaris,oracle linux)加上上层的软件(oracle,mysql),外加java和一些中间件。前一阵还说要收购AMD,这样一套“一店式”的整体解决方案下来,很多对手都打酱油了。拉里·埃里森是要构建另一个帝国吗?

又扯远了,言归正传。vmware有3种网络连接,virtualbox有4种,二者有相似之处。归纳而言,总共4种(外加Not Use),包括:

  • NAT
  • Bridged
  • Host-Only
  • Internal
  • Not Use(无网络连接)

先上一张神图,从别的博客截下来的。但是,有一点与原图不同,就是在NAT模式下,从主机访问虚拟机,原图的说明是不行,但是我在本机环境下测试,是可以的。不知道我的结论对不对。(我自己sishui198做过测试,vmware下主机通过nat是可以直接访问虚拟机,但是在virtualbox下主机访问虚拟机需要映射)
虚拟机网络连接
这张图已经很清晰的说明这3种网络连接的不同了。接下来详细阐述:

首先说明下我的实验环境,母机windows xp + vmware workstation 7.1 + RHEL 5.6

然后虚拟机配置全了3种网络连接,测试后相互能ping通。看下图,这是母机的网络连接:
本机ip地址

然后看一下在vmware的linux下的网络连接,其中eh0对应vmnet1(host-only);eh1对应vmnet8(NAT);eh2对应vmnet0(bridged),linux下终端输入命令ifconfig,结果如下:
vmware网络ip地址

其中,NAT需要设置网关,其ip地址为192.168.142.100,网关设为:192.168.1.2  这么多ip地址,看起来有点晕了,总结成一张图,如下所示:

网络配置实验ip数据
这样的话,母机及虚拟机下的网络配置已经ok,我们可以ping一下,看下网络是否连通:

首先看在windows的cmd下ping虚拟机的ip:
windows下ping linux

我们可以发现,都可以成功ping通。然后看在虚拟机的linux下ping母机的ip:
linux下ping windows

也可以看到,都能ping通。注意一点,linux下输入ping命令的话会一直返回的,按ctrl+c就能终止。到这一步为止,我们的基础准备算是完成了。接下来详细说明:

(1) VMware Workstation的虚拟网络组件

① 虚拟网卡(网络适配器):安装一个虚拟PC时会自动安装一块虚拟网卡(网络适配器)。当然,也可添加多块虚拟网卡。如下图所示:
VMwareWorkstationvirtualNICs

② 虚拟交换机:见上图。安装vmware时就自动安装了10台虚拟交换机。

③ 虚拟网桥:只在虚拟网卡连接到VMnet0 (default Bridged)虚拟交换机上才应用虚拟网桥。

④ 虚拟DHCP服务器:在虚拟网卡连接到VMnet1或VMnet8虚拟交换机时,自动安装运行虚拟DHCP服务器并连接至这台虚拟交换机。见下图:
虚拟DHCP vmnet0

上图可以看到,vmnet0下的DHCP settings是没有激活的。只有vmnet1和vmnet8下的DHCP setting可用,见下图:
虚拟DHCP vmnet1
虚拟DHCP vmnet8

打开vmnet1的DHCP setting,可以看到连接在vmnet1(host-only)上的虚拟DHCP服务器的DHCP设置如下图:
虚拟DHCP vmnet1打开

⑤ 虚拟NAT服务器:只在虚拟网卡连接到VMnet8 (NAT)虚拟交换机时才自动安装运行虚拟NAT服务器,并连接至这台虚拟交换机。见下图:
虚拟NAT vmnet0
虚拟NAT vmnet1

上面2个图可以看到,vmnet0和vmnet1下的NAT settings是没有激活的。只有vmnet8下的NAT setting可用,见下图:
虚拟NAT vmnet8

打开vmnet8的NAT setting,可以看到连接在vmnet8(NAT)虚拟交换机上的虚拟NAT服务器及其配置,如下图:
虚拟NAT vmnet8打开

⑥ 主机虚拟网卡(网络适配器):相当于一块确实存在的网卡,是连接主机和虚拟交换机用的网卡。见下图:
主机虚拟网卡

vmware安装之后,会有一台虚拟的DHCP服务器为虚拟机来分配IP地址以及虚拟的NAT服务器来映射内部地址到主机的外部地址,实际上都是一个系统服务而已,在开始—>运行中输入services.msc,就会看到这两个服务:
vmware服务

  • VMnet0:这是VMware用于虚拟桥接网络下的虚拟交换机;
  • VMnet1:这是VMware用于虚拟Host-Only网络下的虚拟交换机;
  • VMnet8:这是VMware用于虚拟NAT网络下的虚拟交换机;
  • VMware Network Adapter VMnet1:这是Host用于与Host-Only虚拟网络进行通信的虚拟网卡;
  • VMware Network Adapter VMnet8:这是Host用于与NAT虚拟网络进行通信的虚拟网卡;

Vmware在安装时默认安装了两块虚拟网卡,VMnet1和VMnet8,另外还有VMnet0。这些虚拟网卡的配置都是由Vmware虚拟机自动生成的,一般来说不需要用户自行设置。

(2) Bridged(桥接模式):默认使用VMnet0,不提供DHCP服务

这种方式直接将Host的物理网卡和Guest的网卡在VMnet0交换机上通过虚拟网桥进行桥接,和linux下一个网卡绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力。 在此种模式下,虚拟机内部的网卡(例如linux下的eth0)直接连到了物理网卡所在的网络上,虚拟机和host机处于对等的地位,在网络关系上是平等的,因此无法对虚拟机的网络进行控制。如下图所示:
bridged拓扑图

在桥接模式下,虚拟机和宿主计算机处于同等地位,虚拟机就像是一台真实主机一样存在于局域网中。因此在桥接模式下,我们就要像对待其他真实计算机一样为其配置IP、网关、子网掩码等等。当我们可以自由分配局域网IP时,使用桥接模式就可以虚拟出一台真实存在的主机。
桥接模式

我们可以在网络连接里查看到,只有桥接模式(对应本地连接,vmnet0,eth2)下,vmware桥接协议是打上对号的。
本地连接有桥接vmnet1无桥接vmnet8无桥接

(3) NAT网络(网络地址转换模式):默认使用VMnet8,提供DHCP服务

这种方式下host内部出现了一个虚拟的网卡vmnet8(默认情况下),这里的vmnet8就相当于连接到内网的网卡,而虚拟机本身则相当于运行在内网上的机器,虚拟机内的网卡(eth0)则独立于vmnet8。在NAT网络中,会使用到VMnet8虚拟交换机,Host上的VMware Network Adapter VMnet8虚拟网卡被连接到VMnet8交换机上,来与Guest进行通信,但是VMware Network Adapter VMnet8虚拟网卡仅仅是用于和VMnet8网段通信用的,它并不为VMnet8网段提供路由功能,处于虚拟NAT网络下的Guest是使用虚拟的NAT服务器连接的Internet的。

在这种方式下,vmware自带的dhcp会默认地加载到vmnet8界面上,这样虚拟机就可以使用dhcp服务,更为重要的是,vmware自带了nat服务,提供了从vmnet8到外网的地址转换。所以这种情况是一个实实在在的nat服务器在运行,只不过是供虚拟机用的。很显然,如果你只有一个外网地址,此种方式很合适。

这时候,你的Guest和Host就可以实现互访了,并且如果你的Host此时已经连接到了Internet,那么你的Guest也就可以连上Internet了。那么VMware Network Adapter VMnet8虚拟网卡在这里扮演了一个什么角色呢?它仅仅是为Host和NAT虚拟网络下的Guest通信提供一个接口,所以,即便Disable掉这块虚拟网卡,Guest仍然是可以上网的,只是Host无法再访问VMnet8网段而已。如下图所示:
nat拓扑图

在NAT模式下,宿主计算机相当于一台开启了DHCP功能的路由器,而虚拟机则是内网中的一台真实主机,通过路由器(宿主计算机)DHCP动态获得网络参数。因此在NAT模式下,虚拟机可以访问外部网络,反之则不行,因为虚拟机属于内网。使用NAT模式的方便之处在于,我们不需要做任何网络设置,只要宿主计算机可以连接到外部网络,虚拟机也可以。NAT模式通常也是大学校园网Vmware最普遍采用的连接模式,因为我们一般只能拥有一个外部IP。很显然,在这种情况下,非常适合使用NAT模式。
NAT模式

附: 修改NAT网络ID

如果嫌VMware分配的网络不好,比如它给你分了个192.168.142.0的网络ID给VMnet8,那么你可以到这里来修改,单击VMware上的“Edit”菜单,选择“Virtual Network Editor …”
更改NAT ip地址

可以再下方修改。在这里调整的是VMnet8,那么VMnet1当然也可以用这样的方式来调整。记住,之后VMware Network Adapter VMnet1和VMware Network Adapter VMnet8也需要调整到相应的网络ID,不然Host和Guest不能通讯。

(4) Host-Only网络(主机模式):默认使用VMnet1,提供DHCP服务

这应该是最为灵活方法,有兴趣的话可以进行各种网络实验。和NAT唯一的不同的是,此种方式下没有地址转换服务。因此,默认情况下,虚拟机只能到主机访问,它当然就没有办法访问Internet,这也是hostonly的名字的意义。默认情况下,也会有一个dhcp服务加载到vmnet1上。这样连接到vmnet8上的虚拟机仍然可以设置成dhcp,方便系统的配置。如下图所示:
host-only拓扑图

在Host-only模式下,相当于虚拟机通过双绞线和宿主计算机直连,而宿主计算机不提供任何路由服务。因此在Host-only模式下,虚拟机可以和宿主计算机互相访问,但是虚拟机无法访问外部网络。当你想组成一个与物理网络相隔离的虚拟网络时,无疑非常适合使用Host-only模式。
host-only模式

附: Host-Only模式能否连接到外网?

事实上,这种方式更为灵活。你可以使用自己的方式,从而达到最理想的配置,例如:

a. 使用自己dhcp服务:首先停掉vmware自带的dhcp服务,使dhcp服务更为统一。
b. 使用自己的NAT:方便加入防火墙。windows host可以做nat的方法很多,简单的如windows xp的internet共享,复杂的如windows server里的nat服务。
c. 使用自己的防火墙:因为你可以完全控制vmnet1,你可以加入(或试验)防火墙在vmnet1和外网的网卡间。

从以上可以看出,hostonly这种模式和普通的nat server带整个内网上网的情形类似,因此你可以方便的进行与之有关的实验,比如防火强的设置等。

(5) Internal(内网模式):只在virtualbox下有

内网模式,顾名思义就是内部网络模式:虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。

虚拟机与主机的关系:不能相互访问,彼此不属于同一个网络,无法相互访问。

虚拟机与网络中其他主机的关系:不能相互访问,理由同上。

虚拟机与虚拟机的关系:可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。

(6) 其他注意事项

在完成上述设置后,就可以实现3种网络模式了。但是后来发现一个问题,在vmware下的rhel中,使用firefox上网,发现网页打不开,很是纳闷,于是互相ping,却发现能ping通,非常奇怪。后来发现是dns和gateway的问题,也就是需要把相关的dns和gateway都设置好,而不仅仅是设置ip地址。设置好之后就可以在虚拟机里上网了。

参考文章:

对上述文章作者表示感谢,谢谢你们提供那么精彩的内容。一通梳理过后,对虚拟机的网络模式终于有点清晰了。

--EOF--

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

X社区推广