Ubuntu
docker 上的嚴格 iptables
我一直在嘗試為 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介面eno1和eno2
輸入規則可以是:
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
等等。
我希望這可以幫助你澄清你的問題。