在 Windows 上的 VirtualBox 中,我有一个运行 Ubuntu Server 的客户机,其中运行着 apache2 和 openssh-server 服务。配置文件/etc/network/interfaces
为其提供了一个静态 IP 10.10.10.2/24,并且在虚拟机的属性中,网络适配器设置为仅主机。主机上的 VirtualBox 仅主机以太网适配器的 IP 为 10.10.10.1/24。这些地址与主机不在同一范围内(主机由 DHCP 分配,范围为 192.168.1.0/24)。
从主机,我可以浏览到 10.10.10.2 并查看 Apache 的“它有效”页面,并且我可以通过 SSH 连接到 10.10.10.2 并登录到客户机。一切正常。
不过,我的目标是在 Ubuntu Server 主机(而不是 Windows 主机)上运行相同的 Ubuntu 客户机。因此,我已将客户机导出为设备,并将其导入 Ubuntu 上的 VirtualBox。由于 VirtualBox Host-Only Ethernet Adapter 是 Windows 专用的,而在 Linux 上,适配器称为 vboxnet0,因此我习惯于vboxmanage modifyvm <foo> hostonlyadapter1 vboxnet0
适当地更新客户机。客户机无头启动,没有任何错误,但从主机,我无法wget 10.10.10.2
或ssh 10.10.10.2
。两个命令都显示“没有到主机的路由”。ping 10.10.10.2
原因From 10.10.10.1 [...] Destination Host Unreachable
。
我在 Ubuntu 上还需要做什么额外的事情,而这些事情必须在 Windows 上自动发生,以便主机可以通过仅主机网络访问客户机?
答案1
我猜是你的 ubuntu 服务器没有自动配置 vboxnet0(也就是主持人计算机)正确。您可以使用以下命令验证这一点ifconfig
- vboxnet0 应该存在并列出正确的 IP 配置。
如果 vboxnet0 不存在,则需要创建它(参见这个描述如何做到这一点)。
如果它确实存在,则可能需要手动配置(通过编辑 /etc/interfaces 或任何其他推荐用于 ubuntu 的方法)。
答案2
我在 osx 主机上遇到了类似的 vitrualbox 行为。当您启动客户机时(如您所述,您执行“无头”启动),它会创建 vboxnet0 接口,将其发送上去,等等。
如果您在 VM 启动之前自己创建 vboxnet0(通过 vboxmanage),则 VM 将不会重复使用您所做的操作。事实上,我最终写了一个脚本,ifconfig vboxnet0 down
在调用 VM start 之前确保 VM 自行配置接口。这是相当违反直觉的。
如果它在 ubuntu 主机上运行良好,请告诉我。
答案3
听起来这是 VM 主机内部路由的问题。要修复它,您需要检查桥接网络是否已打开,它应该在虚拟机的选项中。
以下是帮助您入门的文档: http://www.virtualbox.org/manual/ch06.html#network_bridged