Shorewall

碼頭工人和牆

  • August 10, 2016

我在我的伺服器上使用Shorewall作為簡單的獨立防火牆,並且也想使用Docker

通過使用 Docker 容器及其埠重定向,docker 設置了自己的 iptables 規則/鏈,如果重新啟動shorewall,這些規則/鏈將被終止。所以容器將變得不可訪問

是否有人在重新啟動岸牆時設法保存/恢復 docker 規則,或者是否有人有其他解決方法?

也可以看看:

以下配置更改應確保 Docker 和 Shorewall 主機之間的流量。在 Shorewall 4.5.21.9 上測試,但應適用於最新版本:

/etc/shorewall/shorewall.conf

確保啟用了 IP 轉發(大多數配置項是 Yes/No,但這個是“On”):

IP_FORWARDING=On

/etc/shorewall/masq

為您的私有 Docker 網路啟用偽裝(NAT)(如果您使用不同的網路,即您使用 啟動 docker --bip=#.#.#.#/#,則相應地進行更改)。更改eth0為具有外部連接的主機上的任何介面:

#INTERFACE:DEST         SOURCE
eth0                    172.17.0.0/16

/etc/shorewall/interfaces

添加一個介面條目,以便 Shorewall 知道該dock區域與哪個介面相關:

#ZONE           INTERFACE               OPTIONS
dock            docker0

/etc/shorewall/zones

創建一個新區域;注意,docker太長會導致“無效的區域名稱”錯誤。

#ZONE   INTERFACE
dock    ipv4

/etc/shorewall/策略

您可能希望允許 Docker 容器與主機Internet 通信,所以這是一個很好的起點:

#SOURCE         DEST            POLICY
# ...(other policies)...
dock            all             ACCEPT
# ...(other policies, catch-all)...

如果您還沒有使用 to 打開它,您可能還需要一個類似的來自toACCEPT的流量策略。fw``dock``fw``all

您可以根據需要在策略規則文件中進一步加強這一點。例如,上面沒有明確允許外部流量到達您的 Docker 容器;檢查您的其他區域/政策/規則。

引用自:https://serverfault.com/questions/579726