如果我使用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将实际上是发行版特定的。
在我的第六次编辑中,我说我需要在容器中手动添加一个默认路由,但事实并非如此。 我只需要这样做,因为我忘了在/etc/network/interfaces文件中指定网关LAN IP地址。 所以这不是一个LXD问题,只是不要忘了指定它。