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