Virtualbox NAT 和仅主机连接

Virtualbox NAT 和仅主机连接

由于我在多个地点工作,因此我的开发服务器出现了问题。由于我在各种网络上工作,因此我不想每次更换网络时都配置虚拟机的网络设置。有时网络要求我使用 DHCP。(公共图书馆等)

另外,我必须经常更换网络适配器,我更喜欢以太网,但有时我必须使用无线工作。

因此存在很多不同的网络,甚至不同的适配器。

要求

  • 网络连接
  • 从客户机访问主机
  • 从主机访问客户机

我正在寻找一种配置,这样我就不必更改我的(虚拟机)网络设置。因为我必须更改网络(适配器)

眼镜

主机:Ubuntu,Virtualbox 客户机:debian。无线接口:wlp2s0 eth 适配器:eth1

尝试 #1

只需使用 NAT。

  • 向 Virtualbox 添加了 NAT 适配器:(10.0.2.0/24,已启用 DHCP)
  • 向客户机添加了 NAT 适配器。
  • 配置访客界面:
    • 自动 eth1
    • 允许热插拔 eth1
    • iface eth1 inet 静态
    • 地址 10.0.2.5
    • 网络掩码 255.255.255.0
    • 网关 10.0.2.2
    • 网络 10.0.2.0
    • 广播 10.0.2.255

通过此配置可以进行以下工作:

  • 网络连接
  • 从客户机访问主机

采用此配置,以下操作不起作用:

  • 从主机访问客户机

这似乎是使用 NAT 时的一个限制。

尝试#2

NAT 与桥接连接结合:

  • Virtualbox NAT 适配器(10.0.2.0/24,已启用 DHCP)
  • Virtualbox 桥接适配器(192.168.56.1/24,已启用 DHCP)

因为有时我必须从无线切换到以太网,所以我还尝试为主机上的两个网络适配器配置桥接适配器。

主机IP:192.168.56.101 客户机IP:192.168.56.100

通过此配置,以下操作可以工作:

  • 网络连接
  • 从客户机访问主机

采用此配置,以下操作不起作用:

  • 从主机访问客户机

此示例存在问题,因为对于桥接连接,主机 IP 必须设置在桥接适配器的 IP 范围内。有时我不能这样做,因为我需要使用 DHCP。

鉴于我尝试的细节,你们能建议我一种实现我的目标的替代配置吗?

答案1

几天前我还在为这个问题苦苦挣扎。要解决这个问题,一个简单的设置需要在客户机上使用两个适配器。

  1. NAT:这将允许访客与外部网络进行通信,并且客户机到主机。要查看用于与主机通信的 IP,请在客户机上的ifconfig / ipconfig输出中查看主机的 IP。这是 NAT 网络的网关。这不会显示在ifconfig主机上,因为 VirtualBox 为每个虚拟机创建了一个 NAT 网络。

  2. 仅主机:这将允许主机和客户机之间进行通信。默认情况下,VirtualBox 使用 DHCP 分配客户机 IP,但您可以使用低于 192.168.56.100 的 IP 为客户机分配静态 IP

如果您有多个客户机并且想要在客户机之间进行通信,您还可以设置第三个可选内部适配器。这是我上周就此问题提出的问题:*编辑* 使 virtualbox 主机仅网络双向

答案2

好的,有两种方法可以做到这一点。

1) 在客户端上使用 VirtualBox NAT 网络。这不提供从主机直接路由,但您可以设置首选项以转发端口。设置起来有点麻烦,但如果主机是 Windows 或 Mac,我可能会这样做,主要是因为我不确定这些系统上的防火墙/natting/路由功能(很确定 Mac 不会有问题,但我不知道 Windows)

2) 使用 VirtualBox Host Only Network。根据您的描述,这可能更好。请注意,您需要更改防火墙脚本以指向所连接的任何设备……以下是详细信息。

在主机上,首先在 vbox 首选项中设置仅主机网络。在管理器中,单击文件,然后单击首选项,然后选择网络。切换到仅主机,然后根据需要添加一个。以下是我的网络: hostonly 网络选项卡 1

Hostonly tab2

接下来,在主机上配置 vboxnet0 接口。它会自动为我设置主机,将我的主机设置为子网中的 .1 地址。这是ifconfig我的主机上的输出,引用了我的以太网和 vboxnet0 地址。

主机上的 ifconfig 信息

在您的客户机中,将网络设置为子网中的某个地址(即使启用了 DHCP 服务器,这也使得获取网关/dns 服务器变得更容易)并以通常的方式设置名称服务器(即,/etc/network/interfaces在那里编辑和设置静态地址/网络掩码/网关,然后/etc/resolv.conf在那里编辑和设置名称服务器)。

此时,您的主机和客户机应该能够毫无问题地相互通信。您可能希望输入适当的条目,/etc/hosts这样您就不必到处输入 IP...

最后一步是让客户机上网。这很简单,只需将主机变成路由器即可。由于接口vboxnet0直到 vbox 启动并运行后才会出现,因此您不想在主机启动时执行此操作。

一个简单的防火墙脚本,允许客户虚拟机访问世界,并且主机仍然可以访问世界和 vboxonly 网络中的客户机。 请注意,此脚本可能更加安全. 实际上,它会接受主机所连接的任何网络上的某些客户端,并使用您的主机作为客户虚拟机的网关。

#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables=`which iptables`

$iptables -F

/sbin/iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE

$iptables -A FORWARD -i enp2s0 -o vboxnet0 -j ACCEPT
$iptables -A FORWARD -i vboxnet0 -o enp2s0 -j ACCEPT

答案3

在 VirtualBox 版本 5 中,当您同时使用 NAT 和 Host-Only 时,会出现冲突。您将看到 VM 的 Host-Only 适配器没有由 DHCP 分配的 IP 地址。

有两种可能的解决方案:

  1. 安装最新版本的 VirtualBox
  2. 将 NAT 和 Host-Only 替换为单个“桥接”

参考 VirtualBox 文档第 6 章:

NAT

启用了 NAT 的虚拟机就像通过路由器连接到互联网的真实计算机一样。在这种情况下,路由器是 Oracle VM VirtualBox 网络引擎,它透明地映射来自虚拟机和到虚拟机的流量。

NAT 模式的缺点是,就像路由器后面的私有网络一样,虚拟机看不见、摸不到来自外部互联网。

相关内容