虚拟机三种网络模式的配置及原理分析

我们首先说一下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)<----->虚拟机


(以上属于个人分析,有待考证,如有错误,还望指正)

你可能感兴趣的:(虚拟机三种网络模式的配置及原理分析)