Docker and iptables
При использовании докера нужно быть внимательным с правилами
Докер создает правила и цепочки в таблице nat, поэтому какие-либо запрещающие правила в цепочке INPUT таблицы filter не сработают
Кейс:
Поднят контейнер с nginx и проброшен порт 80
- Пакет приходит в nat PREROUTING где указано
DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
Это правило отправляет в цепочку DOCKER любой пакет который назначен машине, адрес которой назначен нашей машине. Т.е. все что назначено нам - В цепочке DOCKER есть следующее правило
DNAT tcp -- anywhere anywhere tcp dpt:http to:172.17.0.3:80
То есть все что приходит на наш 80 порт нужно отправлять на 80 порт контейнера - Далее, т.к. это транзитный пакет, он уходит в filter FORWARD и спустя некоторый путь попадает в следующее правило
ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:http
- Ну и по всей видимости попадает в контейнер (я не разобрался на 100% как именно он туда попадает)
В общем filter INPUT не сработает
No Comments