遇到问题

问题描述

在虚拟机启动web服务器后,无法在宿主机浏览器访问。

排查步骤

  1. 查看虚拟机网络连接模式:采用NAT模式

虚拟机与主机网络设置 虚拟机与主机网络连接_linux

  1. 查看虚拟机网卡及IP配置

虚拟机与主机网络设置 虚拟机与主机网络连接_linux_02

虚拟机与主机网络设置 虚拟机与主机网络连接_虚拟机与主机网络设置_03

虚拟机与主机网络设置 虚拟机与主机网络连接_虚拟机与主机网络设置_04

  • IP:192.168.1.132
  • 子网掩码:255.255.255.0
  • 默认网关:192.168.1.2
  1. 查看宿主机网卡及IP配置:ipconfig

虚拟机与主机网络设置 虚拟机与主机网络连接_虚拟机与主机网络设置_05

  • IP:192.168.1.2
  1. 虚拟机ping主机,可以ping通

虚拟机与主机网络设置 虚拟机与主机网络连接_服务器_06

  1. 主机ping虚拟机,ping不通

原因分析

可能是因为 VMware Network Adapter VMnet8 网络适配器IP设置不对,与虚拟机IP没在同一个网段。

win+R,输入cmd打开命令行窗口,输入ipconfig 可以看到 VMware Network Adapter VMnet8 的IP,子网掩码和默认网关

这里我的VMware Network Adapter VMnet8 的IP显然与虚拟机的IP不在同一网段

解决方法

我们修改VMware Network Adapter VMnet8的配置(或者改成自动获取也可以):

虚拟机与主机网络设置 虚拟机与主机网络连接_linux_07

验证结果

尝试从宿主机ping虚拟机,可以看到能够ping通:

虚拟机与主机网络设置 虚拟机与主机网络连接_虚拟机与主机网络设置_08

在虚拟机中启动web服务器Nginx,在宿主机浏览器访问虚拟机IP,可以正常看到Nginx的欢迎页:

虚拟机与主机网络设置 虚拟机与主机网络连接_服务器_09

一句话总结:NAT模式下,将VMware Network Adapter VMnet8的IP改为与虚拟机IP同一网段即可。

VMware网络模式

VMWare提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式。

打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),那么这些都是有什么作用呢?其实,我们现在看到的VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。


虚拟机与主机网络设置 虚拟机与主机网络连接_linux_10

同时,在主机上对应的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,它们分别作用于仅主机模式与NAT模式下。在“网络连接”中我们可以看到这两块虚拟网卡,如果将这两块卸载了,可以在vmware的“编辑”下的“虚拟网络编辑器”中点击“还原默认设置”,可重新将虚拟网卡还原。

虚拟机与主机网络设置 虚拟机与主机网络连接_linux_11

看到这里,肯定有疑问,为什么在真机上没有VMware Network Adapter VMnet0虚拟网卡呢?接下来一起来看一下这是为什么。

Bridged(桥接模式)

在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器

在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。

使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。

如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。

什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。其网络结构如下图所示:

虚拟机与主机网络设置 虚拟机与主机网络连接_虚拟机与主机网络设置_12

host-only(主机模式)

在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的

提示:在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。

在host-only模式下,虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由**VMnet1(host-only)**虚拟网络的DHCP服务器来动态分配的。

如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。

Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:

虚拟机与主机网络设置 虚拟机与主机网络连接_服务器_13

通过上图,我们可以发现,如果要使得虚拟机能联网,我们可以将主机网卡共享给VMware Network Adapter VMnet1网卡,从而达到虚拟机联网的目的。

NAT(网络地址转换模式)

使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。

NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。

如果你想利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。

如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。其网络结构如下图所示:

虚拟机与主机网络设置 虚拟机与主机网络连接_网络_14

在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡VMware Network Adapter VMnet8呢?原来我们的VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信

总之,NAT模式就是利用虚拟的NAT设备以及虚拟DHCP服务器来使虚拟机连接外网,而VMware Network Adapter VMnet8虚拟网卡是用来与虚拟机通信的。

以上所提到的NAT模式下的VMnet8虚拟网络,host-only模式下的VMnet1虚拟网络,以及bridged模式下的VMnet0虚拟网络,都是由VMWare虚拟机自动配置而生成的,不需要用户自行设置。VMnet8和VMnet1提供DHCP服务,VMnet0虚拟网络则不提供。