Mein Ziel ist es, den Zugriff auf Docker-Container auf einige wenige öffentliche IP-Adressen zu beschränken. Gibt es einen einfachen, wiederholbaren Prozess, um mein Ziel zu erreichen? Wenn ich nur die Grundlagen von iptables verstehe, während ich die Standardoptionen von Docker verwende, finde ich es sehr schwierig.
Ich möchte einen Container ausführen, ihn für das öffentliche Internet sichtbar machen, aber nur Verbindungen von ausgewählten Hosts zulassen. Ich würde erwarten, eine Standard-INPUT-Richtlinie von REJECT festzulegen und dann nur Verbindungen von meinen Hosts zuzulassen. Aber Dockers NAT-Regeln und -Ketten stören und meine INPUT-Regeln werden ignoriert.
Kann jemand ein Beispiel dafür liefern, wie ich mein Ziel erreichen kann, wenn ich die folgenden Annahmen mache?
- Host öffentliche IP 80.80.80.80 auf eth0
- Host private IP 192.168.1.10 auf eth1
docker run -d -p 3306:3306 mysql
- Alle Verbindungen zu Host / Container 3306 mit Ausnahme der Hosts 4.4.4.4 und 8.8.8.8 blockieren
Ich bin froh, den Container nur an die lokale IP-Adresse zu binden, benötige aber Anweisungen zum Einrichten der iptables-Weiterleitungsregeln, die den Docker-Prozess und den Neustart des Hosts überstehen.
Vielen Dank!
--ctdir
? Ich benutze-m conntrack --ctstate NEW --ctorigdstport 3306 --ctdir ORIGINAL