iptables и docker

Автор sonny363, 08 ноября 2024, 07:19:11

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

sonny363

Коллеги, добрый день!
Нужна помощь по правильной настройке правил iptables при работе с докером.
Исходная ситуация: на сервере прописаны правила iptables, которые корректно работают (проверены временем, скопированы с другого сервера). В частности, разрешены порты 80 и 443:
$IPTABLES -A INPUT -p tcp --dport 80 -i $IF_OUT -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 443 -i $IF_OUT -j ACCEPT

На вышеупомянутый сервер установили некую тяжеловесную софтину, которая внутри себя использует docker, и вся его кухня зашита внутри софтины.
После установки произошло следующее: docker прописал поверх моих правил в iptables свои, создал цепочку DOCKER и открыл на улицу целую пачку портов - 9200,9300,11111,30000 и т.д. В том числе 80 и 443 (это важно!).

Меня, естественно, это не устроило, и я стал искать в интернетиках - что это за ерунда, и как с этим бороться (следует отметить, что я до этого с докером никаких дел не имел).

Оказалось, что докер крайне вольно обходится с файерволлами, и такое, как у меня, поведение для него вполне себе характерно. Наткнулся на совет - прописать два правила:
iptables -I DOCKER -i <внешний интерфейс> ! -s <внешний адрес> -j REJECT
iptables -I DOCKER -i <внешний интерфейс> -m state --state ESTABLISHED,RELATED -j ACCEPT

и запускать их скриптом после запуска докера.

Попробовал - они действительно закрывают порты докера. Обрадовался было, но затем с ужасом обнаружил, что я тем самым закрыл и порты 80 и 443!
То есть, докер радостно переписал поверх правил на порты 80 и 443 в цепочке INPUT правила в цепочке DOCKER, и, когда я закрыл эту цепочку снаружи, порты тоже закрылись.
В итоге пришлось добавить ещё два правила к двум вышеупомянутым:
iptables -I DOCKER -p tcp --dport 80 -i <внешний интерфейс> -j ACCEPT
iptables -I DOCKER -p tcp --dport 443 -i <внешний интерфейс> -j ACCEPT

Порты я, конечно, открыл, но меня напрягает искусственность конструкции.
Прошу помощи опытных пользователей докера - что в данной ситуации можно сделать более корректно.

Повторюсь: залезть внутрь софтины и попытаться там поправить правила, формируемые докером - невозможно.

ogost

А дистрибутив какой? У меня докер наружу никаких портов не открывает.

sonny363

#2
Убунта 24.04 :)

08 ноября 2024, 11:19:27
Цитата: ogost от 08 ноября 2024, 10:25:28У меня докер наружу никаких портов не открывает.
Так у вас, может, ему никаких правил на этот счёт и не прописано. А у меня...

Лия


RedEye


sonny363

Цитата: RedEye от 11 ноября 2024, 14:13:54мда...ubuntu... следующий...

Смею вас заверить - выбор убунты в данном случае обусловлен требованиями ТП прикладухи, иначе бы я выбрал Дебиан, конечно же.
Так что ваш сарказм не к столу.