如何使用 Host-only 将 Mac OS X 上的 Internet 连接共享到 Virtualbox vm

red*_*ben 4 networking virtualbox bridge macos

在一行中:是否有以下可能:AirPort <- Mac OS X 桥 -> vbox-Host-only -> VM's

在 Mac OS X 上,我有一个带有虚拟机的VirtualBox。现在我已经为我的虚拟机配置了 2 个接口。eth0是我的 VM 访问 Internet 的正常桥接器(连接 AirPort 时)。eth1设置为仅主机,因此当没有 Wi-Fi/AirPort 关闭时,我可以从主机访问我的 VM。所以基本上它就像有 Wi-Fi 时的适配器 1,没有时的适配器 2。

我只想有一种配置以使其更简单。我以为我可以只保留 Host only 配置,然后在主机 (Mac OS X) 上转到 Internet 共享并选择“从 AirPort 共享”到 vboxnet0(vb 虚拟接口)。只是发现 vboxnet0 没有出现在 Mac OS X 首选项的接口列表中。

我知道在 Linux 主机上你可以安装一个叫做 bridge-utils 的东西,并用它来桥接两个接口。Mac 上有类似的东西吗?

Maj*_*nko 5

这实际上是一件很简单的事情,但确实需要一定程度的网络和路由技术知识。

虽然使用某种形式的 NAT 将仅主机网络连接到网络的其余部分应该是可能的,但所谓的“双 NAT”是不受欢迎的。双重 NAT 是指在网络中发生两次网络地址转换,为通过网络传输的数据包增加额外开销,应尽可能避免。

您可以很好地完成您想要实现的目标,而无需任何 NAT。

基本上,理论是,您创建一个单独的网络,即仅主机网络,在 Mac 上打开 IP 转发,并在机场上设置静态路由。

假设您的正常网络是 192.168.1.0/24,机场是 192.168.1.1,而您的 Mac 是 192.168.1.200。您需要在 Mac 上使用静态 IP 地址才能使其正常工作。Host Only 网络已经分配了一个 IP 范围,为了争论起见,假设它是 10.0.0.0/24,Mac 端在 10.0.0.1 上,VM 在 10.0.0.8 上运行。

所以我们要实现:

Airport <--------------------> Mac <----------------------> VM
192.168.1.1       192.168.1.200 |10.0.0.1             10.0.0.8
Run Code Online (Sandbox Code Playgroud)

在 Mac 上打开 IP 转发是一件很简单的事情。如果您使用的是 10.5 或更低版本,请查看 /etc/hostconfig 文件并找到 IP 转发的行(我忘记了它到底是什么)并将其设置为 YES。在所有其他版本的 OS/X 上,实际上在 10.5 或更低版本上,您可以修改 /etc/sysctl.conf 并添加:

net.inet.ip.forwarding=1
Run Code Online (Sandbox Code Playgroud)

完成后,您可以通过键入(以 root 身份)来打开转发而无需重新启动:

sysctl -w net.inet.ip.forwarding=1
Run Code Online (Sandbox Code Playgroud)

好的,现在网络数据包可以从主网络到达 Host Only 网络。但是我们如何将这个 Host Only 网络告诉网络的其余部分呢?目前只有 Mac 知道它。

嗯,这又是一件简单的事情。您不必告诉网络上的所有主机,只需告诉所有设备的一个公共呼叫点 - 默认网关 - 在本例中为 Airport。

现在,我没有使用过机场,所以我不能告诉你在哪里可以找到你需要更改的设置,但该设施会在某个地方。

您正在寻找可以指定静态路由的设置。它可能被标记为这样,或者被标记为路由表或类似的东西。当您找到它时,您需要通过 Mac 为 Host Only 网络设置路由。这是在Mac 上拥有静态地址至关重要的地方。您需要设置的路由将使用类似于以下设置的内容(来自上面的示例。将数字替换为您的实际 IP 地址和网络掩码):

Network: 10.0.0.0        Network address of the Host Only network
Netmask: 255.255.255.0   Netmask of the Host Only Network
Gateway: 192.168.1.200   IP address of your Mac.
Run Code Online (Sandbox Code Playgroud)

一旦你设置了这条路由,任何以你的 Host Only 网络为目的地的流量将首先到达机场,它会回应“实际上,你不想和我说话,你想和 192.168.1.200 说话”并且流量将重定向到您的 Mac - 进而将其传递到 Host Only 网络。

唯一需要确定的是,在 VM 中运行的来宾操作系统为其网络设置了默认网关。这需要是 Host Only 网络的 Mac 端(上例中的 10.0.0.1)。

那么这是如何在互联网上获取虚拟机的呢?嗯,很简单:它实际上扩展了您的网络以包括 Host Only 网络,而路由器(机场)负责其余的工作。它处理 NAT,并知道哪些流量用于主网络,哪些流量用于 Host Only 网络。