我有一個答案,它將限制 docker 容器只能存取主機外部的單一 IP 位址。在主機上使用此 iptables 規則:
iptables -I FORWARD -i docker0 ! -d 8.8.8.8 -j 刪除
意味著從任何 docker 容器內部只能存取 IP 位址 8.8.8.8。
這是相當激烈的 - 基本上,如果目的地不是 8.8.8.8,則丟棄資料包。
設定允許將容器限制為一定數量的 IP 位址的規則的最佳方法是什麼?
答案1
我需要確保 docker 容器中的網站的開發副本無法存取任何即時資源 - Paypal、各種 API 等。
我實現這一目標的方法是在建置腳本中添加類似的內容:
echo
echo "Setting up firewall rules for all docker containers..."
sudo ipset create dockerdests hash:ip -exist
sudo ipset add dockerdests x.x.x.x -exist
sudo ipset add dockerdests y.y.y.y -exist
sudo ipset add dockerdests 8.8.8.8 -exist
sudo ipset add dockerdests 8.8.4.4 -exist
sudo iptables -I FORWARD 1 -i docker0 -m set --match-set dockerdests dst -j ACCEPT
sudo iptables -I FORWARD 2 -i docker0 -j DROP
其中 xxxx 和 yyyy 是開發資源。