本教程把VMware Workstation叫作虚拟机软件,把在该软件里创建的虚拟机叫作虚拟机。在安装VMware软件时,它会自动在我们的宿主机(物理机)上安装两块虚拟网卡(分别是VMware Network Adapter VMnet1和VMware NetworkAdapter VMnet8)这两块虚拟网卡并不是虚拟机的,而是我们真实的宿主机(物理机)上的网卡。
在真实的物理机上打开“网络连接”看看
然后启动某台虚拟机,比如我们安装了Windows7系统的这台虚拟机
开启了虚拟机后,也看看它的系统里有几块网卡
上图显示虚拟机里只有一块网卡,我们创建虚拟机的时候一般默认只给它分配了一张网卡。
好了,现在我们要让这台虚拟机能上互联网,怎么办?
用桥接模式试试,桥接模式是指把虚拟机里的网卡和宿主机(物理机)里的某个能上网的网卡桥接起来。什么是桥接,就是把两块网卡连在一台交换机上。这样就让虚拟机里的网卡A处于宿主机里的网卡B的网络环境中了,宿主机的那块网卡B能上网,虚拟机里的网卡A只要把IP设为和网卡B同一个网段的就也能上网了。如下图所示:
右击虚拟机的选项卡,点击“设置”
在虚拟机设置里选择“网络适配器”,选择“桥接模式”,确定。
然后,我们还不确定是桥接到宿主机的哪块网卡上了,因为宿主机的网卡比较多,虚拟机软件也不知道该把虚拟机里的网卡和宿主机的哪块网卡相连。
点击虚拟机软件左上角的“编辑”,选择“虚拟网络编辑器”
在弹出的下图中,点击右下角的“更改设置”
在VMnet信息下选中“桥接模式”,在“桥接到”那里选择要桥接到的宿主机的网卡。
我们选了一块能上网的网卡,如Wireless-AC3160这块无线网卡。然后点击确定。
再在宿主机上看一下这块网卡是什么网段的IP。
这块网卡(Wireless-AC3160)的IP地址是192.168.1.6,24位掩码,网关是192.168.1.1
因为这块网卡是自动获取IP的,所以虚拟机里的网卡可以不手动配置IP,也让它自动获取,看看能不能自动获取到IP地址。
上图表示虚拟机已经获取到IP了(是192.168.1.8)
验证一下能不能上网(经过验证是可以上网的,且与宿主机也是能互相通信的)
以上就是桥接模式的设置,然而桥接模式的原理并不是上面讲的那么简单,我们再回想一下,刚刚进行虚拟网络编辑时,是不是有个叫VMnet0的网卡(见下图)这块网卡并没有安装在我们的宿主机上,而是装在虚拟机软件虚拟出来的环境里,它充当这个虚拟环境的交换机。
以下才是桥接模式完整的原理图:
根据这个原理,我们可以在虚拟机软件里开启多台虚拟机,然后都使用桥接模式,它们(这些虚拟机)就能处于同一个vlan了。只要IP是同一个段的就能正常通信。
当然首先要确保虚拟机软件已经开启了网络连接
NAT模式
通过NAT模式也能让虚拟机上网,就是做个源NAT,把虚拟机的IP转换成宿主机的某块网卡的IP,通过那个IP(相当于防火墙的外网口IP)上网。
先上原理图:
在NAT模式下,是可以给虚拟环境里的虚拟机自动分配IP的,就是开启DHCP服务,本例中我们给虚拟机分配的网段为172.16.30.0/24
打开虚拟机设置,选择模式为“NAT模式”
NAT模式配置:打开“虚拟网络编辑器”点击右下角的“更改设置”,在虚拟网络编辑器里选中“NAT模式”进行配置。(如果弹出下图提示,说明已有其他网卡使用了NAT模式,这怎么办?)
仔细一看,原来是默认选了VMnet0这块网卡,它本来默认就是做桥接模式的,而VMnet8这块网卡是做NAT模式的,VMnet1是仅主机模式。
VMnet8已经做了NAT模式,所以不能再把VMnet0改成NAT模式。我们直接对VMnet8做配置。
选择VMnet8这块网卡,最下面的“子网IP”那里是虚拟DHCP服务器要分配给虚拟机的网段。
再点击“DHCP设置”可以进行DHCP配置,比如给虚拟机分配的起始IP和结束IP,还有租用时间。
配好DHCP设置后,点击确定,回到“虚拟网络编辑器”再点击“NAT”设置
上图中,“网关IP”其实是DHCP分配的网段的网关,就是虚拟交换机的管理IP了。只要是和DHCP分配的网段相同就行了。然后在上一步骤的DHCP设置里把该IP排除外就行。
在NAT设置里点击“DNS设置”,配置虚拟机的DNS 如下图:
这就已经配好了,但是我们还没有给NAT模式指定要连到宿主机的哪块网卡上呢,它没有这个选择,默认就和桥接模式下的宿主机的网卡相连(桥接模式那里我们是桥接到了Wireless-AC3160网卡上)
虚拟机软件的网络连接已经连上了,是NAT模式。
看一下虚拟机获取到了IP地址没 (前提是虚拟机的网卡要设成自动获取IP)
地址是拿到了,子网掩码也正确,默认网关和我们之前设置的一样。虚拟DHCP服务器的IP我们之前没有设置,看来是它自动分配了一个IP给自己。奇怪的是DNS服务器我们之前设置的是114.114.114.114,结果它分配的是默认网关的IP。看来是配置没有生效。不生效也没关系,因为它转换成宿主机的网卡IP后,宿主机的网卡上有DNS服务器的IP。
我们现在只开启了一台虚拟机,DHCP分配的起始IP是172.16.30.1,然而虚拟机获取的是172.16.30.2,那个172.16.30.1分配给谁了?
我们再看一下NAT模式的原理图
原来宿主机上还有一块网卡连上了虚拟环境里的虚拟交换机,所以虚拟DHCP服务器把172.16.30.1的IP分配给它了(VMware Network Adapter VMnet8这块网卡)
从上图来看,要想让虚拟环境里的虚拟机能上互联网,只要和一块宿主机的网卡相连就行了,为什么还要连接VM net8这块网卡呢?
因为VMnet8这块网卡不是用来让虚拟机上网的,而是让宿主机和虚拟机之间通信的。
现在让宿主机和虚拟机互ping一下,是可以通的。(要关闭防火墙功能)
如果在宿主机上禁用了VMnet8这块网卡,虚拟机是可以上互联网的,但宿主机就不能和虚拟环境里的虚拟机通信了。
这个VMware的NAT模式并不是很智能,它不能在虚拟机里tracert 查看经过了哪些跳数,TTL也都是128.
能与互联网通信就行了。
仅主机模式
仅主机模式是指把宿主机上的VMnet1这块网卡和虚拟环境里的虚拟交换机连在一起了,它们只要是同一个网段的IP就能通信。因为宿主机只是普通的PC,它的网卡收到数据包后是不会再进行转发了,所以仅主机模式下,虚拟环境里的虚拟机是上不了互联网的。
原理图如下:
在NAT模式下是一定要配置DHCP服务的,但在仅主机模式下可以不开启DHCP服务,也可以开启。
首先在虚拟机设置里选择“仅主机模式”
点击确认后,在虚拟网络编辑器里点“更改设置”
不开启虚拟DHCP服务器的话,就不勾选“使用本地DHCP服务将IP地址分配给虚拟机”
如果想开启的话,就勾选,然后按NAT模式下的配置来。不过仅主机模式下的DHCP不能给虚拟机分配默认网关,且虚拟DHCP服务器也不给VMnet1这块网卡分配地址。
本例中不开启DHCP服务。
虚拟机软件的网络连接连上了,我们到虚拟机里给它手动配一个IP
比如192.168.20.1/24
然后宿主机上的VMnet1这块网卡设成同一个网段的,比如192.168.20.2/24
然后互ping一下,可以通信。
仅主机模式下,虚拟机是不是真的没办法上互联网了呢?
我们想想办法,把宿主机上能上互联网的网卡共享给VMnet1这块网卡就行了。打开能上网的网卡的属性框
上图中点击“共享”选项卡,勾选“允许其他网络用户通过此计算机的Internet连接来连接”
一块能上网的网卡只能共享给其他另一块网卡,所以如果有多块网卡,是要再选择“家庭网络连接”,选择要共享给的网卡,这里把无线网卡的网络共享给VMnet1这块网卡。
弹出以下提示,LAN适配器是指要共享给的那块网卡(VMnet1),它的IP地址会被设置为192.168.137.1
所以虚拟机的网卡IP也要设成192.168.137.0/24段的,而且虚拟机的网关必须设成VMnet1的IP(192.168.137.1)DNS服务器也要设置,一般就设成网关的IP,以下是虚拟机的设置
这样仅主机模式下的虚拟机也能上互联网了,它的原理和NAT是一样的,只不过不是在VMware这个软件里的虚拟环境里进行NAT转换,而是在宿主机的Windows系统下进行源NAT转换,而且这个NAT转换比VMware虚拟机环境里的NAT转换要智能一点,虚拟机里能tracert 查看经过了哪些跳数,且DNS服务器可以设成除网关以外的DNS服务器IP。