我在两个不同的主机上安装了 VMWare Workstation 7.1.x 和 Virtualbox 4.0.8,以便进行比较。
我将两者的虚拟网络适配器都设置为 NAT,两者都成功了。结果:
Virtualbox 地址:10.10.2.13 VMWare 地址:192.168.0.20
分配给 VMWare 客户端的 IP 是预期的。但我对分配给 virtualbox 的 IP 地址感到惊讶。这些机器位于我的家庭网络上,只有 NAT 地址 (192.168.xx),所以当我看到 10.10.2.x 时 - 我有点惊讶。
然后我将两个虚拟机都切换为使用桥接网络。VMWare 客户机继续使用 NAT 地址,但 Virtualbox 也开始使用 NAT 地址。
简而言之,我认为 VMWare 客户机的行为符合我的预期。Virtualbox 的行为对我来说很奇怪。如果有的话,我本来希望 Virtualbox 做相反的事情(对 NAT 局域网适配器使用 NAT 地址,对桥接例程使用非 NAT 地址)。别误会我的意思,我很惊讶看到 Virtuabox 有非 NAT 地址 - 在任何配置下。
但有人能解释一下我为什么会得到这样的结果吗?IP 地址 10.10.2.x 在我的家庭网络上是如何/为何“工作”的?
请记住,两个 VM 客户机始终都拥有成功的网络连接。
答案1
在我看来这一切都很正常。
10.0.0.0/8(以及 172.16.0.0/12)以下的任何地址都是完全正常的 NAT 地址。当您将虚拟机置于 NAT 模式时,该软件本质上充当了客户机的 dhcp 服务器,并将对主机网络进行转换,以便特定主机上的所有客户机与主机共享一个 IP。任何这些范围内的任何地址都适合 NAT。看来 VMWare 默认使用 192.168.0.0/24 范围,而 VirtualBox 使用 10.0.0.0 范围。两者都很好,没有哪个比另一个更好(尽管我个人更喜欢 10.0.0.0 范围,因为可用的地址多很多倍)。
听起来你可能希望 NAT 模式使用主机网络和互联网之间的 NAT,但事实并非如此。事实上,这就是桥接模式的作用。切换到桥接模式意味着你的 VM 客户端现在直接连接到你的家庭路由器的 dhcp 服务器以获取地址。VirtualBox 和 VMWare 现在都将从同一个地方获取地址。VMware 也会发生变化,只是旧模式和新模式从类似的池中分配地址。
答案2
10.xxx 范围正式未分配并且与 192.168.xx 一样供内部使用,因此使用此范围的地址并不比使用 192.168.xx 子网更奇怪(它并不常见 - 大多数不使用 NAT 和/或 DHCP 的消费设备默认为 192.168.0.0/16 内的 /24)。
172.16-32.xx 也被保留用于私有寻址,但是这些寻址甚至不常用。
10.10.2.x 范围仅对 virtualbox 及其使用 NAT 网络适配器运行的 VM 可见。对于传出连接,它将通过 NAT 转换为 VMWare 主机的 NIC 使用的地址,然后将答复转换回来 - 这与 VMWare 使用 192.168.something.0/24 范围所做的没有什么不同。
答案3
您的定义中的“非 NAT”地址是什么?您的意思是“本地网络”地址。我认为您在这里理解有误。
如果您在虚拟化解决方案的设置窗格中选择“NAT”,那么最终为客户机提供哪种 IP 并不重要,这要归功于 NAT。在这种情况下,它就像一个网关(路由器),将客户机隐藏在外部网络中,但仍可访问互联网。
NAT 之所以存在,是因为本地网络地址 192.168.0.20 可能在全球存在一百万次。因此,这些一百万次地址不会互相干扰,它会将这些“本地”地址转换(因此有“网络地址转换”一词)为路由器从 ISP 获得的互联网 IP。
维基百科文章描述得比我好。