Moim celem jest ograniczenie dostępu do kontenerów dokerów tylko do kilku publicznych adresów IP. Czy istnieje prosty, powtarzalny proces do osiągnięcia mojego celu? Zrozumienie tylko podstaw iptables podczas korzystania z domyślnych opcji Dockera jest dla mnie bardzo trudne.
Chciałbym uruchomić kontener, uczynić go widocznym dla publicznego Internetu, ale zezwalać tylko na połączenia z wybranych hostów. Spodziewałbym się ustawić domyślną zasadę WEJŚCIA REJECT, a następnie zezwolić tylko na połączenia z moich hostów. Ale reguły NAT i łańcuchy Dockera przeszkadzają, a moje reguły WEJŚCIE są ignorowane.
Czy ktoś może podać przykład realizacji mojego celu, biorąc pod uwagę następujące założenia?
- Hostuj publiczny adres IP 80.80.80.80 na eth0
- Hostuj prywatny adres IP 192.168.1.10 na eth1
docker run -d -p 3306:3306 mysql
- Zablokuj wszystkie połączenia z hostem / kontenerem 3306 oprócz hostów 4.4.4.4 i 8.8.8.8
Z przyjemnością powiążę kontener tylko z lokalnym adresem IP, ale potrzebuję instrukcji, jak poprawnie skonfigurować reguły przekazywania iptables, które przetrwają proces dokowania i host uruchomi się ponownie.
Dzięki!
--ctdir
? Używam-m conntrack --ctstate NEW --ctorigdstport 3306 --ctdir ORIGINAL