Virtualbox 主机与启用了 NAT 的客户机之间的网络连接

Virtualbox 主机与启用了 NAT 的客户机之间的网络连接

我在 Oracle VirtualBox 中安装了客户 Ubuntu 操作系统。我使用 Ubuntu 10.04 作为主机(基础)操作系统,并采用静态公共 IP 地址。

仅当我在 VirtualBox 设置中选择 NAT 作为网络模式时,我才能在客户机(VirtualBox)操作系统上访问 Internet,这很好,但是主机(基础)到客户机(VirtualBox)网络不起作用。

我想通过 ssh 从主机连接我的客户操作系统。

我需要一个逐步的指南。

答案1

我为 Linux Journal 撰写了一篇关于 VirtualBox 中 NAT 内端口转发的 HOWTO,地址如下: http://www.linuxjournal.com/content/tech-tip-port-forwarding-virtualbox-vboxmanage

使用 VBoxManage 实用程序将未使用的本地端口(如 2222)转发到虚拟机的端口 22(假设您使用虚拟机上的默认端口),这将使您可以轻松地通过 SSH 进入虚拟机。

答案2

当您为 Guest 实例使用 NAT 时,VirtualBox 会创建一个单独的“子网”(10.xxx),Guest 实例将在其中运行。为了访问这些实例,您需要在主机系统上设置静态路由。有很多链接/指南都提到人们已经这样做了。

或者,您可以使用桥接网络代替 NAT。桥接网络会将客户机实例置于与主机操作系统相同的网络中,从而让您直接访问。

答案3

原因是,在 NAT 模式下,VirtualBox 可以有效地为虚拟机提供 Internet 流量的路由,而在桥接模式下,您必须自己执行此操作。换句话说,您需要将主机设置为 Internet 网关(具有转发和 SNAT 或伪装功能)。在桥接模式下,您的客户机的行为就像防火墙后面 LAN 上的完全独立的计算机(或 Internet 上的完全独立的计算机,但这需要单独的静态 IP 地址),这正是运行虚拟机的全部意义所在。

由于您可能只有一个静态公共 IP 地址,因此您需要将另一个(内部)IP 地址绑定到主机操作系统,无论是在同一个接口上还是在不同的接口上,然后允许客户机从 DHCP 服务器获取同一内部子网上的 IP 地址或以此方式静态配置它。然后,您在主机上设置 iptables 以从外部 IP 转发到内部 LAN,再加上 SNAT/MASQUERADE 的相关规则,一切都应该没问题。

答案4

带端口转发的 NAT 对我来说不是一个选择。我希望 VirtualBox 能够像 VMWare Workstation 的 NAT 一样工作,这样我就可以使用一致的 IP 从主机 ssh/浏览到我的客户机,而客户机仍然可以访问互联网。要做到这一点,需要为客户机配置两个网络适配器,一个 NAT 和一个 Host-Only (vbox0)。完整说明可在此处找到:

http://christophermaier.name/blog/2010/09/01/host-only-networking-with-virtualbox

相关内容