本文参考《Vmware虚拟机三种网络模式详解》、《网络原理,以及对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的图解》
一.VMware的网络的网络环境
1-1 VMware的网络环境
VMware提供了3种网络工作模式:Bridged(桥接模式),NAT(网络地址装换模式),Host-Only(仅主机模式)。
VMware管理了3个特殊的虚拟交换机:VMnet0(用于桥接模式),VMnet8(用于NAT模式),VMnet1(用于仅主机模式)。打开VMware虚拟机,在顶部选项栏-[编辑]-[虚拟网络编辑器]-[更改设置]后即可看到3个虚拟交换机,如图1-1.1所示。
图1-1.1 在虚拟网络编辑器中查看3个特殊的虚拟交换机
1-2 VMware安装后宿主机的网络环境
VMware安装完成后会在宿主机上生成两块虚拟网卡,这两块网卡与虚拟机管理的两个虚拟交换机相连。如图1-2.1所示。
图 1-2.1 宿主机的网络环境
如果将宿主机上的这两块虚拟网卡卸载了,可通过VMware的顶部选项栏-[编辑]-[虚拟网络编辑器]-[还原默认设置],重新将虚拟网卡还原。
二.三种网络模式
2-1 Bridged(桥接模式)
原理
桥接模式:把宿主机的网卡通过虚拟网桥与VMware管理的虚拟交换机VMnet0相连,所有网络连接设置为桥接模式(如图2-1.1所示)的虚拟机都会连接到虚拟交换机VMnet0上,网络结构如图2-1.2所示。这样所有的虚拟机与宿主机以及与宿主机在同一个局域网下的主机之间都是可以相互访问的,其网络结构可逻辑理解为如图2-1.3所示的网络结构。在桥接模式下,虚拟机IP地址需要与宿主机在同一个网段,如果需要联网,则虚拟机的网关和DNS也需要与宿主机被桥接的网卡一致。
图2-1.1 网络连接设置为桥接模式
图2-1.2 桥接模式网络结构图
图 2-1.3 桥接模式逻辑网络结构图
注意:
- 虚拟网桥会转发宿主机网卡接收到的广播和组播信息,以及目标为虚拟交换机网段的单播。所以,与虚拟交换机机连接的虚拟网卡(如: eth0、ens33等〉能接收到路由器发出的DHCP信息及路由更新。
- 桥接模式是通过虚拟网桥将主机上的网卡与虚拟交换机VMnet0连接在一起,虚拟机上的虚拟网卡都连接在虚拟交换机VMnet0上,所以桥接模式下,虚拟机IP必须与宿主机的IP在同一网段且子网掩码、网关与DNS也要与宿主机网卡的一致。
- 如图2-1.3中所示,桥接模式的虚拟机会占用宿主机所在局域网内的IP地址资源。同时,如果宿主机所在局域网中做了IP地址管理,比如IP地址需要公司网络部门审批通过后才能使用,那么虚拟机的IP地址也会受此管理规则的约束。
实际操作
1.进入VMware主页,选中安装完成的虚拟机。如图2-1.4所示。
图2-1.4 VMware主页
2.在开启系统之前,点击[编辑虚拟机设置]来设置虚拟机网卡的网络连接模式。如图2-1.5所示。
图2-1.5 虚拟机设置页
3.点击[网络适配器],选择[网络连接]为[桥接模式(B)]。如图2-1.6所示。
图2-1.6 设置网络连接为桥接模式
4.在开启虚拟机之前,先确认宿主机联网的网卡的IP地址、子网掩码、默认网关和DNS服务器信息。同时按住Win+R键-输入cmd-回车-输入ipconfig /all-回车。如图2-1.7所示。
图2-1.7 宿主机的网络信息
5.开启虚拟机进入系统,查看虚拟机的网卡接口的配置文件。命令为:
cd /etc/sysconfig/network-scripts
ls
如图2-1.8所示。
图2-1.8 查看网卡接口配置文件
网卡接口的配置文件是以ifcfg开头的,ifcfg-lo为回环接口,不必关注。只需关注ifcfg-ens33。
6.编辑ifcfg-ens33文件,命令为:
vi ifcfg-ens33
初始内容如图2-1.9所示。
图2-1.9 ifcfg-ens33文件初始内容
7.修改ifcfg-ens33文件。如图2-1.10所示。
图2-1.10 ifcfg-ens33文件修改后的内容
注意:
- IPADDR的值需要与宿主机的IPv4地址在同一个网段内,且要避免IPADDR设置的IP已经被其他主机使用。
8.编辑完成后,保存退出,重启虚拟机网卡,重启命令为
systemctl restart network.service
9.使用ping命令分ping宿主机的IP 192.168.1.6,测试虚拟机和宿主机是否联通,如图2-1.11所示;ping www.baidu.con,测试虚拟机和公网是否联通,如图2-1.12所示。
图2-1.11 测试虚拟机和宿主机是否联通
图2-1.12 测试虚拟机和公网是否联通
由图2-1.11和2-1.12可知,虚拟机通宿主机以及公网。
问题总结
1.虚拟机ping不通宿主机。
①可能是宿主机防火墙的入站规则中未启用虚拟机监控(回显请求-ICMPv4-In)规则。通过[Windows安全中心]-[防火墙和网络保护]-[高级设置]-[入站规则] 找到虚拟机监控(回显请求-ICMPv4-In)规则,点击[右键]-[启用规则]。如图2-1.13所示。
图2-1.13 Windows防火墙入站规则
2.ping不通公网。
①检查[VMware主页]-[顶部标签栏]-[编辑]-[虚拟网络编辑器]中的虚拟交换机VMnet0桥接到的宿主机网卡是否为宿主机联网的网卡。比如我现在宿主机联网的网卡为Intel(R) Wireless-AC 9560 160MHz(如图2-1.14所示),那么虚拟交换机VMnet0就应该桥接到这个网卡上(或者为[自动])。如图2-1.15所示。如果选中的是[自动],那么在排查问题的过程中可将其修改为具体的网卡。
图2-1.14 宿主机联网的网卡
图2-1.15 虚拟交换机桥接到宿主机联网的网卡上
②使用桥接模式虚拟出来的虚拟机,像是宿主机所在局域网内的一台真实机器,它会占用真实的IP资源,并受此局域网络的管理规则约束。虚拟机ping不通公网可能就是因为虚拟机的IP可能需要通过你公司网络管理员的审批或者使用相关的网络访问软件后才可使用。
3.其他问题
可参考《设置虚拟机桥接模式以及解决桥接模式上不了网以及ping不通主机的问题》。
2-2 NAT(地址转换模式)
原理
如2-1中所提到的:使用桥接模式虚拟出来的虚拟机,像是宿主机所在局域网内的一台真实机器,它会占用真实的IP资源,并受此局域网络的管理规则约束。如果你网络中的IP资源紧缺,或者是使用新的IP需要通过层层审批以满足管理规则,那么NAT模式就是更合适的选择,这种模式可以避免这些问题带来的困扰。
NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网,其网络结构如图2-2.1所示。
图2-2.1 地址转换模式网络结构图
注意:
- 在虚拟机连接Vmnet8虚拟交换机时,虚拟机会将虚拟NAT设备及虚拟DHCP服务器连接到Vmnet8虚拟交换机上。依靠虚拟的NAT设备及虚拟的DHCP设备,如果你的宿主机已经联网了,那么你的虚拟机也就可以联网。
- 同时宿主机上的虚拟网卡VMwareNetwork Adapter VMnet8也会连接到Vmnet8虚拟交换机上,用于宿主机和虚拟机的通信。
- 虚拟网卡VMwareNetwork Adapter VMnet8只是作为主机与虚拟机通信的接口,虚拟机并不是依靠虚拟网卡VMware Network Adapter VMnet8来联网的。如果禁用掉宿主机上的虚拟网卡VMwareNetwork Adapter VMnet8,虚拟机仍然是可以上网的,只是宿主无法再访问VMnet8网段下的虚拟机了(但虚拟机仍然可以访问宿主机)。
- 使用NAT模式,就是让虚拟机借助NAT(网络地址转换功能),通过宿主机所在的网络来访问互联网。
- 也就是说,使用NAT模式可以实现虚拟机访问互联网;
- 但由于NAT服务协议对外部网络隐蔽内部网络,因此虚拟机可以通过NAT服务器访问宿主机所在局域网内的其他真实主机,但这些真实主机且不能反过来访问虚拟机。即宿主机、宿主机所在局域网内的其他主机以及互联网中的其他主机都不能通过NAT服务器访问虚拟机(宿主机可以通过虚拟网卡VMware Network Adapter VMnet8来访问虚拟机),但是虚拟机能通过NAT服务器访问宿主机、宿主机所在局域网的其他主机以及互联网中的其他主机。
- 使用NAT模式最大的优势是接入互联网十分简单,你不需要进行其他的配置(BOOTPROTO选择为dhcp的情况下),只要宿主机能访问互联网,虚拟机就能访问互联网。
实际操作
1.进入VMware主页,选中安装完成的虚拟机。如图2-2.2所示。
图2-2.2 VMware主页
2.查看NAT模式下的NAT设置和DHCP设置的参数。如图2-2.3所示。
图2-2.3 NAT设置和DHCP设置
3.在开启系统之前,点击[编辑虚拟机设置]来设置虚拟机网卡的网络连接模式,选择网络连接模式为[NAT模式(N)]。如图2-2.4所示。
图2-2.4 虚拟机设置页
4.开启虚拟机进入系统,查看虚拟机的网卡接口的配置文件。命令为:
cd /etc/sysconfig/network-scripts
ls
如图2-2.5所示。
图2-2.5 查看网卡接口配置文件
网卡接口的配置文件是以ifcfg开头的,ifcfg-lo为回环接口,不必关注。只需关注ifcfg-ens33。
5.编辑ifcfg-ens33文件,命令为:
vi ifcfg-ens33
初始内容如图2-2.6所示。
图2-2.6 ifcfg-ens33文件初始内容
6.修改ifcfg-ens33文件。如图2-2.7所示。
图2-2.7 ifcfg-ens33的设置
注意:
- 将BOOTPROTO即系统启动地址协议设置为static,那么每次虚拟机关机再启动后IP地址都不会改变,但是需要设置黄色框中的内容。
- IPADDR需要在图2-2.3所示DHCP设置中的起始IP地址和结束IP地址的范围内(192.168.113.128-192.168.113.254);
- NETMASK需要与图2-2.3所示DHCP设置中的子网掩码(255.255.255.0)一致;
- GATEWAY需要图2-2.3所示NAT设置中的网关(192.168.113.2)一致;
- DNS1用于指定域名解析服务器的地址,一般使用国内的免费DNS服务器114.114.114.114;
- 如果将BOOTPROTO设置为dhcp,虚拟机就会被动态的分配IP地址,每次虚拟机关机再启动后IP地址可能会变化,但是就不需要设置黄色框中的内容。如图2-2.8所示。
图2-2.8 BOOTPROTO设置为dhcp
7.编辑完成后,保存退出,重启虚拟机网卡,重启命令为
systemctl restart network.service
8.使用ping命令分ping宿主机的IP 192.168.1.6,测试虚拟机和宿主机是否联通,如图2-2.9所示;ping www.baidu.con,测试虚拟机和公网是否联通,如图2-2.10所示。
图2-2.9 测试虚拟机和宿主机是否联通
图2-2.10 测试虚拟机和公网是否联通
由图2-2.9和图2-2.10可知,NAT模式下的虚拟机可以联通宿主机和公网的。
9.在图2-2.1下注意的第3点中提到过宿主机的虚拟网卡VMware Network Adapter VMnet8仅仅是用来宿主机和虚拟机通信的,如果禁用宿主机的这张虚拟网卡,不影响虚拟机访问公网、虚拟机访问宿主机,只影响宿主机访问虚拟机。网络逻辑图如图2-2.11所示。
图2-2.11 禁用宿主机虚拟网卡前后的网络逻辑图
在未禁用宿主机虚拟网卡VMware Network Adapter VMnet8时:
- 虚拟机ping公网以及宿主机都能通
- 宿主机ping虚拟机能ping通
在禁用宿主机虚拟网卡VMware Network Adapter VMnet8后:
- 虚拟机ping公网以及宿主机都能通
- 宿主机ping虚拟机ping不通
2-3 Host-Only(仅主机模式)
原理
Host-Only模式其实就是NAT模式去掉了虚拟NAT设备,使虚拟机无法与公网进行通行,而宿主机使用虚拟网卡VMware Network Adapter VMnet1连接VMnet1虚拟交换机来与虚拟机进行通信。Host-Only模式将虚拟机与公网隔开,使虚拟机成为一个独立的系统,只能与宿主机相互通讯。其网络结构如图2-3.1所示。
图2-3.1 仅主机模式网络结构图
注意:
- Host-Only模式通过宿主机的虚拟网卡VMwareNetwork Adapter VMnet1来连接虚拟交换机VMnet1,从而达到宿主机与虚拟机通信的目的。但是虚拟机不能主动与宿主机通信(是单向连通的)。
- 如果想要在Host-Only模式下联网,可以将能联网的主机网卡共享给VMware Network Adapter VMnet1,这样就可以实现虚拟机联网。
- 果仅仅想让虚拟机访问互联网,这种方式不推荐,也没有必要。NAT方式是最简单的,基本上不需要做什么操作,就能自动连接上。
实际操作
1.进入VMware主页,选中安装完成的虚拟机。如图2-3.2所示。
图2-3.2 VMware主页
2.查看Host-Only模式下的DHCP设置的参数。如图2-3.3所示。
3.在开启系统之前,点击[编辑虚拟机设置]来设置虚拟机网卡的网络连接模式,选择网络连接模式为[仅主机模式(H)]。如图2-3.4所示。
图2-3.4 虚拟机设置页
4.开启虚拟机进入系统,查看虚拟机的网卡接口的配置文件。命令为:
cd /etc/sysconfig/network-scripts
ls
如图2-3.5所示。
图2-3.5 查看网卡接口配置文件
网卡接口的配置文件是以ifcfg开头的,ifcfg-lo为回环接口,不必关注。只需关注ifcfg-ens33。
5.编辑ifcfg-ens33文件,命令为:
vi ifcfg-ens33
初始内容如图2-3.6所示。
图2-3.6 ifcfg-ens33文件初始内容
6.修改ifcfg-ens33文件。如图2-3.7所示。
图2-3.7 ifcfg-ens33的设置
注意:
- 将BOOTPROTO即系统启动地址协议设置为static,那么每次虚拟机关机再启动后IP地址都不会改变,但是需要设置黄色框中的内容。
- IPADDR需要在图2-2.3所示DHCP设置中的起始IP地址和结束IP地址的范围内(192.168.203.128-192.168.203.254);
- NETMASK需要与图2-2.3所示DHCP设置中的子网掩码(255.255.255.0)一致;
- GATEWAY和DNS1无需设置(不连接公网)。
- 如果将BOOTPROTO设置为dhcp,虚拟机就会被动态的分配IP地址,每次虚拟机关机再启动后IP地址可能会变化。如图2-3.8所示。
图2-3.8 BOOTPROTO设置为dhcp
7.编辑完成后,保存退出,重启虚拟机网卡,重启命令为
systemctl restart network.service
8.使用ping命令ping宿主机的IP 192.168.1.6,测试虚拟机和宿主机是否联通,如图2-3.9所示;ping www.baidu.con,测试虚拟机和公网是否联通,如图2-3.10所示。
图2-3.9 测试虚拟机和宿主机是否联通
图2-3.10 测试虚拟机和宿主机是否联通
由图2-3.9和图2-3.10可知,Host-Only模式下的虚拟机不可以联通宿主机和公网。
9.在宿主机上使用ping命令ping虚拟机IP 192.168.203.129,测试宿主机是否能联通虚拟机。如图2-3.11所示。
图2-3.11 宿主机ping虚拟机
由图2-3.11可知宿主机能联通虚拟机。
扩展
通过共享网卡使虚拟机可以连通公网。
1.共享宿主机上连入公网的网卡。如图2-3.12所示。
图2-3.12 共享宿主机连网的网卡
2.设置了共享网卡后,宿主机的虚拟网卡VMware Network Adapter VMnet1的IP将会被设置为一个固定的IP(192.168.137.1)。如图2-3.13所示。
图2-3.13 宿主机虚拟网卡VMware Network Adapter VMnet1的IP
3.共享宿主机的网卡就相当于让宿主机的网卡充当虚拟机网络的网关和虚拟NAT设备,所以需要修改VMware管理的虚拟交换机VMnet1的DHCP的子网和起始、结束IP地址。如图2-3.14所示。
图2-3.14 修改虚拟交换机VMnet1的DHCP设置
修改之前的DHCP设置如图2-3.15所示。
图2-3.15 修改前的DHCP设置
4.重新配置虚拟机的网卡ifcfg-ens33。如图2-3.16所示。
图2-3.16 ifcfg-ens33的设置
注意:
- 将BOOTPROTO即系统启动地址协议设置为static,那么每次虚拟机关机再启动后IP地址都不会改变,但是需要设置黄色框中的内容。
- IPADDR需要在图2-3.14所示DHCP设置中的起始IP地址和结束IP地址的范围内(192.168.137.128-192.168.137.254);
- NETMASK需要与图2-3.14所示DHCP设置中的子网掩码(255.255.255.0)一致;
- GATEWAY和DNS1都设置为宿主机虚拟网卡VMware Network Adapter VMnet1的IP(192.168.137.1)
- 如果将BOOTPROTO设置为dhcp,虚拟机就会被动态的分配IP地址,每次虚拟机关机再启动后IP地址可能会变化(但是这种方式未能尝试成功,ping不通百度和宿主机)。如图2-3.17所示。
图2-3.17 BOOTPROTO设置为dhcp
5.编辑完成后,保存退出,重启虚拟机网卡,重启命令为
systemctl restart network.service
6.使用ping命令ping宿主机的IP 192.168.1.6,测试虚拟机和宿主机是否联通,如图2-3.9所示;ping www.baidu.con,测试虚拟机和公网是否联通,如图2-3.10所示。
图2-3.18 测试虚拟机和宿主机是否联通
图2-3.19 测试虚拟机和宿主机是否联通
由图2-3.18和图2-3.19可知,Host-Only模式下共享了网卡后的虚拟机可以联通宿主机和公网。