Моя цель - ограничить доступ к док-контейнерам всего несколькими публичными IP-адресами. Есть ли простой, повторяемый процесс для достижения моей цели? Понимать только основы iptables при использовании параметров Docker по умолчанию я нахожу очень сложным.
Я хотел бы запустить контейнер, сделать его видимым для общедоступного Интернета, но разрешить соединения только с выбранных хостов. Я ожидал бы установить политику INPUT по умолчанию REJECT, а затем разрешить только подключения от моих хостов. Но мешают правила и цепочки докеров NAT, а мои правила INPUT игнорируются.
Может ли кто-нибудь привести пример того, как достичь моей цели, учитывая следующие предположения?
- Хост публичный IP 80.80.80.80 на eth0
- Хост частный IP 192.168.1.10 на eth1
docker run -d -p 3306:3306 mysql
- Заблокируйте все соединения с хостом / контейнером 3306, кроме хостов 4.4.4.4 и 8.8.8.8
Я рад привязать контейнер только к локальному IP-адресу, но мне нужны инструкции о том, как правильно настроить правила пересылки iptables, которые выживают в процессе докера и перезапускают хост.
Благодарность!
--ctdir
? Я использую-m conntrack --ctstate NEW --ctorigdstport 3306 --ctdir ORIGINAL