Bridge

從 lxc 容器為動態網路設備設置永久網橋?

  • December 30, 2015

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 在容器啟動時動態創建容器介面並將其添加到相應的網橋。

所以我的問題來了。如何在啟動時不向網橋添加網路設備的情況下使網橋永久化?

希望我以某種方式明確了問題所在。:-)

提前致謝。

如果您使用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_fdwaitport設置為避免成員埠上線時的轉發延遲,並避免等待埠上線時的延遲。

引用自:https://unix.stackexchange.com/questions/252339