深入理解VMware虚拟网络(下)

日期: 2010-08-31 作者:王春海 来源:TechTarget中国 英文

  在《深入理解VMware虚拟网络(上)》中我们简单介绍了VMware虚拟网络以及虚拟机与虚拟网卡、网络的属性等内容,本文将主要介绍VMnet1、VMnet8、VMnet0虚拟网卡之间的关系。

  3 VMnet1、VMnet8、VMnet0虚拟网卡的关系

  在VMware Workstation或VMware Server的虚拟机中,虚拟机之间、主机之间的网络关系可以参照图5所示的网络拓扑。

图5虚拟机与主机网络拓扑

  在图5中,虚拟机A11、A12、~、虚拟机A03等,是VMware Workstation(或VMware Server)创建的虚拟机。虚拟机A11、A12、A13使用VMnet1(仅主机网络)虚拟网卡,则在图5的网络拓扑中,“相当于”连接到VMnet1虚拟交换机;虚拟机A81、A82使用VMnet8虚拟网卡(NAT网络,则相当于连接到VMnet8虚拟交换机);虚拟机A01、A02、A03使用VMnet0虚拟网卡(桥接网络,相当于连接到VMnet0虚拟交换机)。

  物理主机B,代表与物理主机A属于同一局域网内的其他一台或多台计算机。这里面的“同一局域网”,表示可以是同一子网(VLAN)的计算机,也可以是不同子网的计算机。

  Internet计算机Z,代表Internet网络上的其他计算机或服务器,可以是一台或多台的计算机。

  将图5的关系,画成网络拓扑的方式,如图6所示。

图6 简化后的网络拓扑

  下面介绍各虚拟机之间与主机之间的网络关系。

  3.1 虚拟机使用VMnet1虚拟网卡

  当虚拟机选择使用VMnet1虚拟网卡时,表示这台虚拟机连接到VMnet1虚拟交换机。

  VMnet1,官方定义“仅主机网络”,其默认的网络行为,只与主机或其他使用VMnet1虚拟网卡的虚拟机有网络连接。使用VMnet1虚拟网卡的虚拟机,不能访问与物理主机之外的其他计算机.

  在图5(图6)中,虚拟机A11、A12、A13使用VMnet1虚拟网卡,表明连接到VMnet1虚拟交换机。在图5(图6)的网络拓扑中,虚拟机A11、A12、A13、物理主机A之间可以互相通讯。将图5(图6)中与VMnet1相关的计算机,简化成图7所示的拓扑。

图7 VMnet1虚拟网络拓扑图

  1在同一交换机上的计算机怎样才能通讯

  深入理解:“可以互相通讯”,这句话表示,当A11、A12、A13、A都连接到VMnet1虚拟交换机时,这4台计算机可以互相通讯,但不一定能通讯。为什么呢?如果A11、A12、A13、A没有设置同一子网的IP地址,这是不能互相通讯(互相访问)的;或者虽然设置同一网段的地址,但A11、A12、A13、A有防火墙,禁止其他计算机访问,这时也是不能通讯的。

  只有当A11、A12、A13、A连接到同一个虚拟交换机,并且在网一网段(IP地址还不能冲突)、并且没有防火墙(或者有防火墙,但允许其他计算机访问)时,才有可能通讯。

  小实验:在VMware Workstation中创建1台虚拟机,VMnet1虚拟网卡,设置与主机VMnet1相同网段的IP地址,或者在虚拟机中设置“自动获得IP地址”,关闭主机与虚拟机的防火墙,尝试用“网上邻居”或使用ping命令,检查这个虚拟机与主机能否互相通讯。

  2 注意主机多块网卡

  还要注意物理主机A,在A上有三块网卡(1块物理网卡、2块虚拟网卡),分别是VMnet1、VMnet8和物理网络(称为VMnet0),如果A11、A12、A13是192.168.10.0/24网段的计算机,但VMnet1不是192.168.10.0/24网段的,但你在VMnet8或VMnet0设置的是与A11、A12、A13同一网段的地址(例如192.168.10.0/24)时,A与A11(或A12、A13)也是不能通讯的。

  3 在同一交换机上的计算机只要是同一网段的地址即可

  另外,还需要说明,虽然在“虚拟网络设置”中,设置VMnet1虚拟网段使用192.168.10.0/24网段,但在使用中,当A11、A12、A13连接到同一个虚拟交换机时,只要A11、A12、A13、物理机A的VMnet1虚拟网卡,设置同一网段的地址(可以是192.168.10.0/24,也可以是其他网段,但最好不要与VMnet8、VMnet0网段冲突),A11、A12、A13、A就可以互相通讯。

  4 使用VMnet1虚拟网卡的计算机默认不能访问外网

  使用VMnet1虚拟网卡的计算机,不能访问外网,外网也不能访问VMnet1虚拟网卡的计算机。在图5(图6)的网络中,虚拟机A11、A12、A13与B、Z没有网络关系,它们不能互相访问。

  3.2 虚拟机使用VMnet0虚拟网卡

  如果虚拟机使用“桥接方式”,即VMnet0,则虚拟机相当于主机网络中的一台计算机,虚拟机如果选择VMnet0(或桥接网络),则通过“VMnet0虚拟交换机”连接到主机所属网络,这时与主机“VMnet0虚拟网卡”是否设置IP地址无关。

  在图5(图6)的网络拓扑中可以看到,如果虚拟机A01、A02、A03使用VMnet0虚拟交换机,不管主机VMnet0虚拟网卡,是否设置了正确的IP地址、子网掩码与网关,只要A01、A02、A03设置了正确的IP地址、子网掩码、网关等参数,是可以访问主机之外网络上的其他计算机(例如B),以及Internet网络上的其他计算机(例如Z)。VMnet0虚拟机、虚拟网络拓扑如图8所示。

图8 VMnet0虚拟网络

  其中B及Z,即可以是物理计算机,可以也是使用了VMnet0虚拟网卡的虚拟机。在图8中,使用VMnet0的虚拟机(A01、A02、A03)与物理主机A、B可以互相访问。

  3.3 虚拟机使用VMnet8虚拟网卡

  如果虚拟机使用VMnet8,则虚拟机可以通过主机网络,单向(从虚拟机到主机、外网)访问物理主机之外的网络,而主机以外的网络不能访问使用VMnet8的虚拟机。但这个的前提是,主机要能访问外网(或网络上的其他计算机),如果主机不能访问外网,则配置为VMnet8虚拟网卡的虚拟机,也不能访问外网。

  将图5(图6)中与VMnet8的虚拟网络与虚拟机,简化成图9的方式。

图9 VMnet8虚拟网络

  主机A的VMnet8虚拟网卡,连接到VMnet8虚拟交换机,VMnet8虚拟交换机连接到“虚拟路由器”,“虚拟路由器”再连接到“VMnet0虚拟网卡(也即主机物理网卡)”,并通过“VMnet0虚拟网卡”连接到“VMnet0虚拟交换机”,“VMnet0虚拟交换机”连接到主机物理网络。这也就表明,连接到“VMnet8虚拟交换机”的计算机(虚拟机或主机),需要通过“虚拟路由器”→“VMnet0虚拟网卡”→“VMnet0虚拟交换机”的方向连接到主机物理网络。

  1 NAT中的单向访问关系

  虚拟机A81、A82为物理机A上的连接到VMnet8虚拟交换机的虚拟机。则A81、A82可以访问A(双向互访),可以通过“虚拟路由器”单向访问虚拟机A01、A02、A03,并通过A单向访问A所属的网络上的其他计算机B,并可以单向访问Internet网络上的其他计算机Z。但A所属网络上的其他计算机及Internet网络上的其他计算机(默认情况下)不能访问A81、A82,所以说,这里的访问是“单向访问”。

  2 NAT中的默认情况

  上节所说的“默认情况”,是指在虚拟机上,启用NAT与DHCP服务并且虚拟机的IP地址是“自动获得IP地址与DNS情况下”,并且主机物理网卡,网络参数(IP地址、子网掩码、网关、DNS)设置正确的情况下。

  在启用NAT与DHCP服务的情况下,虚拟机会自动获得合适的IP地址、子网掩码、网关与DNS。

  如果虚拟机A81、A82没有设置为“自动获得IP地址与DNS地址”,但“手动”设置的IP地址、子网掩码和网关地址、DNS地址,与DHCP服务器分配的相似时,也是可以访问外网的。例如,在图5(图6)中,VMnet8虚拟交换机使用的是192.168.80.0/24网段,只要虚拟机设置了192.168.80.3~192.168.80.253的地址、子网掩码为255.255.255.0、网关地址为192.168.80.2,就可以访问A及网络上的其他主机。

  3 允许外网访问NAT的虚拟机

  如果物理网络上的其他计算机(例如B、Z),想要访问A81、A82,则应该通过“VMnet0虚拟交换机”→“VMnet0虚拟网卡”→“虚拟路由器”→“VMnet8虚拟交换机”到A81、A82,但“虚拟路由器”默认配置,是禁止“外网”访问“内网”,在这里,VMnet0虚拟网卡及VMnet0虚拟交换机所属的网络,属性“外网”,而“VMnet8虚拟交换机”所属网络,属于内网。

  如果配置了这个“虚拟路由器”,例如,使用“端口映射”情况, Internet网络上的其他计算机,也是可以访问虚拟机A81、A82的。

  3.4 使用不同虚拟网卡的虚拟机之间的网络关系

  前面介绍了使用同一种虚拟网卡的虚拟机与主机之间的关系,那么,在同一个物理主机中,使用不同虚拟网卡的虚拟机,它们之间是什么关系呢?

图10 虚拟网络拓扑图

  1 VMnet1默认不能访问VMnet8与VMnet0

  从图10中可以看到,连接到VMnet1的虚拟机(A11、A12、A13),与连接到VMnet8的虚拟机以及连接到VMnet0的虚拟机(A01、A02、A03),默认情况下,是不能互相访问的。

  如果它们之间要想互相访问,必须在物理主机A上,启用默认路由或者代理服务器功能,才可以互相(或者单向)访问。例如,物理主机可以安装Windows Server 2003(或Windows 2000 Server、Windows Server 2008),在该计算机上,启用“路由和远程访问”功能,并且将该计算机做成一个“路由器”,这时候,各虚拟机之间,可以互相访问。

  如果物理主机安装的是Windows 2000、XP等操作系统,可以启用“Internet连接共享功能”,让VMnet1单向访问VMnet8或VMnet0,反之亦然。例如,可以让VMnet8单向访问VMnet1等,这都是很容易的事情。

  2 VMnet8默认不能访问VMnet1

  VMnet8在默认情况下,不能访问VMnet1,可以通过虚拟路由器,单向访问VMnet0。如果VMnet8想要访问VMnet1,则像VMnet1访问VMnet8一样,在主机A上启用“路由器”或“Internet连接共享服务”。

  3 VMnet0默认不能访问VMnet8、VMnet1

  VMnet0默认情况下,不能访问VMnet1与VMnet8。如果要想访问VMnet8,除了启用“路由器”或“Internet连接共享外”,还可以通过配置“VMnet8”到“VMnet0”之间的“虚拟路由器”,进行端口映射的方式,访问VMnet8中的虚拟机。

本篇上半部分详见:深入理解VMware虚拟网络(上)

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐