VMware虚拟网络详解
VMware有三种网络模式,分别是:
- 桥接模式:虚拟机能够与宿主机以及宿主机外部的网络(例如互联网)通信
- 仅主机模式:虚拟机只能与宿主机或者同样处于仅主机模式的虚拟机通信
- NAT模式:虚拟机与宿主机、宿主机外部的网络(例如互联网)、同处与NAT模式下的虚拟机都能通信

注:
- 上面描述的都是默认配置的情况。
- 为了方便理解,本文所涉及到的桥接模式所桥接的网卡都是桥接到宿主机的上网卡(例如笔记本的无需网卡、台式机的以太网网卡)。实际上默认情况下桥接的也就是宿主机的上网卡。
- 本文中只阐述三种模式中VMware初始就有的三个的虚拟网卡和交换机(VMnet0、VMnet1、VMnet8),不涉及网络中含有其它自定义网卡的情况。
桥接模式
在桥接模式下,宿主机和虚拟机相当于连接到了同一个交换机上,他们直接能够互相通信。
虚拟机就像一个真实的机器一样,可以连接到路由器(或手机热点)获取到IP地址,从而访问互联网。
桥接模式的逻辑拓扑图如下图所示(注意这只是为了方便理解画的逻辑拓扑,实际的网络结构并不是这样,下同)

桥接模式的优缺点
优点:能够最大程度(网络层面)的模拟真实机器
- 桥接模式下的虚拟机拥有属于自己的MAC地址和IP地址,能够和真机一样连接到路由器或者手机热点,从外部看来,这台虚拟机就像真的一样
缺点:部分网络环境下不适用
-
由于虚拟机和宿主机使用的是同一个物理网卡,所以在部分情况(例如校园网)环境下可能无法获得IP地址或者无法上网。
-
以校园网为例,部分校园限制一个网口多个MAC导致虚拟机无法上网;或者使用虚拟机连接到校园网后,还需要在虚拟机中登录校园网账号才能上网
故障排查思路
通过之前的拓扑图我们可以得知,宿主机和虚拟机由于在同一个网段,所以直接通过虚拟交换机VMnet0就进行转发了,数据包在电脑内部就实现了转发,不会涉及到路由器。
所以如果宿主机与虚拟机之间无法进行通信时我们只需要检查:
- 虚拟机的IP地址是否和宿主机(物理网卡)在同一个网段
- 虚拟机的IP地址是否与宿主机(物理网卡)的IP地址冲突
如果上面两点没问题,那么问题大概率问题就是出现在虚拟机、宿主机的防火墙上了。
如果虚拟机无法访问互联网,那么排查思路是:
- 排查宿主机本身是否能够正常访问互联网
- 排查虚拟机的网关是否配置正确(正确配置应为路由器地址【与宿主机的网关一致】),如果是DHCP方式自动获取IP的,这一点可以忽略
- 排查是否是路由器限制了虚拟机访问互联网(可以将WiFi切换为手机热点进行测试,如果电脑没有无线网卡,可以使用数据线连接手机和电脑共享手机网络)
仅主机模式
仅主机模式下,(默认配置时)虚拟机只能访问宿主机以及同样处于仅主机模式下的虚拟机,无法访问到宿主机外部的网络(例如互联网)
虚拟机和宿主机相当于连接在同一个交换机上,通过交换机转发,虚拟机与宿主机、虚拟机与虚拟机之间都能够互相通信。
其逻辑拓扑图如下:

由于该模式下虚拟机无法访问互联网,所以我们可以简化为这样

宿主机通过虚拟网卡VMnet1连接到虚拟交换机VMnet1来实现与虚拟机的通信
排查思路
当我们发现宿主机与虚拟机无法通信时,就可以优先排查:
- 宿主机中虚拟网卡VMnet1是否被禁用(查看和编辑网卡的方法见文章末尾)
- 宿主机的IP地址是否和虚拟网卡VMnet1的IP地址在同一个网段(正确结果:在同一个网段)
- 虚拟机的IP地址是否与虚拟网卡VMnet1的IP地址冲突,或者与其它虚拟机的IP地址冲突(正确结果:没有冲突)
如果以上几点都没有错误,那么基本上就能够定位到是宿主机或者虚拟机防火墙的问题。
NAT模式
NAT模式中涉及到了一个概念:NAT(网络地址转换),如果你理解这个协议,那么你可能会很容易理解该模式的作用。
如果你不知道NAT是什么,那么你就记住:下图中的NAT服务器的作用是实现虚拟机与外部网络之间互相通信就可以了。
NAT模式和仅主机模式很相似,他们的区别在于,仅主机模式下的虚拟机不能和外部网络通信,而NAT模式可以。
这其中起到关键作用的就是NAT服务器,它使得虚拟机能够访问到外部网络。
下图是NAT模式的逻辑拓扑

为了方便理解,我将其拆分为两种场景:
场景一:宿主机与虚拟机之间互相通信
在当前场景下,宿主机通过虚拟网卡(或网络适配器)VMnet8连接到虚拟交换机上,通过交换机转发,使得宿主机与虚拟机、虚拟机与虚拟机之间能够互相通信。

该场景下的网络拓扑和通信方和与仅主机模式类似,只不过宿主机连接虚拟交换机的虚拟网卡变为了VMnet8。

同样的,如果在NAT模式下发现宿主机与虚拟机之间无法通信,排查方法也和仅主机模式类似,只不过排查的虚拟网卡变成了VMnet8
场景二:虚拟机与外部网络通信
在该场景下,虚拟机需要先访问NAT服务器,借助NAT服务器才能访问到外部网络

排查思路
在该场景下,发现虚拟机无法访问外部网络时应该如何排查呢?
为了方便理解,我们可以将这个NAT服务器看成是一个路由器,虚拟机的网关地址就是这个这个NAT服务器(或者说路由器)的地址,通过这个路由器,虚拟机实现了外部网络的访问
那么排查思路也就清晰了:
- 排查宿主机能否访问外部网络
- 查看VMware的NAT服务是否启用(真确结果:启用且正在运行)
- 排查虚拟机的IP是否和NAT服务器在同一个网段(正确结果:在同一网段)
- 排查虚拟机的IP是否和NAT服务器的IP地址冲突,或者与其它虚拟机的IP地址冲突(正确结果:没有冲突)
- 排查虚拟网卡VMnet8的IP地址是否和NAT服务器的IP地址冲突(这个最容易忽略!正确结果:没有冲突)
- 排查虚拟机的网关地址是否就是NAT服务器的地址(正确结果:是)
下面介绍一下如何查看NAT服务器状态以及NAT服务器的IP地址
查看NAT服务是否启用
按win+R打开运行窗口,输入services.msc,然后回车,打开服务界面

找到VMware开头的服务,确保下图中这4项服务都启用,且状态为正在运行
下图中名称为VMware NAT Service的服务其实就是前文中说到的NAT服务器,实际上它就是一个服务,用来实现地址转换,让虚拟机能够访问到外部网络。

查看NAT服务器的IP地址
接下来介绍一下如何查看NAT服务器的地址
在VMware中打开虚拟网络编辑器

点击VMnet8这条选项,在点击NAT设置。如果需要更改配置,那么需要先点击右下角的”更改设置“才能编辑

这里的网关IP就是之前拓扑图中的NAT服务器的IP地址,虚拟机中的网关地址就需要设置为这个

查看和编辑虚拟网卡
以VMnet8为例。
Windows搜索网络连接,并打开

在网络连接中可以看到,前文中提到的网卡。
右键VMnet8网卡,打开属性面板

属性面板中双击IPv4选项

在这里就可以编辑网卡的配置
如果是VMware默认的配置模式,那么这里是不会显示IP和掩码之类的信息的。
默认情况下,该网卡是使用“自动获得IP地址”这个选项,通过DHCP自动获取IP网关等信息。
如果你的VMnet8的网卡的IP是自动获取的,但是还是出现无法访问虚拟机或者虚拟机无法上网的情况
那么也有可能是你虚拟机设置的IP地址刚好和VMnet8(或NAT服务器)自动获得的地址冲突了,可以更改虚拟机的IP地址再尝试。
一般情况下,VMnet8网卡会自动分配到192.168.X.1的地址,NAT服务器会分配到192.168.X.2的地址

示例配置
待补充(该部分通过查看各网卡和虚拟机的配置,讲对应的配置标注到拓扑图中,直观展示VMware虚拟机网络的拓扑情况)
总结
最后,总结一下,三种模式各自的特点
- 桥接模式:它能够最大程度的模拟真机,相当于宿主机的分身,它和宿主机在同一个局域网中,所以能够访问宿主机和外部网络
- 仅主机模式:该模式下虚拟机之间、虚拟机和宿主机之间能够互访,但是虚拟机不能访问外部网络
- NAT模式:在仅主机模式的基础上,新增虚拟机能够访问外部网络的功能
参考来源
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
Chuang Blog