Заметки на полях

Docker и iptables: почему порт открыт, хотя INPUT закрыт

02.09.2026

Классическая ловушка: политика INPUT стоит в DROP, а сервис в контейнере всё равно доступен из интернета. Дело в том, что опубликованные порты Docker проходят через цепочку FORWARD, а не INPUT.

Правильное место для своих ограничений — цепочка DOCKER-USER. Есть нюанс: к моменту её срабатывания адрес и порт назначения уже подменены на контейнерные. Поэтому фильтровать удобнее по исходному порту через conntrack, а не по --dport.

iptables -I DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 8080 -j DROP

И не забыть сохранить правила, иначе после перезагрузки всё вернётся к исходному состоянию.