Выбор ответа Senior Сети и тома обновлено
Docker и ufw
Вопрос
На сервере ufw разрешает только 22, 80, 443. Контейнер PostgreSQL запущен с -p 5432:5432. Доступна ли база из интернета?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Да: правила iptables Docker (DNAT, FORWARD) обходят правила ufw в цепочке INPUT. Публикация порта реализуется правилами nat и FORWARD, которые Docker вставляет сам. ufw управляет INPUT, и трафик к контейнеру его не проходит.
Варианты ответа
- Нет: ufw блокирует в INPUT всё, что не разрешено, включая опубликованные порты
- Нет: Docker по умолчанию публикует порты только на
127.0.0.1, не на внешний интерфейс - Только если в образе есть
EXPOSE 5432, иначе Docker не создаёт правило проброса - Да: правила iptables Docker (DNAT, FORWARD) обходят правила ufw в цепочке INPUTправильный ответ
Разбор
Публикация порта реализуется правилами nat и FORWARD, которые Docker вставляет сам. ufw управляет INPUT, и трафик к контейнеру его не проходит. Поэтому порт открыт миру. Решения: не публиковать порт базы вовсе (приложение ходит по внутренней сети), привязать к 127.0.0.1:5432:5432 или фильтровать в цепочке DOCKER-USER. По умолчанию Docker слушает 0.0.0.0, а EXPOSE на публикацию не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.