如何在 VirtualBox 中将 VM 添加到 VM 网络?

如何在 VirtualBox 中将 VM 添加到 VM 网络?

我有一台运行两台虚拟机的 Linux Mint 19.0 主机 - 一台是 Ubuntu 服务器(仅控制台),另一台是带有 GUI 的 Linux Mint 19.3。我计划在服务器实例中运行 Kubernetes 并使用 GUI 对其进行控制kubectl。为此,我首先要在两台虚拟机之间建立一条网络路径,这样我就可以从另一台虚拟机 ping 通另一台虚拟机。

在我使用的几种资源中本指南了解如何执行此操作。该部分的本质是,可以使用“内部网络”VirtualBox 网络类型(作为默认网络之上的辅助网络)连接两个或多个虚拟机,唯一需要注意的是,对于所有需要加入网络的虚拟机来说,网络都是相同的。

但是,我尝试了,但并没有成功。我原本以为两个虚拟机中都会出现一个新的(虚拟)网络设备。使用ifconfig,服务器中没有显示任何内容,尽管 GUI VM 显示了适配器,但连接却屡屡失败。

我发现另一个文档资源,我需要一个“桥接适配器”。我将两个虚拟机都换成了这个,这里需要选择一个主机适配器,所以我把它设置在两个虚拟机的唯一主机适配器上。这让我更接近了——网络在 GUI VM 中自动检测并成功连接。然而,在我的服务器 VM 中没有类似的运气——ifconfig没有给我带来任何新的东西。

我已确保两个虚拟机上都安装了 Guest Additions。

最后,我发现了一些手动配置静态 IP 的建议,因此我在服务器虚拟机中尝试了这个:,

# /etc/network/interfaces

iface enp0s8 inet static
    address 192.168.43.188
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.43.255
    gateway 192.168.43.1
    dns-nameservers 192.168.43.1

但是我不太确定这不是遗留文件,而且更改也没有什么不同。我可能正处于尝试随机事物的阶段,这没有什么成效。接下来我可以尝试什么来配置它?我觉得这个任务应该非常简单。

观察

所以问题只是在控制台 VM 中 - 我认为完整 GUI VM 没问题。我注意到一件奇怪的事情,那就是如果我ifconfig在服务器 VM 中执行 ,我会获得enp0s3和的配置lo。但是,如果我执行ifquery --list,我只会获得 的设备lo

这表明这些if命令没有被使用(事实上我必须ifconfig手动安装)。我会尝试看看是否还有其他命令可用于启动或关闭网络设备。

更新

根据评论建议,我尝试创建 VirtualBox 网络设备,因此:

  • 姓名:vboxnet0
  • 适配器选项卡:“自动配置适配器”(勾选)
  • DHCP 服务器选项卡:“启用服务器”(勾选)

我单击“应用”并出现一个对话框,其中显示NS_ERROR_NOT_IMPLEMENTED

我将尝试其他网络类型。

答案1

@Zina 的一系列有用评论帮助我深入了解了这个问题。

首先我确认有两个网络适配器可用,即使它们没有启动:

sudo cat /proc/net/dev

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
enp0s3:    2360       4    0    0    0     0          0         0     2170      14    0    0    0     0       0          0
enp0s8:       0       7    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

然后我添加了这个简单的命令/etc/network/interfaces来使用 DHCP 启动一切:

auto lo

auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet dhcp

现在我们取得了一些进展ifconfig

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fe00:6ca9  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:00:6c:a9  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 2360 (2.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 2310 (2.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.105  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::a00:27ff:fe9e:4ec0  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:9e:4e:c0  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1427 (1.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1550 (1.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

然后我可以在两个虚拟机中执行操作ifconfig来找到每个虚拟机的 IP,以便可以从一个虚拟机 ping 另一个虚拟机。

我不知道为什么第一个网络适配器会自动启动,并且interfaces文件为空,而第二个却不会。此外,我的 GUI VM 仅引用文件中的环回适配器interfaces,但似乎会自动启动两个网络设备。

相关内容