iptables -I FORWARD -i docker0 ! -d 8.8.8.8 -j DROP

iptables -I FORWARD -i docker0 ! -d 8.8.8.8 -j DROP

Ich habe eine Antwort, die Docker-Container so einschränkt, dass sie nur auf eine einzige IP-Adresse außerhalb des Hosts zugreifen können. Verwenden Sie diese iptables-Regel auf dem Host:

iptables -I FORWARD -i docker0 ! -d 8.8.8.8 -j DROP

bedeutet, dass aus Docker-Containern nur auf die IP-Adresse 8.8.8.8 zugegriffen werden kann.

Dies ist ziemlich drastisch – grundsätzlich wird das Paket verworfen, wenn das Ziel NICHT 8.8.8.8 ist.

Wie kann ich am besten Regeln einrichten, mit denen ich die Container auf eine bestimmte Anzahl von IP-Adressen beschränken kann?

Antwort1

Ich musste sicherstellen, dass die Entwicklungskopie der Website, die sich im Docker-Container befand, nicht auf Live-Ressourcen zugreifen konnte – Paypal, verschiedene APIs usw. Der Code auf der Website war veraltet und viele Dinge/URLs waren fest codiert.

Ich habe dies erreicht, indem ich etwa Folgendes in das Build-Skript eingefügt habe:

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

wobei xxxx und yyyy Entwicklungsressourcen sind.

verwandte Informationen