VMware 虚拟机的三种网络连接方式

如上图所示,VMware Workstation Player 有三种常用的网络连接方式,分别是桥接模式NAT 模式仅主机模式。当安装好一个虚拟机却发现网络不通的时候,通常是这里的网络连接方式选择有错误。接下来来看看这些连接方式分别是什么意思。

虚拟网卡

在安装好 VMware 后,你有可能会在 Win10 的适配器选项中看到多了好几个适配器,如下图所示:

其中 VMware Network Adapter VMnet1VMware Network Adapter VMnet8 都是 VMware 创建出来的用于和虚拟机通信的虚拟网卡。其中,VMware Network Adapter VMnet1 用于和仅主机模式下的虚拟机通信,VMware Network Adapter VMnet8 用于和 NAT 模式下的虚拟机通信。

桥接模式

当你的虚拟机网络连接方式设置为桥接模式的时候,虚拟机会使用主机的物理网卡来联网。假如你有多张网卡那具体使用哪一张呢?可以在桥接模式选项的旁边看见一个配置适配器的按钮:

在弹出的选项中选择要使用的网卡即可。这些选项默认是全部勾选的,如果你只有一张物理网卡的话,应该全勾选也没啥影响。

如果你在上图发现没有自己的物理网卡的话,你可能需要去点开物理网卡的属性,然后看看下图的选项是否勾上了:

当虚拟机配置为桥接模式的时候,它此时就相当于一个连在物理主机所在局域网的普通主机。也就可以简单地理解为虚拟机和物理主机此时在同一个集线器下。此时虚拟机可以轻松的访问该局域网中的网络资源,如文件服务器、打印机、网关等。同样物理主机和其他配置为桥接模式的虚拟机也可以使用这个虚拟机提供的网络服务。

当虚拟机配置为桥接模式,它必须有网络中唯一的IP地址。局域网中的主机通常通过DHCP服务器来获得IP地址和其他网络细节,在普通家庭中这个DHCP服务器就是你的路由器。也就是说,正常情况下处于该模式的虚拟机不需要任何额外的配置就可以正常联网。

在博客第一张图中可以看到,桥接模式下还有一个复制物理网络连接状态的选项。如果你使用的是移动端主机通常也就是笔记本的话,这个最好勾选。这个选项的含义是,当物理主机的网络环境发生变化时,例如连接另一个 WiFi 的时候,自动更新虚拟机的 IP 地址。啥意思呢,我做了一个小实验,没有选中复制物理网络连接状态这个选项。首先我的笔记本连接的是我家路由器的WiFi,此时路由器分配的地址池处于 192.168.0.0/24 这个网段,我的虚拟机分配到的IP地址是 192.168.0.104。然后把笔记本从 WiFi 切换到手机热点,此时发现分配的地址池变成了 192.168.34.0/24 这个网段,我的物理主机此时已经成功地获得了新的IP地址,但我发现虚拟机的 IP 居然还是 192.168.0.104,所以这时候虚拟机当然连不上网。而当我勾选了复制物理网络连接状态,虚拟机的 IP 就成功地更新到了 192.168.34.108,网络通畅。

NAT 模式

先吐槽一下 VMware ,我居然找到了两篇介绍 NAT 模式的文档,分别是 https://docs.vmware.com/en/VMware-Workstation-Player-for-Windows/15.0/com.vmware.player.win.using.doc/GUID-37EA4A9D-DE43-4159-8982-2DFD9D5959AD.htmlhttps://docs.vmware.com/en/VMware-Workstation-Player-for-Windows/15.0/com.vmware.player.win.using.doc/GUID-89311E3D-CCA9-4ECC-AF5C-C52BE6A89A95.html 。这两篇文档的标题、日期、对应的软件版本完全相同,但内容却不尽相同,在此推荐看第二篇,会对 NAT 模式有更准确的理解,不知道 VMware 是什么鬼,写文档写岔了?

首先,当虚拟机配置为 NAT 模式的时候,正如其名,相当于 VMware 在主机内部建立了一个 NAT 网络(VMnet8)。而虚拟机运行在这个 NAT 网络内部,其发送的流量的源 IP 会被 NAT 设备转换成主机物理网卡的 IP ,所以在物理主机外部看来这里只有一个 IP 地址,也就是只有一个主机。

下面看一张 NAT 模式的示意图:

可以看到,VMware 建立了一个 NAT 网络,并在网络中虚拟出了一些设备,例如为这个网络分配 IP 地址的 DHCP 服务器,虚拟机,以及最重要的 NAT 设备,这些设备相当于连接在一个虚拟的交换机上。虚拟机有自己的虚拟网卡用于通信。而 NAT 设备同样有一张虚拟网卡用于接收网络内所有向外的流量,即充当这个网络的网关。NAT 设备同时会共享主机的物理网卡,其会将网络内对外的数据包的源 IP 修改为物理网卡的 IP ,然后用物理网卡将这些数据包发送出去,从而完成 NAT 的功能。

文章最开始说到 VMware 为物理主机建立了一张虚拟网卡 VMware Network Adapter VMnet8 用于和 NAT 模式下的虚拟机进行通信。在这里ji相当于这张虚拟网卡也连接在上图的交换机中。要明确这张虚拟网卡的唯一作用就是让主机可以和这些虚拟机通信。而这张网卡并不属于 NAT 设备,也不会发挥 NAT 的功能(这点文档中没有提到,是我在别处看到的。为了证明这点,你可以把 VMware Network Adapter VMnet8 禁用,然后就会发现虚拟机仍然可以正常上网,只是此时主机无法和虚拟机通信)。而且 VMware 给 VMware Network Adapter VMnet8 的默认 IP 通常是 192.168.x.1 ,而虚拟机的默认网关会自动配成 192.168.x.2 ,这也侧面说明了 VMware Network Adapter VMnet8 并不是 NAT 设备的网卡。特意提到这点是为了防止对 VMware Network Adapter VMnet8 虚拟网卡的作用产生误解。

在默认配置中,物理主机的外部网络中的系统无法发起对虚拟机的连接,这自然是因为 NAT 屏蔽了这个局域网的存在信息。例如,默认配置不允许将虚拟机用作 Web 服务器向外部网络中的系统发送 Web 页面。

使用新建虚拟机向导创建虚拟机时,默认使用 NAT 模式。

NAT 模式相较于桥接模式还有一个好处,即可以永久固定虚拟机的 IP 地址。由桥接模式的特性我们知道,只要我们切换网络,而新网络的 DHCP 服务器分配的地址池和之前的不同,则虚拟机的 IP 地址肯定会发生变化。而对于 NAT 模式,NAT 出来的网络不受外部网络环境的影响,只要你自己不改则地址池永远也不会变,所以只需要在虚拟机内部配上静态 IP 就可以让 IP 地址永久固定。这对于喜欢用 SSH 连接虚拟机的用户非常有用。

仅主机模式

当虚拟机配置为仅主机模式时,VMware 创建了一条连接虚拟机和物理主机中的 VMware Network Adapter VMnet1 虚拟网卡的 VPN 连接。这意味着此时虚拟机和该虚拟网卡共处在一个新的局域网中,而且其他配置成仅主机模式的虚拟机也在这个局域网中。VMware 虚拟 DHCP 服务器为其中的虚拟机提供 IP 地址。

这个局域网在主机外部并不可见,并且默认与外部的物理网络相互隔绝,也就是说默认情况下这个模式下的主机并不能联网。

在 Windows 上,你可以使用 Internet 连接共享功能为这个模式的虚拟机提供网络连接。

Last modification:February 13th, 2020 at 11:11 pm