为 lxc 容器中的动态网络设备设置永久桥接?

为 lxc 容器中的动态网络设备设置永久桥接?

TL:DR 如何在不将网络设备添加到 /etc/network/interfaces 中的网桥配置中的情况下使网桥永久存在(重新启动后仍可正常运行)?

你好,我刚刚开始在 ubuntu 14.04 上玩 lxc。

我想要完成的设置是,一个容器带有 haproxy,一个容器带有 nginx。

我将通过 iptables 将外部请求 dnat 发送到 haproxy,然后从那里发送到 nginx。

所有容器都将位于自己的子网中。容器之间的路由/数据包过滤将由主机完成。

到目前为止我已经完成了一半的设置。

我使用 brctl 创建了两个网桥,并向网桥添加了 IP。

br-haproxy: 10.100.0.1/24
br-nginx: 10.100.3.1/24

然后,我通过 lxc 配置将相应的桥添加到相应的容器中。

nginx got br-nginx
haproxy got br-haproxy

然后我在容器中配置了 IP 地址。

haproxy: 10.100.0.10/24 GW 10.100.0.1
nginx: 10.100.3.10/24 GW 10.100.3.1

我现在能够在两个容器之间进行 ping 操作,等等。我现在通过将 iptables 的转发策略设置为拒绝来拒绝访问。我现在可以通过 iptables 控制两个容器之间的流量。

好的,到目前为止一切顺利。我现在想要实现的是,让桥梁永久化。我将bridgeconfig添加到/etc/network/interfaces中,但由于我没有要添加到网桥的网络设备,所以我忽略了这一部分。

当我现在尝试启动桥时,我收到一条错误消息,指出无法找到设备(例如 br-haproxy)。

我发现问题是桥接配置中缺少设备。当我将 eth0 从主机添加到网桥配置时,我可以启动网桥,并且效果非常好。但这不是我需要的。

LXC 在容器启动时动态创建容器中的接口并将其添加到相应的桥接器。

我的问题来了。如何在启动时不向网桥添加网络设备的情况下使网桥永久存在?

希望我以某种方式清楚地说明了问题所在。 :-)

提前致谢。

答案1

bridge_ports none如果您使用它在启动时工作,而不需要向此接口添加成员,会怎么样?

auto br-haproxy
iface br-haproxy inet static
       bridge_ports none
       bridge_fd 0 
       bridge_waitport 0
       address 10.100.0.1
       netmask 255.255.255.0

bridge_fd避免waitport成员端口上线时转发延迟,避免等待端口上线延迟。

相关内容