VirtualBox NAT 网络为何只能是单向的?

VirtualBox NAT 网络为何只能是单向的?

当 VirtualBox 中的虚拟机使用 NAT 网络时,它能够与主机通信,但主机无法与虚拟机通信(例如 ping)。这怎么可能?是一些 iptables 设置吗?

看着ip a虚拟机我看到了eth0 10.0.2.15/24。在我的主机上,该网络中没有接口。那么我想知道,沟通如何可能?为什么它只是一个方向?

另一个问题,我认为它是相关的(如果没有,请告诉我,我将创建另一篇文章):在主机上我有一个正在运行的 docker 容器,连接到默认的 docker0 桥。它的IP是172.17.0.2.我想从上面提到的同一个虚拟机(Virtualbox、NAT)对其执行 ping 操作。由于虚拟机也安装了 docker,因此它也有 docker0 网桥,其网络 CIDR 与我的主机上的 docker0 相同。然后,我使用以下 ping: ping -I eth0 172.17.0.2。这应该会强制流量通过 VM 的 eth0,据我所知,它与我的主机有连接(因为我可以自由 ping 我的主机)。所有数据包都丢失。这是为什么?

答案1

如果不为该虚拟 NAT 网络配置端口转发,则无法访问 VM。解决问题的简单方法是将网络适配器更改为桥接适配器。

如果更改网络适配器的模式,虚拟机将像网络​​中的另一台设备一样并且可以访问。

我让你这里关于这个主题的文档和一个小表格来理解这一点:

启用 NAT 的虚拟机的行为与通过路由器连接到 Internet 的真实计算机非常相似。在本例中,路由器是 Oracle VM VirtualBox 网络引擎,它透明地映射来自和到虚拟机的流量。在 Oracle 中VM VirtualBox 该路由器放置在每个虚拟机和主机之间,这种分离最大限度地提高了安全性,因为默认情况下虚拟机无法相互通信。

NAT 模式的缺点是,就像路由器后面的专用网络一样,虚拟机是不可见的,并且无法从外部互联网访问。除非设置端口转发,否则无法以这种方式运行服务器。”

在此输入图像描述

在此输入图像描述

相关内容