LXD 内的 VirtualBox 无法与 LXD 的主机通信

LXD 内的 VirtualBox 无法与 LXD 的主机通信

我正在运行一个 Ubuntu 服务器(server-box),它运行一个 LXD 容器(lxd-box),LXD 正在使用我设置的以太网桥指南。lxd-box 正在运行 VirtualBox (vbox-box) 的一个实例。server-box、lxd-box 和 vbox-box 都运行 Ubuntu 16.04 服务器。vbox-box 正在使用 VirtualBox 的以太网桥接功能桥接到 lxd-box 上的 eth0,而 eth0 本身又桥接到 server-box 上的 enp5s0。

这三个客户端都从 LAN 获得了一个 IP 地址。这三个客户端都可以与任何其他 LAN 客户端通信。此外,lxd-box 可以与 server-box 和 vbox-box 正常通信。但是,vbox-box 和 server-box 无法通信。具体来说,我无法在它们之间发起双向 ssh 会话,但我可以发起往返 lxd-box 的会话。这不仅仅是 ssh,我还在少数几个端口上进行了测试,仅使用 netcat 发起原始 TCP 连接。行为相同。ssh 更方便。

有人知道为什么会发生这种情况吗?我认为这与发生的多重桥接有关,但我不确定。更重要的是,有人知道如何解决这个问题吗?

答案1

我遇到了类似的问题(尽管与您的情况略有不同)并且最终解决了。

我认为当有 2 个桥接器时,第一个是 lxd 桥接器,第二个是虚拟盒创建的桥接器,您可以通过 tuntap 设备将它们连接起来。

以下是详细信息

设想

  • ubuntu 16.04,具有:
  • lxd 2.0(带有 lxdbr0)及其中的几个容器
  • 虚拟机

在我的 VirtualBox 配置中,我提供了网络适配器并将其连接到桥接适配器,选择 lxdbr0。它似乎可以工作,但后来我发现了和你一样的问题,无法 ssh 到 ubuntu 主机,无法 ssh 到 lxc 容器(在同一桥上)等等……

在网上搜索后(抱歉我无法提供链接)我找到了这个解决方案。

在 ubuntu 16.04 机器上,具有 root 权限:

root@ubuntu:~# ip tuntap add mode tap tap0
root@ubuntu:~# ip link set tap0 up
root@ubuntu:~# brctl addif lxdbr0 tap0
root@ubuntu:~# brctl show

bridge name bridge id       STP enabled interfaces
lxdbr0      8000.4e76f4d676d5   no      tap0

将 tap0 添加到桥接器后,您可以设置虚拟机“桥接适配器类型连接”以连接到 tap0(已在另一个桥接器中)。

看来你应该桥接到一个接口而不是桥接到一个桥。

在您的场景中,您应该在 lxd-box 中创建 tap0。此 tap0 将添加到 2 个桥接器,一个在 lxd 上,另一个在 virtualbox 上。

答案2

以 @ayito 的回答为基础,您还可以制作持久设备。使用 root 权限tap0编辑并添加:/etc/network/interfaces

iface tap0 inet manual
    pre-up ip tuntap add mode tap tap0
    up ip link set tap0 up
    post-up brctl addif lxdbr0 tap0
    pre-down brctl delif lxdbr0 tap0
    down ip link set tap0 down
    post-down ip link del tap0

保存后,运行sudo ifup tap0

要验证它是否已开始运行brctl show。您应该看到tap0一个界面lxdbr0

每次重新启动计算机并想要使用该界面时,请运行sudo ifup tap0 注意:您也可以将其添加为启动脚本,但它必须在lxdbr0启动后运行。

在 Virtualbox 中,使用“桥接适配器”连接到tap0

VirtualBox 网络

现在您应该能够与您的 LXD 容器通信,并tap0在重启后轻松设置界面。

相关内容