0. 序

VMware Workstation(以下简称VMware)是一款非常强大的虚拟机软件,每个爱折腾的开发者的电脑里面或多或少都有几个虚拟机。在使用虚拟机的过程中,我发现很多同学都和我一样,被VMware的网络配置困扰着,比如说:

  1. 桥接、NAT、仅主机三种网络接入方式,到底该选哪个
  2. 主机又 ping 不通虚拟机了
  3. 虚拟机上不了网了
    ...

为了解决这些困惑,我决定打破砂锅问到底,在网上查阅了大量资料之后,总算把VMware的网络配置理顺了,在这篇文章中,我将向大家分享我所理解的VMware网络配置。

1. VMware的网络组件

网络组件是构成网络的基础元素,生活中常见的网络组件有路由器、交换机、集线器、网线等。那么VMware为我们提供了哪些基础的网络连接组件呢?从
Vmware的官方文档 可以得知:VMware 中的虚拟网络连接组件包括虚拟交换机、虚拟网络适配器、虚拟 DHCP 服务器和 NAT 设备。如果大家对这几种设备对应的物理网络不了解,建议先去补补计算机网络的基础知识再来看接下来的内容。

1.1 虚拟交换机

与物理交换机相似,虚拟交换机也能将网络连接组件连接在一起。虚拟交换机又称为虚拟网络,其名称为 VMnet0、VMnet1、VMnet2,以此类推。有少量虚拟交换机会默认映射到特定网络。

Workstation Pro 可根据需要创建虚拟交换机,最多能在 Windows 主机系统上创建 20 个虚拟交换机,在 Linux 主机系统上创建 255 个虚拟交换机。您可以将任意数量的虚拟网络设备连接到 Windows 主机系统的虚拟交换机,最多将 32 个虚拟网络设备连接到 Linux 主机系统的虚拟交换机。

1.2 虚拟网络适配器

网络适配器,就是我们平时说的网卡,只不过它是 VMware 虚拟出来的,但是功能却是不折不扣,在使用新建虚拟机向导创建新的虚拟机时,向导会为虚拟机创建一个虚拟网络适配器。虚拟网络适配器在客户机操作系统中显示为 AMD PCNET PCI 适配器或 Intel Pro/1000 MT 服务器适配器。在 Windows Vista、Windows 7 和 Windows 8 客户机操作系统中显示为 Intel Pro/1000 MT 服务器适配器。
Workstation 6.0 及更高版本的虚拟机最多可以有 10 个虚拟网络适配器。Workstation 5.x 虚拟机仅支持 3 个虚拟网络适配器。

1.3 虚拟网桥设备

与物理网桥相似,虚拟网桥用于连接两个物理网络,VMware 提供的VMware Bridge Protocol 实现了这一功能,当我们选择桥接模式时,该虚拟网桥为虚拟网络适配器提供了访问物理网络的能力。

1.4 虚拟 DHCP 服务器

虚拟动态主机配置协议 (DHCP) 服务器可在未桥接到外部网络的配置中向虚拟机提供 IP 地址。例如,虚拟 DHCP 服务器可在仅主机模式和 NAT 配置中向虚拟机分配 IP 地址。

1.5 虚拟 NAT 设备

NAT(Network Address Translation)设备相信大家都很熟悉,我们平时用的路由器基本上都是一个NAT设备,用于为局域网内的计算机提供外网访问能力。VMware NAT 配置中的 NAT 设备可在一个或多个虚拟机以及外部网络之间传送网络数据,识别用于每个虚拟机的传入数据包,并将它们发送到正确的目的地。

2. 桥接模式

2.1 桥接模式的原理

vmnet-bridge

图 2-1 桥接模式拓扑图

上图是我参照 VMware 官方文档绘制的桥接模式下的 VMware 网络拓扑图。

桥接,所谓的'桥',就是指图 2-1 中的网桥设备,亦即 VMware 提供的虚拟网桥设备。此图展示的是只有一台虚拟机桥接的情况:虚拟机的虚拟网络适配器连接到虚拟网络交换机上,然后虚拟网络交换机通过网桥设备连接到宿主机的网络适配器,这样,虚拟机就可以通过宿主机的网络适配器收发网络数据包了。

2.2 桥接模式的配置

从图 2-1 可以看出,桥接模式使用到的网络组件有

  • 虚拟网络适配器
  • 虚拟网络交换机
  • 网桥
  • 主机网络适配器

接下来,我们就以这几个网络组件为线索,看看配置桥接模式的网络的具体步骤,以及每一个步骤的意义。

2.2.1 实验环境
  • 宿主机操作系统:Windows 10
  • 虚拟机软件:VMware Workstation pro 12
  • 虚拟机操作系统:Windows XP
2.2.2 选择桥接网络
2.2.2.1 使用默认桥接网络

使用默认桥接网络的步骤如下:

  1. 依次打开菜单 '虚拟机' -> '设置'
  2. 选择一个网络适配器(可能有多个)

可看到如图 2-2 所示的窗口:

vmnet-bridge-conf-step1

图 2-2 默认桥接模式配置

注意,网络适配器可能有多个,因为你有可能为虚拟机分配了多个虚拟网络适配器。我们选中一个网络适配器,可以看到当前网络连接模式为 NAT,再从窗口右侧栏选择桥接模式,复制物理网络连接状态是自己情况而定,桥接模式默认使用的虚拟交换机是 VMnet0。最后点击确定,即可应用生效。

2.2.2.2 自定义桥接网络

自定义桥接网络的步骤如下:

  1. 依次选择 '虚拟机' -> '设置' -> '网络适配器' 菜单
  2. 然后选择自定义,点击下拉选择框

可看到如图 2-3 所示的窗口:

vmnet-bridge-conf-step1-2

图 2-3 自定义桥接网络

如 1.1 节所述,虚拟交换机一共有 20 个,所以在这里的下拉框中一共可以看到 20 个可供选择的虚拟网络,注意,这 20 个网络并不都是桥接模式,默认情况下只有 VMnet0 是桥接模式,VMnet1 是仅主机模式,VMnet8 是 NAT 模式,其余网络默认都是仅主机模式。所以,在未经过任何配置的情况下,你如果想使用桥接网络,只能选 VMnet0。当然,这些都是可以改变的,对于每一个网络的模式我们都可以进行编辑。这个在后面的章节中,我将展开来讲解。

2.2.3 选择桥接网卡

我做实验用的台式机有两张网卡,一张有线网卡,一张无线网卡,确定了将我们的虚拟机连接到哪个虚拟网络(虚拟交换机)之后,我们接下来的任务就是要确定将虚拟交换机连接到宿主机的哪一张网卡上。

  1. 依次选择 '编辑' -> '虚拟网络编辑器'
  2. 选择要编辑的桥接网络,我选的是 VMnet0
  3. 在 'VMnet信息' 栏中选择桥接模式
  4. 点击下拉框,我们看到的就是宿主机所有的网络适配器了,根据自己需求选择一个即可

vmnet-bridge-conf-step1-3

图 2-3 编辑桥接网络

这里有几个值得注意的地方:

  • 宿主机的每个网络适配器只能桥接到一个虚拟网络上
  • 宿主机的网络适配器需运行 VMware Bridge Protocol 。 检查方式如下:打开'网络和共享中心' -> 点击'更改网络适配器设置' -> 右键点击目标网络适配器 -> 选择'属性', 确保 VMware Bridge Protocol 被勾选:

图 2-4 开启VMware桥接协议
2.2.4 添加桥接网络

到目前为止,我们使用的桥接网络都是 VMnet0, 在这一节中,我将演示如何新增一个桥接网络。

2.2.4.1 添加虚拟网络
  1. 依次选择 '编辑' -> '虚拟网络编辑器'
  2. 可以看到,目前只有三个默认的网络VMnet0、 VMnet1 和 VMnet8,它们分别对应桥接模式、仅主机模式和 NAT 模式默认使用的网络,点击'添加网络'按钮
  3. 选择要添加的虚拟网络,点击确定就可以在网络列表中看到添加的虚拟网络了

图 2-5 添加虚拟网络
2.2.4.2 设置虚拟网络为桥接模式

选中上一小节添加的虚拟网络(我选的VMnet19), 我们可以看到下方的 VMnet 信息指明它目前的模式为仅主机模式,现在我们只需选中桥接模式,接下来的设置步骤就与 2.2.3 节一样了。

2.2.5 设置虚拟机IP
  • DHCP
    如果宿主机所接入的物理网络有一个 DHCP 服务器的话,可以直接将虚拟机的IP获取方式设置为自动获取。
  • 手动设置
    如果没有 DHCP 服务器,一般情况下,为了方便与宿主机通信,设置一个与宿主机在同一网段的IP,但是这不是必须的。

3. NAT 模式

3.1 NAT 模式的原理

vmnet-nat

图 3-1 NAT 模式拓扑图
  • 虚拟机首先通过虚拟适配器连接到虚拟网络交换机上
  • 虚拟 NAT 设备连通虚拟网络交换机和宿主机的物理网络适配器,这样,虚拟机的网络适配器和宿主机的网络适配器就处于两个IP网络中了,我们姑且分别称之为内网和外网
  • 虚拟 DHCP 服务器为可选项,如果有的话,它将为内网机器(虚拟机)动态分配IP地址
  • 宿主机的虚拟网络适配器也是可选项,它可以方便主机与虚拟机直接通信
  • 最后,物理网络适配器连接到真实网络,这样,虚拟机就间接地与物理网络连通了

注:NAT设备的原理和作用此处不作赘述,有兴趣的朋友可参考维基百科:网络地址转换(NAT)

以上的原理描述比较抽象,下面,我通过具体的配置步骤让大家更好地认识 NAT 模式。

3.2 NAT 模式的配置

从图 3-1 可以看出,NAT 模式涉及到的网络组件比较多,有:

  • 虚拟网络适配器
  • 虚拟网络交换机
  • 虚拟 NAT 设备
  • 虚拟 DHCP 设备
  • 物理网络适配器

下面,我依然以这些网络组件为线索来为大家讲解 NAT 模式的配置。

3.2.1 实验环境
  • 宿主机操作系统:Windows 10
  • 虚拟机软件:VMware Workstation pro 12
  • 虚拟机操作系统:Windows XP
3.2.2 选择 NAT 网络
3.2.2.1 使用默认 NAT 网络

使用默认桥接网络的步骤如下:

  1. 依次打开菜单 '虚拟机' -> '设置'
  2. 选择一个网络适配器(可能有多个)
  3. 点选'NAT 模式',确定
3.2.2.2 使用自定义 NAT 网络

步骤同 2.2.2.2,如果之前没有经过任何配置,此处只有 VMnet8 是 NAT 模式。

3.2.3 编辑 NAT 网络
  1. 依次选择 '编辑' -> '虚拟网络编辑器'
  2. 选择要编辑的桥接网络 VMnet8
图 3-2 编辑 NAT 网络

请注意途中VMnet信息设置栏中的几个红框标记的地方(为方便引用,对每个红框进行了编号),这里涉及到 NAT 模式的一些细节设置,下面我将详细介绍一下:

  • 子网设置
    红框1所标注的地方可以对 NAT 的内网的网络号和网络掩码进行配置

  • NAT设置
    点击红框2所标注的按钮'NAT设置',将会弹出如图 3-3 所示的对话框,在这个对话框中,我们可以配置 NAT 内网的网关 IP,其实这就是分配给 NAT 的内网口的 IP 地址;可以添加自定义的 NAT 端口映射规则;还可以设置 DNS 服务器的地址

图 3-3 NAT设置窗口
  • 将主机虚拟适配器连接到此网络
    如果勾选了此选项,我们在宿主机的网络连接界面('网络和共享中心'->'更改适配器设置')可以看到一个名为 VMware Network Adapter 的虚拟网络适配器连接到了 VMnet8 网络(图 3-4)。
    如果未勾选此选项,则不会看到这个网络连接(图 3-5)
图 3-4 主机虚拟适配器连接到 VMnet8

图 3-5 主机虚拟适配器未连接到 VMnet8
  • 使用本地DHCP服务将IP地址分配给虚拟机
    如果勾选了此选项,其右侧的'DHCP设置'也将被启用。这个选项的作用是启用宿主机的 DHCP 服务,为 NAT 内网的虚拟机动态分配IP地址,如果关闭的话,虚拟机将不能使用自动获取 IP 功能。我们可以从宿主机的服务列表中找到此服务:
图 3-6 VMware DHCP Service
  • DHCP 设置
    点击'DHCP设置'按钮,将会弹出一个 DHCP 服务的配置窗口,主要用于配置动态 IP 池的范围以及租期。
3.2.4 配置结果

首先,将虚拟机的 IP 和 DNS 获取方式设置为自动获取,然后运行ipconfig /all命令看看虚拟机的网络配置,如图 3-7 所示:

图 3-7 ipconfig /all

可以看到,图中的各项参数与上文所描述的完全吻合。最后,我们来看看实验最后的 NAT网络拓扑结构:

图 3-8 实验NAT网络拓扑

4. 仅主机模式

直接上图!

图 4-1 仅主机模式拓扑图

不难看出,仅主机模式其实基本上和 NAT 模式一样,只是少了一个虚拟 NAT 设备,所以,仅主机模式的虚拟机只能和同一网络的虚拟以及宿主机通信,却不能访问外部网络(就是图左下角的那一坨云),具体配置步骤参照 NAT 模式即可。

5. 总结

VMware 提供了强大的网络虚拟功能,几乎能模拟所有的网络实验环境,本文较透彻地分析了三种网络接入模式,其中肯定有错误或不准确的地方,希望大家多多批评指正。

参考