VMware中的三种虚拟网络模式详解

 更新时间:2024年11月30日 11:41:20   作者:猩猿亿码  
文章介绍了虚拟机联网的桥接模式、NAT模式和仅主机模式,并详细讲解了如何配置这些模式以实现主机和虚拟机之间的网络通信

虚拟机联网方式为桥接模式,这种模式下,虚拟机通过主机的物理网卡,直接连接到主机所在的网络当中。

具体效果如下图所示。

这种模式下存在两个痛点

  1. 主机必须连接到某个网络中,主机和虚拟机才能互通。
  2. 更换网络后,主机和虚拟机的IP地址均会发生变化,因此远程访问工具中的IP需要同步进行修改。

为解决上述痛点,我们需要调整虚拟机的网络模式和配置静态IP。

1 主机网络环境

为理解VMware中的虚拟网络模式,我们首先需要明确主机所处的真实网络环境,其所处环境如下图所示:

如上图所示,路由器一端(WAN口(广域网口),Wide Area Network)连接互联网,另一端(Local Area Network,LAN(局域网口))连接多个需要上网的设备,这些设备组成一个局域网,局域网中的设备都通过路由器访问互联网,这个场景应该是大家十分熟悉的。

同时,我们的上网的设备还可以通过无线的方式连接到路由器上,通过无线网连接到路由器上的设备和通过有线的LAN接口连接到无线网上的设备都是处于同一个局域网当中的。

以下是一般家用的路由器图:

还有一个需要我们熟悉的是,假如现在我们需要有线上网的设备比较多,而支持有线上网的LAN接口只有4个,那其余需要上网的设备如何才能通过路由器进行上网呢(这里假设不能通过无线的方式连接到路由器)?

这个时候我们就需要使用另外一个网络设备来解决这个问题,那就是交换机,如下:

如上就是一个家用小型的交换机,在它上面也存在多个网络接口,可以把这些网络接口认为是LAN接口,这样我们就可以使用交换机去扩展路由器上的LAN接口,那如何去扩展呢?

我们可以使用一根网线,网线的一端插在路由器的某一个LAN口上,另一端插在交换机的一个接口上。

这样就相当于由路由器上的一个LAN口,扩展为4个LAN口。并且需要注意的是,直接接在路由器上的上网设备和通过扩展接在交换机上的上网设备也是处于同一个局域网当中的。

下面为大家介绍路由器中的两个十分重要的角色。

DHCP

全称Dynamic Host Configuration Protocol ,动态主机配置协议,该协议用于给联网的设备自动分配(私网)IP地址和其他网络配置。

家用路由器中一般就会集成DHCP服务,因此设备只要连接上路由器,便能自动获取IP地址等网络配置。

可以登录一下自己家的路由器管理界面,地址一般为:192.168.1.1

DHCP会维护一个IP地址池2-254,每当一个新的上网设备连接到路由器上后,这个DHCP服务会从地址池当中抽选一个ip给上网的设备。

这就是为什么我们的主机也好,还是其他的上网设备也好,连接到新的网络之后,ip地址都会变,原因就是,路由器当中DHCP服务维护的IP地址池是不一样的。

NAT

全称Network Address Translation,网络地址转换,该技术主要用于缓解IPv4地址短缺,有了NAT之后,可以令多个网络设备共享一个公网IP地址,家庭路由器中也都集成了该服务。

其工作原理是,NAT设备(路由器)一端连接互联网,其具有一个公网IP(路由器也具有一个公网IP),另一端连接一个局域网,局域网中的每个设备均只有一个私网IP。当局域网中的设备经过路由器向互联网中的其他设备发送数据时,NAT服务会将数据包的源地址由该设备的私网IP替换为路由器的公网IP,因此互联网中的其他设备看到源地址为路由器的公网IP,所以其返回数据时,就会把路由器的公网IP设置为目标地址,路由器接收到数据之后,NAT设备再将数据的目标地址由路由器的公网IP改为原设备的私网IP,最终数据就能返回到该设备了。

具体流程如下图所示:

在对我们的主机所处的网络环境有了一个了解后,下面分别为大家介绍VMware中的三种网络模式。

2 VMware中的三种虚拟网络模式

2.1 桥接模式

这个桥接模式我们也一再提到,我们之前说,那它模拟出来的效果就是让虚拟机直接接入到这个主机所在的网络当中。或者说的直白一点,就是让虚拟机直接接入这个主机所在的路由器当中。没错,但实际上这个说法离真相还是有一点距离的。

桥接模式的原理如下图所示:

这种模式下,VMware虚拟出了一个交换机。首先,该虚拟交换机通过主机的物理网卡连接到主机所在的网络中,然后所有的虚拟机都通过虚拟交换机接入到主机所在网络中。所以在该模式下,虚拟机和主机位于同一网络中,因此在主机接入网络的前提下,虚拟机和物理机是可以互通的。

好,我们可以看一下这张图,那这个桥接模式下VMware到底做了什么呢?实际上是这样的,VMware它虚拟出了一个交换机。交换机的概念大家还记得吧?那我们前面给大家简单介绍过一下,我们说这个交换机可以用来扩展路由器的LAN口。

没错。那这VMware就虚拟出了一个这样的交换机,然后这个交换机它通过这个宿主机(图中物理机-03)的物理网卡,连接到了路由器当中,其实就相当于接入到了路由器的一个LAN口,可以这么去理解,那这样一来路由器是不是就扩展出来了一系列的LAN口?好,然后所有的虚拟机其实并不是直接接入到这个路由器了,而是接入到了这个虚拟的交换机当中了。

那前面也提到过,那接入到这个虚拟机的这个设备和直接接入到路由器LAN口的设备,其实它们是位于同一个局域网下边了,对不对?那也就是说我们的主机和虚拟机是位于同一个局域网下的(对应图中物理机01,02,03和虚拟机01,02,03),那所以说这种情况下主机跟虚拟机之间,一定是可以进行通信的。

好了,那这就是VMware当中的这个桥接模式真正的一个原理图。

2.2 NAT模式

NAT模式的原理如下图所示

这种模式下,VMware虚拟出了一个交换机,一个DHCP服务以及一个NAT服务,相当于构成了一个虚拟路由器。

虚拟路由器通过主机的物理网卡连接到主机所在的网络,虚拟机则全部连接到虚拟路由器上,组成了一个子网。

此时所有的虚拟机位于同一网络,因此彼此之间可以互通,但是主机不能与虚拟机互通。

为使主机能够和虚拟机互通,VMware又在主机中虚拟出了一个网卡,并连接到了这个虚拟路由器中,这时主机便可虚拟机互通了。

可以看到这个模式原理图看起来要复杂一些,对吧?那首先需要明确的一点,就是在这种模式下边, VMware它不仅虚拟出来了一个交换机,它还同时虚拟出来了一个 DHCP 服务以及一个 NAT 服务。

好,那实际上这三者组合起来就相当于构成了一个虚拟的路由器,然后这个虚拟路由器的一端也就是它的WAN口,会通过这个宿主机(图中物理机-03),连接到这个真正的路由器上,相当于是它的一个WAN口上边。好了,然后所有的虚拟机都会接入到这个虚拟的路由器当中。

好,那这其实就相当于是我们这个虚拟路由器,那它又在真正的这个路由器的局域网下边又创建了一个子局域网。那这些虚拟机都位于这个子网内,所以这种情况下虚拟机之间是可以互相通信的,并且这个虚拟机也是可以访问互联网的。

那只不过它在访问互联网的时候,这个数据包会经过两次NAT的地址转换。一次是由这个虚拟路由器,由这个子网 IP 转换成这个局域网的IP。好,那再有一次就是由这个真正的路由器当中的NAT,由这个局域网的这个私网 IP 转换成互联网上面的一个公网IP。

然后有一个问题大家需要注意到,比如在当前的这个环境下边,我们的主机和虚拟机其实并不是位于同一个网络当中的,没问题,虚拟机实际上是位于这个虚拟路由器所创建的子网当中的,而主机现在是位于这个真正的路由器所创建的局域网当中的。

好,那显然他们并没有处在同一级的网络当中,对吧?那所以说在这种情况下,这个主机是没有办法和这个虚拟机去进行互通的。

好,那为了让这个主机和虚拟机进行互通, VMware又做了一件事。他做什么事了呢?好,他在这个主机上边又虚拟出来了一个网卡(图中物理机-03),然后通过这个虚拟网卡接入到了这个虚拟的路由器当中。好了,那这样一来的话,这个宿主机是不是也就位于这个虚拟路由器所创建出来的子网当中了呀?对不对?也就是他和这个虚拟机目前就位于同一级网络里边了,这个时候那他们之间就可以毫无障碍地进行互相通信了。

好,那这个虚拟网卡呢?其实我们也能够看得到。给大家去看一下。VMware虚拟出来的网卡如下:

那这个网卡实际上就会接入到我们刚所提到的这个虚拟的路由器当中。好,那也就是说我们目前这个主机在 NAT 模式下边,其实是处在两个网络当中的,一个是我们这个虚拟网络,还有一个是咱们这个真正的物理网络,这一点大家要理解一下。

好,那至此这个 NAT 模式的原理我就介绍完毕了。

好,那接下来再请大家思考最后一个问题。大家想一想在 NAT 模式下边这个主机它如果不连接到某个网络的话,那主机和虚拟机之间是否还能完成相互通信?我们前面提到过说在桥接模式下边是不行的,如果主机不联网,那相当于虚机也没联网,对吧?两个独立的设备没有办法进行通信,好。但是在 NAT 模式下边它也是这样的吗?答案不是。

在 NAT 模式下边,不管主机是否接入到某个网络当中,那我们的主机和虚拟机之间都可以进行相互通信,为什么呀?因为咱们看这个图就能看出来,对吧?如果物理机-03这块他没有接入到某个网络当中,好,但是我这个虚拟路由器是不是还在,对不对?那我的主机(图中物理机-03),我的虚拟机是不是都接入到了这个虚拟的路由器当中了呀?那他们是不是就位于同一网络当中?那所以说它们之间进行相互通信是没有任何问题的。

OK,只不过说如果你主机它不接入到这个网络当中,那我们的虚拟机它没有办法去访问互联网而已。好了,那这就是 NAT 模式下边的一个特点,大家要理解。

2.3 仅主机模式

仅主机模式的原理如下图所示

这种模式,和NAT模式十分相似,唯一的区别是,虚拟路由器并未连接到主机所在的网络中,因此主机和虚拟机之间可以互通,但是虚拟机不能访问互联网。

这个模式就非常非常简单了。这是它的这个原理图,那这个仅主机模式其实和 NAT 模式十分相似。好,那它这儿也是虚拟出来了一个路由器,然后这些虚拟机也都会接入到这个路由器当中,那并且这个 VMware在主机当中也虚拟出来了一块网卡。OK,好,那这个网卡也接入到了这个虚拟的路由器当中。

好,然后其实我们也可以去看一下这个 VMware 虚拟出来的这块网卡。我们还是打开这个 Windows 主机的这个网络适配器这块

对吧?它跟原来这个有区别,一个叫做 VMNET8,一个叫做 VMNET1。需要给大家明确的一点,就是VMNET8这块虚拟网卡接入的是 NAT这个网络模式下的那个虚拟路由器,而 VMNET1它接入的是这个仅主机模式下边的这个虚拟路由器。

好了,那我们再回到这个原理图上面来,所以说那我们的主机(图中物理机-03)和这个虚拟机是不是也是位于同一个局域网下边的,对吧?那所以说它们之间也是可以进行相互通信的,这个没有问题。好了,那这个仅主机模式和 NAT 模式唯一的区别应该大家也发现了,就是啥?是不是就这个虚拟路由器,它并没有接入到这个真正的路由器当中,OK,那所以说在仅主机模式下边,我们的虚拟机是不能访问互联网的。好了,那这就是仅主机模式的特点,那所谓的仅主机呢?其实现在大家也能理解了,是不是就是我们的虚拟机,它只能和这个主机进行网络通信,不能和互联网上的其他设备进行通信。

那至此VMware的三种网络模式就给大家介绍完毕了,那大家现在应该已经知道了他们各自的原理以及各自的特点了。好,那现在问大家一个问题,你说为了方便我们将来的学习或者是工作,对吧?那我们用哪种模式要更好一些呢?那实际上应该是不是 NAT 模式要更好一些,因为在 NAT 模式下边,不管主机是否联网,那我们的主机和虚拟机之间是不是都能够实现互通?那当然了,能实现这个效果的其实并不只有NAT,仅主机也行,对吧?仅主机,不管你主机是否联网,那主机和虚拟机是不是都位于这个虚拟网络当中,那所以说它们之间也都是能互通的。但是仅主机它有一个缺点。缺点就是你的虚拟机是没有办法去访问互联网的,对吧?没办法连接外网。

3 网络模式选择及配置NAT模式

为保证主机未联网的情况下,主机和虚拟机也能实现互通;同时保证主机联网的情况下虚拟机也能访问互联网,我们最好选择上述三种模式中的NAT模式,具体配置如下。

3.1 VMware虚拟网络配置

首先第一项就是我们得在VMware的虚拟网络编辑器里边去做一些相关的配置,在这儿我们其实主要就是配置这个虚拟出来的 DHCP服务,以及虚拟出来的 NAT服务。

1.点击VMware菜单栏中的编辑,选择虚拟网络编辑器

2.打开虚拟网络编辑器后,赋予管理员权限

3.配置VMnet8子网

那接下来我们再去看一下这个虚拟的 DHCP 服务,咱们都能做哪些配置?好,那现在我们点一下

点完之后可以看到这里边我们能配的其实主要就是这个起始 IP 和结束 IP 地址,大家还记得这个 DHCP 服务是不是会维护一个 IP 的地址池,对吧?

用于分配给加入这个网络的设备,对吧?好,那在这儿我们能够去调整这个地址池的范围。OK,我们暂时先不做配置。

4.打开NAT配置界面

还有一个简单的配置项需要给大家去说一下,那也就是这个 将主机虚拟适配器连接到此网络,那这个选项是用于将我们的主机连接到这个虚拟网络的。

OK,好,其实之前给大家看到过,我们说这个 Vmware 会在主机里边,是不是虚拟出来一个所谓的虚拟网卡,对吧?那其实我们前面告诉大家,就是这个 VMNET8,OK,其实在这儿我们可以做一下这个实验。大家注意观察一下。我们找一下那个虚拟网络的编辑器,那如果我把选项给它勾选掉,好,那这个 VMNET8这个虚拟网卡就会消失,大家注意观察。

这种情况下我们的主机就不会加入到这个虚拟网络了。OK,那这样一来的话,那主机跟虚拟机之间就没有办法进行网络通信了。OK,进而我们就没有办法去使用这个 SSH 的客户端去远程访问咱们这个虚拟机了。能理解各位,OK,所以说这个咱们必须得给他勾选上。好,那我们再给他勾上之后再点击应用。好,那这个需要稍微的等一会,那等一会之后那左侧这个位置就会重新出现 VMNET8。

5.修改NAT配置

大家可以看到在这个 NAT 当中我们能配的东西很少,其实主要就是这样的一个网关IP,这个网关 IP 我们又应该怎么去理解?给大家解释一下,这个本质上就是给这个虚拟出来的NAT设备配置一个私网 IP ,啥意思的?

给大家解释一下,实际上是这样的,咱们都知道 NAT 这个服务它是不是一端连接着互联网,然后另外一端连接着我们这个局域网,对吧?OK,好,然后需要注意的一点就是那这个 NAT 设备在互联网当中它会有一个公网IP,那同时在我们的这个局域网当中,它其实还有一个私网IP。

那在这个位置我们所配置的这个所谓的网关IP,其实就是给这个 NAT 设备去确定一个它在局域网当中的私网 IP 地址。OK,好,那我们为什么管它叫做网关IP?这个给大家去解释一下,那前面咱们其实也提到过我们这个局域网当中所有的网络设备,对吧?要想跟我们这个互联网当中的设备进行通信,都得经过谁?是不是都得经过这个 NAT 设备啊?没错,那所以说从这个角度来理解你这个 NAT 设备是不是就相当于是我们这个局域网通向外部世界的一个关口啊?那所以说我们就管这个NAT设备叫做网关,好,那它的这个局网里边的私网 IP 就叫做网关IP,这一点大家要注意一下就可以了。

那在这儿呢,我们可以分配给它这个子网 IP 范围内当中的任意一个合法的IP,可以看到这儿它默认给的是这个2,对吧?好了,那这个NAT 这块也就解释完毕了。

注意事项

NAT网关IP须位于VMnet8子网IP范围内。

3.2 虚拟机选择网络模式

1.修改虚拟机所使用的网络模式

2.选择NAT模式

3.3 Windows主机网络配置

上述配置中,VMware已将Windows主机连接到虚拟网络中了,此处只需查看Windows主机中的虚拟网络网卡配置是否正确即可。

1.打开网络适配器配置面板

Win+R打开运行窗口,输入ncpa.cpl,然后按回车键

2.查看VMnet8虚拟网络适配器

3.查看IpV4配置

然后这儿有一个小细节大家一定要注意到,就是这个 IP 地址并不是通过咱那个虚拟的 DHCP 自动获取的。你看他没有勾选这个自动获取 IP 地址的选项,对吧?好,你勾选了他之后,那主机的 IP 地址就是由虚拟的 DHCP 给你分配了。好,然后他这儿并没有勾选,它这相当于是怎么样?是手动的写死了一个 IP 地址,那这样一来的话,那我们这个主机每次这个启动起来之后,它的 IP 地址永远都是固定的这一个。那这其实是我们去配置这个 IP 地址的两种方式。那这种方式我们通常称之为静态IP,因为你写死之后这个 IP 地址它永远都不会变,对吧?然后上面这种通过这个 DHCP 服务自动去获取IP,那这种配置 IP 的方式我们称之为是动态IP。

注意事项

主机IP须位于VMnet8子网IP范围内。

4 配置静态IP

NAT模式下,虚拟机的IP地址,默认情况下是由虚拟DHCP服务自动分配的,虚拟机的IP地址不固定,这对于SSH远程访问也不友好,所以通常情况下,我们不使用虚拟DHCP服务,而是手动为虚拟机配置静态的IP地址。具体操作如下。

1.确定网络配置文件

在终端输入如下命令ifconfig命令,查看当前的网络接口,内容如下

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::5fdd:f01e:a4fb:966  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:fc:a3:fe  txqueuelen 1000  (Ethernet)
        RX packets 1526  bytes 136998 (133.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1907  bytes 136735 (133.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 68  bytes 5916 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5916 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:ea:8a:fb  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2.其中ens33是目前的以太网接口,故其配置文件为vim /etc/sysconfig/network-scripts/ifcfg-ens33

3.修改网络配置文件

打开配置文件

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 

内容如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=bf788989-e095-4e58-865a-e6b07248a514
DEVICE=ens33
ONBOOT=yes

需要修改的内容如下

  • 修改BOOTPROTO参数为static
  • 修改ONBOOT参数为yes

增加如下内容

IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=192.168.10.2

注意事项

IPADDR需要位于前文VMnet8子网IP范围内,GATEWAY需要配置为前文的NAT服务的网管IP。

1.重新启动网络服务

在终端执行以下命令,重启network服务

[root@localhost ~]# systemctl restart network

2.观察网络配置是否生效

在终端执行ifoconfig命令,观察ens33的网络接口的IP地址是否为前文所配置的IPADDR

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论