VMware Workstation是一款非常不错的虚拟机软件,许多爱好者用VMware Workstation设计多种实现环境做测试。VMware Workstation的虚拟网络部分,功能非常的强大,但对于初学者来说,稍显复杂。基于此,本文将深入介绍VMware的虚拟网络,让读者深刻理解VMware虚拟网络之间的关系,从而可以设计多种复杂的广域网、局域网的实验环境,满足读者的实验需求。由于VMware Server与VMware Workstation一体相乘,所以本文的内容也同样适用于VMware Server。同时,VMware Workstation的虚拟网络,也是VMware企业产品VMware ESX Server的基础,熟悉了VMware Workstation的虚拟网络后,对大家深入学习、使用VMware Server也有一定的帮助作用。
VMware Workstation(或VMware Server)安装在物理计算机,这台计算机称作“主机”,假设这台主机有一块物理网卡,并且连接到网络的一台交换机中,此时,网络拓扑如图3-1所示。
图3-1 主机物理网络
【关键点】VMware Workstation与VMware Server,支持VMnet0~VMnet9共10块(虚拟)网卡,对于每一块虚拟网卡来说(VMnet0~VMnet9),同一时刻只能选择一种网络属性:或者使用主机物理网卡,或使用虚拟网卡。
在VMware虚拟网络中,包括两种网络:一种是“仅主机网络”,另一种是“NAT网络”。对于VMware Workstation(或VMware Server)主机来说,可以有多块虚拟网卡具有“仅主机网络”特性,但同一时刻只能有1块虚拟网卡具有“NAT网络”属性。
在主机上安装VMware Workstation或VMware Server的时候,默认会安装3块虚拟网卡,这3块虚拟网卡的名称分别为VMnet0、VMnet1、VMnet8,其中VMnet0的网络属性为“物理网卡”,VMnet1与VMnet8的网络属性为“虚拟网卡”。在默认情况下,VMnet1虚拟网卡的定义是“仅主机虚拟网络”,VMnet8虚拟网卡的定义是“NAT网络”,同时,主机物理网卡被定义为“桥接网络”,主机物理网卡也可以称为VMnet0。
在默认情况下,VMware Workstation虚拟网络拓扑关系如图3-2所示。
图3-2 虚拟机网络拓扑
在图3-2中,有3个虚拟交换机、2块虚拟网卡、1块物理网卡、1个虚拟路由器,组成了默认虚拟网络的整个结构。当VMware Workstation(或VMware Server)安装的时候,会从192.168.x.0/24(在以前的某个版本中,也用过172.16.0.0/12的地址段,但很快放弃了)的地址中,随机选择2个地址段,并将每个段的第1个地址分配给对应的虚拟网卡(VMnet1与VMnet8)使用。
在图3-2中, VMnet1使用了192.168.10.0/24、VMnet8使用了192.168.80.0/24的地址段,这是我习惯使用的地址段,你可以根据自己的爱好与习惯设置。如果你想修改这些IP地址,在后文会有介绍。
在图3-2中,还有1个虚拟DHCP服务器没有标出,该虚拟DHCP服务器,用来为使用VMnet1、VMnet8(或其他)虚拟网卡(或者说连接到VMnet1、VMnet8虚拟交换机)的虚拟机自动分配IP地址、子网掩码、网关与DNS等参数。
在VMware Workstation中,每个虚拟机最多可以支持10块虚拟网卡,这些虚拟网卡,可以(根据需要)连接到不同的虚拟网络,例如图3-2中的VMnet1、VMnet8或VMnet0虚拟交换机。有两种情况可以选择虚拟网络,一种是在创建虚拟机的时候,另一种是在创建虚拟机后,在“虚拟机设置”中修改虚拟网络属性。
(1)在创建虚拟机的时候,在“Network Type(网络属性)”页中,在“Network connection(网络连接)”选项组中,为当前虚拟机选择连接到的虚拟网络,如图3-3所示。
图3-3 网络属性
(2)在虚拟机创建完成后,修改“虚拟机设置”,也可以修改虚拟网络属性,如图3-4所示。
图3-4 修改虚拟机设置
不管是在创建虚拟机的时候,选择网络属性,还是在“虚拟机设置”页中,每块虚拟网卡,都有3种选择,分别是VMnet0(桥接网络)、VMnet1(仅主机网络)与VMnet8(NAT网络)三种连接属性,还有一种是“不使用网络连接”,就是表明这块虚拟网卡,不连接到任何网络。下面分别介绍连接到VMnet1、VMnet8、VMnet0虚拟交换机时的网络属性。
【说明】(1)在VMware Workstation 6.0之后,新增加了“Team”功能,同时在“Team”中也增加了Team虚拟交换机。在Team中的虚拟机,除了可以使用VMnet0、VMnet1、VMnet8等虚拟交换机外,还可以使用Team中的虚拟交换机。
(2)VMware Workstation(或VMware Server),除了VMnet0、VMnet1、VMnet8虚拟交换机外,还可以创建(或添加)VMnet2~VMnet7、VMnet9等虚拟交换机,这些虚拟交换机的属性,可以在“仅主机网络”、“桥接网络”、“NAT网络”之间选择。
3.3 VMnet1、VMnet8、VMnet0虚拟网卡的关系
在VMware Workstation或VMware Server的虚拟机中,虚拟机之间、主机之间的网络关系可以参照图3-5所示的网络拓扑。
图3-5 虚拟机与主机网络拓扑
在图3-5中,虚拟机A11、A12、~、虚拟机A03等,是VMware Workstation(或VMware Server)创建的虚拟机。虚拟机A11、A12、A13使用VMnet1(仅主机网络)虚拟网卡,则在图3-5的网络拓扑中,“相当于”连接到VMnet1虚拟交换机;虚拟机A81、A82使用VMnet8虚拟网卡(NAT网络,则相当于连接到VMnet8虚拟交换机);虚拟机A01、A02、A03使用VMnet0虚拟网卡(桥接网络,相当于连接到VMnet0虚拟交换机)。
物理主机B,代表与物理主机A属于同一局域网内的其他一台或多台计算机。这里面的“同一局域网”,表示可以是同一子网(VLAN)的计算机,也可以是不同子网的计算机。
Internet计算机Z,代表Internet网络上的其他计算机或服务器,可以是一台或多台的计算机。
将图3-5的关系,画成网络拓扑的方式,如图3-6所示。
图3-6 简化后的网络拓扑
下面介绍各虚拟机之间与主机之间的网络关系。
当虚拟机选择使用VMnet1虚拟网卡时,表示这台虚拟机连接到VMnet1虚拟交换机。
VMnet1,官方定义“仅主机网络”,其默认的网络行为,只与主机或其他使用VMnet1虚拟网卡的虚拟机有网络连接。使用VMnet1虚拟网卡的虚拟机,不能访问与物理主机之外的其他计算机.
在图3-5(图3-6)中,虚拟机A11、A12、A13使用VMnet1虚拟网卡,表明连接到VMnet1虚拟交换机。在图3-5(图3-6)的网络拓扑中,虚拟机A11、A12、A13、物理主机A之间可以互相通讯。将图3-5(图3-6)中与VMnet1相关的计算机,简化成图3-7所示的拓扑。
图3-7 VMnet1虚拟网络拓扑图3-
深入理解:“可以互相通讯”,这句话表示,当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命令,检查这个虚拟机与主机能否互相通讯。
还要注意物理主机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)也是不能通讯的。
另外,还需要说明,虽然在“虚拟网络设置”中,设置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就可以互相通讯。
使用VMnet1虚拟网卡的计算机,不能访问外网,外网也不能访问VMnet1虚拟网卡的计算机。在图3-5(图3-6)的网络中,虚拟机A11、A12、A13与B、Z没有网络关系,它们不能互相访问。
如果虚拟机使用“桥接方式”,即VMnet0,则虚拟机相当于主机网络中的一台计算机,虚拟机如果选择VMnet0(或桥接网络),则通过“VMnet0虚拟交换机”连接到主机所属网络,这时与主机“VMnet0虚拟网卡”是否设置IP地址无关。
在图3-5(图3-6)的网络拓扑中可以看到,如果虚拟机A01、A02、A03使用VMnet0虚拟交换机,不管主机VMnet0虚拟网卡,是否设置了正确的IP地址、子网掩码与网关,只要A01、A02、A03设置了正确的IP地址、子网掩码、网关等参数,是可以访问主机之外网络上的其他计算机(例如B),以及Internet网络上的其他计算机(例如Z)。VMnet0虚拟机、虚拟网络拓扑如图3-8所示。
图3-8 VMnet0虚拟网络
其中B及Z,即可以是物理计算机,可以也是使用了VMnet0虚拟网卡的虚拟机。在图3-8中,使用VMnet0的虚拟机(A01、A02、A03)与物理主机A、B可以互相访问。
如果虚拟机使用VMnet8,则虚拟机可以通过主机网络,单向(从虚拟机到主机、外网)访问物理主机之外的网络,而主机以外的网络不能访问使用VMnet8的虚拟机。但这个的前提是,主机要能访问外网(或网络上的其他计算机),如果主机不能访问外网,则配置为VMnet8虚拟网卡的虚拟机,也不能访问外网。
将图3-5(图3-6)中与VMnet8的虚拟网络与虚拟机,简化成图3-9的方式。
图3-9 VMnet8虚拟网络
主机A的VMnet8虚拟网卡,连接到VMnet8虚拟交换机,VMnet8虚拟交换机连接到“虚拟路由器”,“虚拟路由器”再连接到“VMnet0虚拟网卡(也即主机物理网卡)”,并通过“VMnet0虚拟网卡”连接到“VMnet0虚拟交换机”,“VMnet0虚拟交换机”连接到主机物理网络。这也就表明,连接到“VMnet8虚拟交换机”的计算机(虚拟机或主机),需要通过“虚拟路由器”→“VMnet0虚拟网卡”→“VMnet0虚拟交换机”的方向连接到主机物理网络。
虚拟机A81、A82为物理机A上的连接到VMnet8虚拟交换机的虚拟机。则A81、A82可以访问A(双向互访),可以通过“虚拟路由器”单向访问虚拟机A01、A02、A03,并通过A单向访问A所属的网络上的其他计算机B,并可以单向访问Internet网络上的其他计算机Z。但A所属网络上的其他计算机及Internet网络上的其他计算机(默认情况下)不能访问A81、A82,所以说,这里的访问是“单向访问”。
上节所说的“默认情况”,是指在虚拟机上,启用NAT与DHCP服务并且虚拟机的IP地址是“自动获得IP地址与DNS情况下”,并且主机物理网卡,网络参数(IP地址、子网掩码、网关、DNS)设置正确的情况下。
在启用NAT与DHCP服务的情况下,虚拟机会自动获得合适的IP地址、子网掩码、网关与DNS。
如果虚拟机A81、A82没有设置为“自动获得IP地址与DNS地址”,但“手动”设置的IP地址、子网掩码和网关地址、DNS地址,与DHCP服务器分配的相似时,也是可以访问外网的。例如,在图3-5(图3-6)中,VMnet8虚拟交换机使用的是192.168.80.0/24网段,只要虚拟机设置了192.168.80.3~192.168.80.253的地址、子网掩码为255.255.255.0、网关地址为192.168.80.2,就可以访问A及网络上的其他主机。
如果物理网络上的其他计算机(例如B、Z),想要访问A81、A82,则应该通过“VMnet0虚拟交换机”→“VMnet0虚拟网卡”→“虚拟路由器”→“VMnet8虚拟交换机”到A81、A82,但“虚拟路由器”默认配置,是禁止“外网”访问“内网”,在这里,VMnet0虚拟网卡及VMnet0虚拟交换机所属的网络,属性“外网”,而“VMnet8虚拟交换机”所属网络,属于内网。
如果配置了这个“虚拟路由器”,例如,使用“端口映射”情况, Internet网络上的其他计算机,也是可以访问虚拟机A81、A82的。
前面介绍了使用同一种虚拟网卡的虚拟机与主机之间的关系,那么,在同一个物理主机中,使用不同虚拟网卡的虚拟机,它们之间是什么关系呢?
图3-10 虚拟网络拓扑图3-
从图3-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等,这都是很容易的事情。
VMnet8在默认情况下,不能访问VMnet1,可以通过虚拟路由器,单向访问VMnet0。如果VMnet8想要访问VMnet1,则像VMnet1访问VMnet8一样,在主机A上启用“路由器”或“Internet连接共享服务”。
3 VMnet0默认不能访问VMnet8、VMnet1
VMnet0默认情况下,不能访问VMnet1与VMnet8。如果要想访问VMnet8,除了启用“路由器”或“Internet连接共享外”,还可以通过配置“VMnet8”到“VMnet0”之间的“虚拟路由器”,进行端口映射的方式,访问VMnet8中的虚拟机。