Коллеги, добрый день!
Нужна помощь по правильной настройке правил 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
Порты я, конечно, открыл, но меня напрягает искусственность конструкции.
Прошу помощи опытных пользователей докера - что в данной ситуации можно сделать более корректно.
Повторюсь: залезть внутрь софтины и попытаться там поправить правила, формируемые докером - невозможно.
А дистрибутив какой? У меня докер наружу никаких портов не открывает.
Убунта 24.04 :)
08 ноября 2024, 11:19:27Цитата: ogost от 08 ноября 2024, 10:25:28У меня докер наружу никаких портов не открывает.
Так у вас, может, ему никаких правил на этот счёт и не прописано. А у меня...
Цитата: RedEye от 11 ноября 2024, 14:13:54мда...ubuntu... следующий...
Смею вас заверить - выбор убунты в данном случае обусловлен требованиями ТП прикладухи, иначе бы я выбрал Дебиан, конечно же.
Так что ваш сарказм не к столу.