最近要做云计算的实验,配置一个 Hadoop 并运行一个 MapReduce 任务。在帮助同学配置虚拟机网络的时候,我最先使用的方法是对每个节点都新配置一个 Host-only 自定义网段的网卡,并对每台 VM1 都分配唯一的静态地址(因为需要加入 hosts 文件)。这样,就不存在因为 DHCP 而产生地址变动的问题了。
本以为这样就配好了,然而同学后来跟我说,其实不用 Host-only ,只用 NAT 也能够互相连接。我就开始感到奇怪了,怕不是之前我一直理解错了?于是就做了一些小实验,最后发现其实是虚拟机软件的差异,也就有了这篇 content 。
同学用的虚拟机软件就是这个 VMware Workstation 。这款软件因为要收费也不开源,对倡导开源精神的我来说,自然不会选择使用了。但是不得不承认,其出色的性能的确赢得了用户市场的青睐。不然也不会大家都费尽心思去找这款软件的破解版来使用。在个人使用方面,在其管理虚拟资源以及使用的体验上,的确要比其他虚拟机软件更胜一筹,赢得市场也就不足为奇了。
VMware Workstation 的网络有三种:NAT, Host-only 和 Bridge。接下来我会分别介绍这三种网络之间的区别。
当在 Windows 上安装 VMware Workstation 之后,会发现在网络适配器中多出了一个 VMnet8 的连接,这个连接就是 VMware 的默认 NAT 连接。这个 NAT 的连接方式和平常理解上的 NAT 的工作原理有点差异,VMware 是建立了一个路由器,WAN 连着宿主机的网络,因此可以访问到 Internet 如果你的宿主机可以的话,LAN 连接不同的 VM。而 VM 的网络是由 VMware 的一个 DHCP 服务器分配的,也就是说 VMware 内部还拥有一个局域网,该网络连接着软件所管理的所有 VM。
所以,在 VMware 的 NAT 网络模式下:
这种模式也叫做仅主机网络,与 VMware 与中 NAT 的区别在于 VM 不能访问到宿主机可访问到的外部网络资源,因此在这种模式下,VM 无法连接到 Internet ,作用一般是在内网环境中增加安全性。
在 VMware 的 Host-only 网络模式下:
桥接模式,桥接网络之后虚拟机的虚拟网卡在网络拓扑结构中将与宿主机物理网卡地位等同,这样只要 VM 的网卡能够被正确配置,VM 可以直接访问到外部网络资源。
我自己一直都使用的是免费开源的 VirtualBox , 然而 VirtualBox 的 NAT 模式和 VMware 的工作原理并不一样,因此也就产生了前面的闹剧。
在 VirtualBox 中,NAT 网络模式是直接 “复制” 宿主机的网络,也就是传统 NAT 的连接方式。因此 VM 所获得的 IP 应该是宿主机的网络 IP,而不是一个内部局域网 IP。这是这两个软件在网络上区别最大的地方。
因此,在 VirtualBox 的 NAT 网络模式下:
这种模式也叫做仅主机网络,在这种模式下,VM 无法连接到 Internet ,但是可以和宿主机互通。
在 VirtualBox 的 NAT 网络模式下:
基本与 VMware 的 Bridge 模式相同。