VirtualBox 中 NAT 网络中的虚拟机无法访问 Internet

ehs*_*san 18 virtualbox nat virtualbox-networking

我在 Ubuntu 14.04 LTS 中的 VirtulBox 5 中创建了一个 NAT 网络,设置如下

Natework Name : NatNetwrok1
Network CIDR: 10.0.2.0/24
Support DHCP :enabled
Support IPv6 :disabled
without any port forwarding

此外,我有两个虚拟机(两个都是 Xubuntu 克隆),我已经设置了网络设置以在每个虚拟机上启用两个网卡,并在所有四个适配器中使用以下设置:

附加到:“NAT 网络”
名称:“NatNetwrok1”

当我运行两个虚拟机时,我可以在运行 ifconfig 命令时看到以下设置

Xubuntu1 上的 ifconfig 结果

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)
Run Code Online (Sandbox Code Playgroud)

Xubutracentu2 上的 ifconfig 结果

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)
Run Code Online (Sandbox Code Playgroud)

在这 4 个 IP 之间 Ping 工作正常
但是我无法在这些虚拟机中的任何一个上访问 Internet
虽然如果将“NAT 网络”更改为“NAT”我可以访问网络但似乎成为不同虚拟网络的一部分并且我无法 ping有没有
人可以帮我识别和解决问题

谁能解释一下NATNAT 网络之间的区别

小智 7

根据 VirtualBox 手册,这些是您的 VM 的网络可能性:

  • NAT: VM 和主机之间的内部网络。此外,您还可以访问 Internet。NAT 模式下的两个或多个 VM 之间没有连接,仅与主机和 Internet 连接。

  • 内部:具有此配置的所有 VM 将在它们之间建立连接,但不与主机或 Internet 连接。

  • 仅主机:将在主机和具有此配置的所有 VM 之间创建虚拟网络,但您将无法访问 Internet。

  • NAT 网络:您可以访问同一预定义 NAT 网络和主机中的所有虚拟机,但无法连接到 Internet。

  • 桥接:您的 VM 将与您的主机位于同一网络中,就像它是该网络中的其他计算机/服务器一样,因此,如果您的主机拥有 Internet 访问权限,它将具有 Internet 访问权限。

  • 通用:很少使用高级和更具体的配置。

因此,如果您想创建一个与主机连接的内部网络,请选择 NAT 网络,但请注意,您将无法访问 Internet。仅当您只想从 VM 访问 Internet 而没有其他任何事情时,才会设置 NAT。

但是,如果您希望在两个 VM 和 Internet 之间建立连接,那么这些设置都不适合您。据我所知,您唯一的选择是在桥接模式下配置两个虚拟机,因此它们将是您主机网络中的“不同”计算机,您将能够从其中任何一个 ping 它们和 Internet。

另一方面,您似乎从另一个虚拟机克隆了一个虚拟机,因为两台机器具有相同的 MAC 地址(ifconfig 命令信息中的HWaddr),请注意您应该选中“重新初始化所有网卡的 MAC 地址”复选框“克隆时。具有相同 MAC 地址的两个设备总是会产生问题。

我不是 VirtualBox 的专家,所以也许其他用户可以告诉你其他可能的配置来获得你想要的。我希望这个信息对您有所帮助。

有关更多信息,您可以阅读此内容

  • *NAT 网络* 会阻止您的客人连接到互联网是不正确的。我可以从 NAT 网络上的 VM 来宾连接到 Internet。根据 https://forums.virtualbox.org/viewtopic.php?f=3&t=69504 上的最后一条评论,“NAT 模式意味着每个 VM 都被隔离在自己的路由器后面...... NAT 网络与 NAT 相同,不同之处在于您可以有多个 VM 连接到同一个内部路由器。” (3认同)

MrM*_*ros 7

为什么不工作?

在 16.04(可能还有 14.04)中,VirtualBox (5.0.36)的主要打包版本的NAT 网络功能被窃听

核实!

您可以自己检查:如果ls /usr/lib/virtualbox/VBoxNetNAT可执行文件存在,那么您可能有其他类型的问题。

修理它!

此错误已在较新版本中修复。所以你应该安装一个新版本:

删除旧版本

例如,如果您使用安装apt,则可以运行:

sudo apt remove virtualbox --auto-remove
Run Code Online (Sandbox Code Playgroud)

安装新版本

该修复程序可用于较新版本 (Ubuntu yakkety+)。对于旧版本:

  • 访问 virtualbox.org,并手动下载最新版本
  • 或者
  • 使用以下脚本:

    # add the official repository
    wget -q -O - https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo apt-key add -
    echo deb http://download.virtualbox.org/virtualbox/debian `lsb_release -cs` non-free contrib | sudo tee /etc/apt/sources.list.d/virtualbox.org.list
    # install the newer version
    sudo apt install virtualbox-5.1
    
    Run Code Online (Sandbox Code Playgroud)


Jul*_*oHM 7

我使用来自默认 apt 存储库的 VirtualBox 5.0.40 遇到了这个问题。为了解决这个问题,我将每个 VM 配置为使用两个网络接口。

  • 适配器 1:桥接适配器(到您的真实网卡)
  • 适配器 2:NAT 网络(您选择)

在 guets 操作系统 (Ubuntu 16.04) 下,您需要进行调整/etc/network/interfaces才能显示第二个界面。就我而言,我需要 VM 在 NAT 网络内使用静态 IP,所以这就是我得到的。

## Bridge to Internet
auto enp0s3
iface enp0s3 inet dhcp

## NAT Network among VMs
## Static is optional
## DHCP if you don't need it
auto enp0s8
iface enp0s8 inet static
  address 10.10.11.100
  netmask 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

当然,这假设我的 NAT 网络使用子网10.10.11.0/24。根据您的情况调整数字或将其留给 dhcp,如您所愿。

注意:在静态配置中需要注意的一件重要事情是,对于这种特殊情况,您不能为其分配默认网关。提供enp0s8默认值(如 10.10.11.1)将导致操作系统创建到此网关的路由,该路由也可能会破坏您的互联网访问。您应该只在此特定接口需要路由到其他网络时才需要这样做,除了配置给它的网络。

要找出 Ubuntu 为您的环境分配的接口名称,您可以dmesg | grep eth.

在此处输入图片说明