我们首先说一下VMware的几个虚拟设备
VMnet0:用于虚拟桥接网络下的虚拟交换机
VMnet1:用于虚拟Host-Only网络下的虚拟交换机
VMnet8:用于虚拟NAT网络下的虚拟交换机
VMwareNetworkAdepter VMnet1(以下下简称Adepter VMnet1):Host用于与Host-Only虚拟网络进行通信的虚拟网卡
VMware Network Adepter VMnet8(以下下简称Adepter VMnet8):Host用于与NAT虚拟网络进行通信的虚拟网卡
一、NAT模式(最easy的)
1、虚拟机通过Vmnet8虚拟交换机链接宿主机的Adapter Vmnet8虚拟网卡上,实现与宿主机双向通信;
2、VMnet8提供虚拟NAT服务和虚拟DHCP服务,虚拟NAT设备与宿主机真实网卡直接相连,实现访问互联网;
3、此模式下未用到Vmnet1虚拟网卡
二、HOST-ONLY模式(研究一晚上,困)
1、虚拟机通过Vmnet1交换机链接宿主机Adapter Vmnet1虚拟网卡上,实现宿主机到虚拟机的单项通信(虚拟机此时访问不了宿主机);
2、Vmnet1提供虚拟DHCP服务;
3、要想实现虚拟机到宿主机的单项通信和让虚拟机访问外网,需要做:
1、将宿主机真实网卡适配器开启网络共享模式(ICS);
2、将Adapter Vmnet1虚拟网卡地址设置为192.168.x.1(固定格式的,一般无需手动更改,通常第1步设置完后,该虚拟网卡的地址会自动填 写,通常会填写192.168.137.1,但经过测试也可自己修改第三位数字,实际就是虚拟路由。但是,为什么第四位不能设置成别的数 字? 怎 么强制改都不行,很奇妙。)
3、将Vmnet1虚拟交换机的IP端子网设为192.168.x.0,此时可以关闭DHCP功能,因为,虚拟机要配置静态ip,不关闭也无所谓;
4、将虚拟机的网卡地址改为静态的,(我的网卡名叫ens33),具体配置如下:
TYPE="Ethernet"
BOOTPROTO=static
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="c7d8063c-0dc0-4e94-b229-568f0421e678"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.137.128"
NETMASK=255.255.255.0
GATEWAY=192.168.137.1
DNS1=8.8.8.8
DNS2=144.144.144.144
5、重启下network服务,大功告成;那么问题来了:楼主在反复测试的时候发现当把 Adapter Vmnet1虚拟网卡地址设置为192.168.1.1时 (即与宿主机真实路由地址相同时)会发生奇怪的现象就是,虚拟机可以访问网络但是不能访问宿主机,很诡异,不懂其中原理。
三、Bridged模式(再加一上午)
1、纯手动配置ip
2、将虚拟机ip设置成与宿主机真实网卡ip同一网段,并且相同网段和dns网址,具体配置如下:
TYPE="Ethernet"
BOOTPROTO=static
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="c7d8063c-0dc0-4e94-b229-568f0421e678"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.1.128"
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
3、重启下network服务,就可实现宿主机与虚拟机的双向通信,宿主机可访问互联网;
四、最后问题,如何让虚拟机提供互联网服务?即,使任何互联网上的主机可以访问局域网内的虚拟机
1、设置自己的路由器,将转发地址和端口映射到虚拟机的ip和端口上即可
2、上述方法没有经过验证,不知道三种网络模式是否都支持
五、总结原理,其实经过一番折腾后不难发现:
1、NAT模式和Host-Only模式在局域网内互联的方式是相同的:
NAT的链路:宿主机 <----->Adapter Vmnet8虚拟网卡 <----->Vmnet8虚拟交换机<----->虚拟机虚拟网卡(ens33)<----->虚拟机
Host-Only的链路:宿主机<----->Adapter Vmnet1虚拟网卡 <----->Vmnet1虚拟交换机<----->虚拟机虚拟网卡(ens33)<----->虚拟机
2、在连接互联网方面,NAT模式通过虚拟的NAT服务实现上网,Host-Only模式通过宿主机的真实网卡的网络共享上网
NAT的链路:互联网<----->物理路由器<----->NAT虚拟服务<----->VMnet8虚拟交换机<----->虚拟机虚拟网卡(ens33)<----->虚拟机
Host-Only的链路:互联网<----->物理路由器<----->Adapter Vmnet1虚拟网卡共享宿主机真实网卡的网络<----->VMnet1虚拟交换机<-----> 虚拟机虚拟网卡(ens33)<----->虚拟机
3、至于Bridged模式实际可理解为与宿主机同一局域网内的设备
类似于把宿主机虚拟为一个交换机,所有桥接设置的虚拟机通过VMnet0虚拟交换机连接到这个交换机的一个接口上,宿主机也同样插在这个 交换机当中。
链路:物理路由器<----->VMnet0虚拟交换机与宿主机真实网卡桥接<----->虚拟机虚拟网卡(ens33)<----->虚拟机
(以上属于个人分析,有待考证,如有错误,还望指正)