Il mio obiettivo è limitare l'accesso ai contenitori docker a pochi indirizzi IP pubblici. Esiste un processo semplice e ripetibile per raggiungere il mio obiettivo? Comprendere solo le basi di iptables mentre si utilizzano le opzioni predefinite di Docker, lo trovo molto difficile.
Vorrei eseguire un container, renderlo visibile a Internet pubblico, ma consentire solo connessioni da host selezionati. Mi aspetterei di impostare una politica INPUT predefinita di REJECT e quindi consentire solo le connessioni dai miei host. Ma le regole e le catene NAT di Docker si frappongono e le mie regole INPUT vengono ignorate.
Qualcuno può fornire un esempio di come raggiungere il mio obiettivo alla luce dei seguenti presupposti?
- Host IP pubblico 80.80.80.80 su eth0
- Host IP privato 192.168.1.10 su eth1
docker run -d -p 3306:3306 mysql
- Blocca tutte le connessioni all'host / container 3306 tranne che dagli host 4.4.4.4 e 8.8.8.8
Sono felice di associare il contenitore solo all'indirizzo IP locale, ma avrei bisogno di istruzioni su come impostare correttamente le regole di inoltro di iptables che sopravvivono al processo docker e al riavvio dell'host.
Grazie!
--ctdir
? Uso-m conntrack --ctstate NEW --ctorigdstport 3306 --ctdir ORIGINAL