Ubuntu

docker 上的嚴格 iptables

  • July 27, 2020

我一直在嘗試為 docker(在 ubuntu 主機上執行)配置 iptables。我以前沒有與 docker 合作過,我被告知 docker 需要特殊處理。

我只想允許特定範圍的 ips 能夠連接到 ubuntu 機器。

我還想讓 docker 為整個網路創建 ssh/telnet/snmp 流量。

最後我想丟棄所有其他類型的流量(到主機和碼頭)。

我不確定應該在哪里以及如何配置規則,因此它們不會相互干擾(另外,特別是在 docker 上,我不確定如何使用“docker-user”鏈)。

謝謝!

您有兩種方法,一種是讓 docker 停止操作 iptables 規則並由您處理(我個人不推薦這種方式)或使用您已經提到的 docker-user 鏈。

根據 docker文件所述,docker 和 docker-user 鍊是 iptables 第一個用於過濾器的鏈,因此您可以將標準鏈(INPUT、OUTPUT、FORWARD)配置為預設 DROP,並將您的規則添加到 DOCKER-USER 鏈中,這很重要,因為在 docker restart 時唯一的鏈不會被刷新,像這樣你可以定義你的自定義規則。

在 DOCKER-USER 鏈中,您可以根據需要定義輸入、輸出和轉發規則,只需在添加到鏈中的規則中定義 interface/ip-address/ip-address range/networks source/destination,例如假設您有 2介面eno1eno2

輸入規則可以是:

iptables -I DOCKER-USER -i eno[1|2] -s 192.168.0.0/24 --proto tcp --dport 80 -j ACCEPT

前向規則可以是:

iptables -I DOCKER-USER -i eno[1|2] -s 192.168.0.0/24 -o eno[1|2] -d 192.168.138.0/24 --proto tcp --dport 22 -j ACCEPT

輸出規則(如果您還管理輸出流量)可以是:

iptables -I DOCKER-USER -o eno[1|2] -d 192.168.0.0/24 --dport 443 -j ACCEPT

等等。

我希望這可以幫助你澄清你的問題。

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