По порядку Senior Сети и тома обновлено
Путь пакета к опубликованному порту
Вопрос
Расставь по порядку путь входящего TCP-пакета с клиента до процесса в контейнере, опубликованном через -p 8080:80 (bridge-сеть).
Попробуйте сами
Расставьте шаги по порядку стрелками.
- 1Правило DNAT в цепочке
DOCKERтаблицы nat меняет адрес назначения на IP контейнера и порт 80 - 2Мост
docker0(или мост пользовательской сети) передаёт пакет в veth-пару контейнера - 3Пакет приходит на интерфейс хоста на порт 8080
- 4Пакет проходит цепочку FORWARD (сначала
DOCKER-USER, затем правила Docker) - 5Процесс в network namespace контейнера принимает соединение на
0.0.0.0:80
Показать ответ и разбор
Коротко
Публикация порта это NAT: адрес назначения переписывается ещё до маршрутизации, затем пакет считается транзитным и идёт через FORWARD, где первой проверяется DOCKER-USER, а не INPUT. Поэтому правила ufw в INPUT на него не действуют.
Правильный порядок
- 1Пакет приходит на интерфейс хоста на порт 8080
- 2Правило DNAT в цепочке
DOCKERтаблицы nat меняет адрес назначения на IP контейнера и порт 80 - 3Пакет проходит цепочку FORWARD (сначала
DOCKER-USER, затем правила Docker) - 4Мост
docker0(или мост пользовательской сети) передаёт пакет в veth-пару контейнера - 5Процесс в network namespace контейнера принимает соединение на
0.0.0.0:80
Разбор
Публикация порта это NAT: адрес назначения переписывается ещё до маршрутизации, затем пакет считается транзитным и идёт через FORWARD, где первой проверяется DOCKER-USER, а не INPUT. Поэтому правила ufw в INPUT на него не действуют. Дальше мост доставляет пакет в veth контейнера, а приложение должно слушать адрес интерфейса, а не loopback.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.