本文发自 http://www.binss.me/blog/learning-computer-network-by-the-network-adapter-of-vmware/,转载请注明出处。

无论是Vmware、Parallals Desktop还是Virtual box,一般来说,都有三种网络模式供选择:

那么这些模式是什么意思?它们又是怎么实现的呢?我们根据Vmware官方给出资料进行相应的分析和学习:

  1. Bridged

    Bridged(桥接)是在宿主机前加一个虚拟网桥,虚拟机通过交换机和宿主机连接到这个网桥上,因此虚拟机和宿主机处于同等地位,都可通过网桥连接外网,外网也可看到宿主机虚拟机。

    根据文档,这个交换机为vmnet0,但是我没找到......也没找到网桥......

    因为物理网卡和虚拟网卡处于同一个网段,而物理网卡接在局域网上,所以路由器也为虚拟网卡其分配了一个局域网ip:

    等等

    既然是路由器直接分配ip,那为什么还需要交换机和网桥?不是直插路由器就好了吗? 登陆到路由器看:

    人家分明是直插把网卡直接插到路由器上的。因此我觉得是路由器做了交换机和网桥的工作。

    由于桥接的特性,多用于虚拟机为局域网提供服务的情景(如http server、ftp server等)

  2. Network Address Translation (NAT)

    NAT(网络地址转换)是宿主机直接连接外网,同时充当NAT设备。虚拟机通过交换机连接到NAT设备,并通过NAT连接外网,从外网看来,所有的数据包都是来自宿主机,因此发现不了虚拟机。

    在vmware中,这个NAT交换机为vmnet8:

    vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 00:50:56:c0:00:08
        inet 192.168.85.1 netmask 0xffffff00 broadcast 192.168.85.255

    所有的虚拟机连接到这个交换机身上,相当于处于同一个子网:192.168.85.1/24 ,因此多个虚拟机之间也可以相互访问。

    虚拟机的IP为子网IP:

    既然NAT交换机跑在宿主机上,那么DHCP这个锅也从路由器交到宿主机了:

    $ ps aux | grep dhcp
    root             1940   0.0  0.0  2471056    492   ??  Ss    7:17PM   0:00.01 /Applications/VMware Fusion.app/Contents/Library/vmnet-dhcpd -s 7 -cf /Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf -lf /var/db/vmware/vmnet-dhcpd-vmnet8.leases -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8

    由于NAT的特性,类似于桥接模式,可用于虚拟机为局域网提供服务的情景,优势在于无需为其分配独立IP(ISP可不会像家用路由器那么好人)并可以随时更换而不被外界所发现。

  3. Host-Only

    Host-Only是宿主机和虚拟机接在同一个交换机上,而不同于NAT模式的地方在于子网没有接入NAT,因此构成一个与外网隔绝的私有子网,在这个子网中,虚拟机能够访问的仅有宿主机。

    在vmware中,这个交换机为vmnet1:

    vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 00:50:56:c0:00:01
        inet 192.168.105.1 netmask 0xffffff00 broadcast 192.168.105.255

    虚拟机的IP为子网IP:

    在这种情况下,宿主机也需要提供DHCP服务:

    $ ps aux | grep dhcp
    root             1933   0.0  0.0  2466960    196   ??  Ss    7:17PM   0:00.00 /Applications/VMware Fusion.app/Contents/Library/vmnet-dhcpd -s 7 -cf /Library/Preferences/VMware Fusion/vmnet1/dhcpd.conf -lf /var/db/vmware/vmnet-dhcpd-vmnet1.leases -pf /var/run/vmnet-dhcpd-vmnet1.pid vmnet1

    由于Host-Only的特性,多用于安全性要求较高的情景(虚拟机仅供内网使用,如db等)

参考:

https://www.vmware.com/support/ws55/doc/ws_net_configurations_bridged.html

https://www.vmware.com/support/ws55/doc/ws_net_configurations_nat.html https://www.vmware.com/support/ws55/doc/ws_net_configurations_hostonly.html

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1022264