![数据包如何从我的 VirtualBox 虚拟机路由到我的本地主机操作系统环境?](https://linux22.com/image/654062/%E6%95%B0%E6%8D%AE%E5%8C%85%E5%A6%82%E4%BD%95%E4%BB%8E%E6%88%91%E7%9A%84%20VirtualBox%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%B7%AF%E7%94%B1%E5%88%B0%E6%88%91%E7%9A%84%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%EF%BC%9F.png)
我有一个基本问题,我不明白关于在我的笔记本电脑上运行的虚拟机的 IP 地址。我使用boot2docker
(基本上,它会创建一个 VirtualBox 虚拟机来访问我 Mac 上的 Docker)。创建的虚拟机的 IP 为:
boot2docker ip // IP of the vm created
告诉我192.168.59.103
我的本地 IP 地址在哪里192.168.1.21
。
我在虚拟机中运行一个小网站,可以通过以下 URL 从本地机器的浏览器访问:http://192.168.59.103
我非常了解网络,所以我认为只有192.168.1.x
本地机器才能访问这些地址。为什么是192.168.59.103
可见的?
答案1
我非常了解网络,所以我认为只有
192.168.1.x
本地机器才能访问这些地址。为什么是192.168.59.103
可见的?
不,完全不是。如果是这样,那么您如何通过计算机访问此网站或互联网上的任何网站?
具体到您的情况,您的本地 IP 地址192.168.1.21
是从您的 LAN 路由器分配的地址(很可能是通过 DHCP 分配的)。
但是,这192.168.59.103
是您桌面上的网络(在您的计算机范围内,并且只在您的计算机范围内),该网络在 VirtualBox 虚拟“路由器”范围内运行192.168.59.x
。这意味着当您启动 Virtual Box 时,它不仅提供虚拟化环境,还模仿基本网络/路由器功能。
不太清楚你的 Docker 设置是如何工作的,但是如果你启动 Virtual Box 应用程序界面,然后选择特定的虚拟机,然后选择“网络”,你会看到其中一个活动适配器的设置应该是“NAT”,这当然代表网络地址转换和如 Virtual Box 官方文档中所述标题为“虚拟网络”(重要提示):
网络地址转换 (NAT) 服务的工作方式与家庭路由器类似,将使用它的系统分组到网络中,并阻止该网络之外的系统直接访问其中的系统,但允许内部系统使用 IPv4 和 IPv6 上的 TCP 和 UDP 相互通信并与外部系统进行通信。
就这么简单。Virtual Box 有自己的软件模拟路由器,嵌入到其核心网络代码中,用于处理 NAT 和其他路由。
因此,当您通过 Docker 或其他任何方式启动 Virtual Box 客户操作系统机器并连接到它时,您实际上是通过现有的小型独立网络路由器连接到它仅有的在您的桌面上。
现在,如果您想让该客户操作系统连接到本地桌面之外,有很多方法可以实现。但这远远超出了这个问题的范围。Virtual Box 的默认行为是在您的桌面上创建一个网络,仅供您用于连接到它正在运行/管理的客户操作系统机器。
答案2
如果你注意到,当你安装虚拟机时,它会告诉你你的网络连接可能会中断,因为它将要安装一个虚拟网络适配器在您的计算机中。因此,请检查您当前的网络适配器,您将找到那些虚拟适配器。
现在检查这些虚拟适配器的 IP 地址,您会发现其中一个适配器的 IP 地址为 192.168.59.X。因此,您使用此网络适配器连接到这些虚拟实例。这非常简单。