虚拟机网络模式
- 1 主机网络环境
- 2 VMware中的三种虚拟网络模式
- 2.1 桥接模式
- NAT模式
- 仅主机模式
- 网络模式选择
- 1 VMware虚拟网络配置
- 2 虚拟机选择网络模式
- 3 Windows主机网络配置
- 配置静态IP
虚拟机联网方式为桥接模式,这种模式下,虚拟机通过主机的物理网卡,直接连接到主机所在的网络当中。具体效果如下图所示。
这种模式下存在两个痛点
- 主机必须连接到某个网络中,主机和虚拟机才能互通。
- 更换网络后,主机和虚拟机的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 桥接模式
这个桥接模式我们也一再提到,我们之前说,那它模拟出来的效果就是让虚拟机直接接入到这个主机所在的网络当中。或者说的直白一点,就是让虚拟机直接接入这个主机所在的路由器当中。没错,OK,但实际上这个说法离真相还是有一点距离的。
桥接模式的原理如下图所示
这种模式下,VMware虚拟出了一个交换机。首先,该虚拟交换机通过主机的物理网卡连接到主机所在的网络中,
然后所有的虚拟机都通过虚拟交换机接入到主机所在网络中。
所以在该模式下,虚拟机和主机位于同一网络中,因此在主机接入网络的前提下,虚拟机和物理机是可以互通的。
好,我们可以看一下这张图,那这个桥接模式下边VMware到底做了什么呢?实际上是这样的,它虚拟出了一个交换机。交换机的概念大家还记得吧?那我们前面是不是给大家简单介绍过一下?我们说这个交换机可以用来干啥?是不是可以用来扩展路由器的LAN口啊?
没错。好,那这儿VMware就虚拟出了一个这样的交换机,然后这个交换机它通过这个宿主机的物理网卡,连接到了路由器当中,其实就相当于接入到了路由器的一个LAN口,可以这么去理解,那这样一来路由器是不是就扩展出来了一系列的LAN口?好,然后所有的虚拟机其实并不是直接接入到这个路由器了,而是接入到了这个虚拟的交换机当中了。
那前面也提到过,那接入到这个虚拟机的这个设备和直接接入到路由器LAN口的设备,其实它们是位于同一个局域网下边了,对不对?那也就是说我们的主机和虚拟机是位于同一个局域网下的,那所以说这种情况下主机跟虚拟机之间,一定是可以进行通信的。
好了,那这就是VMware当中的这个桥接模式,真正的一个原理图。
NAT模式
NAT模式的原理如下图所示
这种模式下,VMware虚拟出了一个交换机,一个DHCP服务以及一个NAT服务,相当于构成了一个虚拟路由器。
虚拟路由器通过主机的物理网卡连接到主机所在的网络,虚拟机则全部连接到虚拟路由器上,组成了一个子网。
此时所有的虚拟机位于同一网络,因此彼此之间可以互通,但是主机不能与虚拟机互通。
为使主机能够和虚拟机互通,VMware又在主机中虚拟出了一个网卡,并连接到了这个虚拟路由器中,这时主机便可虚拟机互通了。
可以看到这个模式原理图看起来要复杂一些,对吧?那首先需要明确的一点,就是在这种模式下边, VMware它不仅虚拟出来了一个交换机,它还同时虚拟出来了一个 DHCP 服务以及一个 NAT 服务。好,那实际上这三者组合起来就相当于构成了一个虚拟的路由器,然后这个虚拟路由器的一端也就是它的WAN口,会通过这个宿主机,连接到这个真正的路由器的,相当于是它的一个WAN口上边。好了,然后所有的虚拟机都会接入到这个虚拟的路由器当中。
好,那这其实就相当于是我们这个虚拟路由器,那它又在真正的这个路由器的局域网下边又创建了一个子局域网。那这些虚拟机都位于这个子网内,那所以这种情况下虚拟机之间是可以互相通信的,那并且这个虚拟机也是可以访问互联网的。OK,那只不过它在访问互联网的时候,这个数据包会经过两次NAT的地址转换。一次是由这个虚拟路由器,由这个子网 IP 转换成这个局网的IP。好,那再有一次就是由这个真正的路由器当中的NAT,由这个局网的这个私网 IP 转换成互联网上面的一个公网IP。
然后有一个问题大家需要注意到,比如在当前的这个环境下边,我们的主机和虚拟机其实并不是位于同一个网络当中的,没问题,好,虚拟机实际上是位于这个虚拟路由器所创建的子网当中的,而主机现在是位于这个真正的路由器所创建的局域网当中的。好,那显然他们并没有处在同一级的网络当中,对吧?那所以说在这种情况下,这个主机是没有办法和这个虚拟机去进行互通的。
好,那为了让这个主机和虚拟机进行互通, VMware又做了一件事。他做什么事了呢?好,他在这个主机上边又虚拟出来了一个网卡,然后通过这个虚拟网卡接入到了这个虚拟的路由器当中。好了,那这样一来的话,这个宿主机是不是也就位于这个虚拟路由器所创建出来的子网当中了呀?对不对?也就是他和这个虚拟机目前就位于同一级网络里边了,这个时候那他们之间就可以毫无障碍地进行互相通信了。
好,那这个虚拟网卡呢?其实我们也能够看得到。好,那这个去哪看呢?给大家去看一下。
那这个网卡实际上就会接入到我们刚所提到的这个虚拟的路由器当中。好,那也就是说我们目前这个主机在 NAT 模式下边,其实是处在两个网络当中的,一个是我们这个虚拟网络,还有一个是哪是咱们这个真正的物理网络,这一点大家要理解一下。
好,那至此这个 NAT 模式的原理我就介绍完毕了。
好,那接下来再请大家思考最后一个问题。好,大家想一想在 NAT 模式下边这个主机它如果不连接到某个网络的话,那主机和虚拟机之间是否还能完成相互通信?我们前面提到过说在桥机模式下边是不行的,如果主机不联网,那相当于虚机也没联网,对吧?两个独立的设备没有办法进行通信,对吧?好。但是在 NAT 模式下边它也是这样的吗?答案不是。OK。
在 NAT 模式下边,不管主机是否接入到某个网络当中,那我们的主机和虚拟机之间都可以进行相互通信,为什么呀?因为咱们看这个图就能看出来,对吧?好,如果这块他没有接入到某个网络当中,对吧?好,但是我这个虚拟路由器是不是还在,对不对?那我的主机,我的虚拟机是不是都接入到了这个虚拟的路由器当中了呀?那他们是不是就位于同一网络当中?那所以说它们之间进行相互通信是没有任何问题的。
OK,只不过说如果你主机它不接入到这个网络当中,那我们的虚拟机它没有办法去访问互联网而已。好了,那这就是 NAT 模式下边的一个特点,大家要理解。
仅主机模式
仅主机模式的原理如下图所示
这种模式,和NAT模式十分相似,唯一的区别是,虚拟路由器并未连接到主机所在的网络中,
因此主机和虚拟机之间可以互通,但是虚拟机不能访问互联网。
这个模式就非常非常的简单了。这是它的这个原理图,那这个仅主机模式其实和 NAT 模式十分相似。好,那它这儿也是虚拟出来了一个路由器,然后这些虚拟机也都会接入到这个路由器当中,那并且这个 VMware在主机当中也虚拟出来了一块网卡。OK,好,那这个网卡也接入到了这个虚拟的路由器当中。
好,然后其实我们也可以去看一下这个 VMware 虚拟出来的这块网卡。我们还是打开这个 Windows 主机的这个网络适配器这块,
对吧?它跟原来这个有区别,一个叫做 VMNET8,一个叫做 VMNET1。OK,需要给大家明确的一点,就是VMNET8这块虚拟网卡接入的是 NAT这个网络模式下的那个虚拟路由器,而 VMNET1它接入的是这个仅主机模式下边的这个虚拟路由器。
好了,那我们再回到这个原理图上面来,所以说那我们的主机和这个虚拟机是不是也是位于同一个局域网下边的,对吧?那所以说它们之间也是可以进行相互通信的,这个没有问题啊。
好了,那这个仅主机模式和 NAT 模式唯一的区别应该大家也发现了,就是啥?是不是就这个虚拟路由器,它并没有接入到这个真正的路由器当中,OK,那所以说在仅主机模式下边,我们的虚拟机是不能访问互联网的。
好了,那这就是仅主机模式的特点,那所谓的仅主机呢?其实现在大家也能理解了,是不是就是我们的虚拟机,它只能和这个主机进行网络通信,不能和互联网上的其他设备进行通信。
那至此VMware的三种网络模式就给大家介绍完毕了,那大家现在应该已经知道了他们各自的原理以及各自的特点了。好,那现在问大家一个问题,你说为了方便我们将来的学习或者是工作,对吧?那我们用哪种模式要更好一些呢?那实际上应该是不是 NAT 模式要更好一些,因为在 NAT 模式下边,不管主机是否联网,那我们的主机和虚拟机之间是不是都能够实现互通?那当然了,能实现这个效果的其实并不只有NAT,仅主机也行,对吧?仅主机,不管你主机是否联网,那主机和虚拟机是不是都位于这个虚拟网络当中,那所以说它们之间也都是能互通的。但是仅主机它有一个缺点。缺点就是你的虚拟机是没有办法去访问互联网的,对吧?没办法连接外网。
网络模式选择
为保证主机未联网的情况下,主机和虚拟机也能实现互通;同时保证主机联网的情况下虚拟机也能访问互联网,我们最好选择上述三种模式中的NAT模式,具体配置如下。
1 VMware虚拟网络配置
- 点击VMware菜单栏中的
编辑
,选择虚拟网络编辑器
2.打开虚拟网络编辑器后,赋予管理员权限
3.配置VMnet8子网
4.打开NAT配置界面
5.修改NAT配置
注意事项
NAT网关IP须位于VMnet8子网IP范围内。
2 虚拟机选择网络模式
- 修改虚拟机所使用的网络模式
- 选择NAT模式
3 Windows主机网络配置
上述配置中,VMware已将Windows主机连接到虚拟网络中了,此处只需查看Windows主机中的虚拟网络网卡配置是否正确即可。
-
打开网络适配器配置面板
Win+R
打开运行窗口,输入ncpa.cpl
,然后按回车键 -
查看VMnet8虚拟网络适配器
-
查看IpV4配置
注意事项
主机IP须位于VMnet8子网IP范围内。
配置静态IP
NAT模式下,虚拟机的IP地址,默认情况下是由虚拟DHCP服务自动分配的,虚拟机的IP地址不固定,这对于SSH远程访问也不友好,所以通常情况下,我们不使用虚拟DHCP服务,而是手动为虚拟机配置静态的IP地址。具体操作如下。
-
确定网络配置文件
在终端输入如下命令
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
-
其中ens33是目前的以太网接口,故其配置文件为
vim /etc/sysconfig/network-scripts/ifcfg-ens33
。 -
修改网络配置文件
打开配置文件
[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。
-
-
重新启动网络服务
在终端执行以下命令,重启network服务
[root@localhost ~]# systemctl restart network
-
观察网络配置是否生效
在终端执行
ifoconfig
命令,观察ens33
的网络接口的IP地址是否为前文所配置的IPADDR
。