如何使LAN访问lxd容器

如果我使用Virtualbox启动虚拟机,则可以select“桥接”作为networking适配器types,这将导致guest虚拟机/虚拟网卡连接到我的物理LAN,从而从我的路由器(通过DHCP)获取LAN IP。

我想实现相同的function,但不是使用Virtualbox,我想使用lxc / lxd容器。

我怎样才能做到这一点?

编辑1

我正在运行Ubuntu,我试着按照这个指南:

https://insights.ubuntu.com/2015/11/10/converting-eth0-to-br0-and-getting-all-your-lxc-or-lxd-onto-your-lan/

…但它没有帮助。 原来的主机接口应该有一个IP后? 因为它不会当我尝试手动桥接。

编辑2

如果有帮助,我的lxd / lxc主机是运行Ubuntu的Virtualbox虚拟机,通过桥接networking连接到我的物理以太网网卡。

编辑3

如果我使用tcpdump来监视网桥接口,物理/主机接口和容器/虚拟接口上的icmpstream量,则只有容器/虚拟networking没有任何stream量。 另外两个呢。

编辑4

根据这个指南:

http://www.microhowto.info/troubleshooting/troubleshooting_ethernet_bridging_on_linux.html

我的桥接设置没有问题。

但正如在“编辑3”中提到的,容器接口没有获得任何stream量。 需要解决的原因,但我不知道如何…

我有一种感觉,它与路线有关。

该容器没有路线,而主机呢。

编辑5

使用tcpdump监视arpstream量,显示arpstream量实际上正在进入容器/虚拟接口。

所以这只是icmpstream量不是。

编辑6

如果我在容器中设置一个静态IP(通过/ etc / network / intefaces *),允许我从主机(这是一个Virtualbox机器)ping容器。

如果我然后在Virtualbox中更改networkingconfiguration以允许混杂stream量,则可以从我的物理机器(Virtualbox机器的主机)ping容器。 然而,从这里起,我仍然无法从容器内超越我的物理局域网。

最后一步,如果我手动添加容器中的“默认”路由,如下所示:

route add default gw 192.168.0.1 eth0

这使我能够从容器内部ping物理局域网之外。

所以除非别人可以提供解释(我会在发布答案之前等待),我猜测缺less容器DHCP支持(通过桥接)与lxc / lxd使用netmasq处理DHCP的事实有关(和DNS)。

您需要创build一个网桥接口,您的主机操作系统接口将成为一个接口,然后将lxc容器连接到此网桥 – 这样您将获得正确的桥接连接。

部分容器configuration将如下所示:

 lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 

虽然您的操作系统网桥configuration将实际上是发行版特定的。

  1. 如果您的LXD主机实际上是虚拟机,请确保将虚拟机的networking适配器configuration为混杂模式,以便LXD容器stream量从物理networking传递到虚拟networking。
  2. 在lxd容器中设置静态IP地址,因为DHCP(来自物理网关)似乎不起作用。

在我的第六次编辑中,我说我需要在容器中手动添加一个默认路由,但事实并非如此。 我只需要这样做,因为我忘了在/etc/network/interfaces文件中指定网关LAN IP地址。 所以这不是一个LXD问题,只是不要忘了指定它。