Задать вопрос
bassoon48
@bassoon48
Токсичный и нервный сись адмын

Почему NGINX Proxy Manager неадекватно реагирует на streams пробросы 143, 587 и 993 при правках в DOCKER-USER?

Сразу говорю - дело не в geoip!

В настоящий момент использую голый NGINX и 3 streams проброса голых на 4 уровне OSI TCP балансировщика. Без терминации на порты 143, 587,993.

Всё работает прекрасно и фильтрует через iptables по geoip. Но суть не в этом.

После того как я ставлю Docker в котором крутится NGINX Proxy Manage (Далее NPM) - всё работает тоже прекрасно.
Через вкладку streams сделал сырые пробросы на те же самые порты.

Но есть проблема, поскольку DOCKER создаёт кучу своих цепочек - по офф. документации нужно настраивать лишь цепочку DOCKER-USER.

Ну хорошо.

По умолчанию в цепочку DOCKER-USER лишь одно правило

-A DOCKER-USER -j RETURN

Что логично, если нет своих настроек то правила "ретёрнит" обратно в FORWARD и переходит в другие цепочки DOCKER и далее в DOCKER-ISOLATION.

Т. е. чтобы добавить свои правила разрещающие должны быть -j RETURN а запрещающие -j DROP

В самом конце должен быть -j RETURN чтобы те правила и порты которы не попали под правила DOCKER-USER шли дальше.

НО есть проблема.

При вот таких правилах в /etc/iptables/rules.v4

-A DOCKER-USER -m state --state RELATED,ESTABLISHED -j RETURN
-A DOCKER-USER -m state --state INVALID -j DROP
-A DOCKER-USER -p tcp -m tcp --dport 80 -m geoip --source-country RU,UA,US,BY,KZ,GE,AM,KG,NL,DE,SG,GB,FR,CA,IE,SE,PL -j RETURN
-A DOCKER-USER -p tcp -m tcp --dport 81 -s 192.168.0.0/16 -j RETURN
-A DOCKER-USER -p tcp -m tcp --dport 143 -m geoip --source-country RU,UA,BY,KZ -j RETURN
-A DOCKER-USER -p tcp -m tcp --dport 443 -m geoip --source-country RU,UA,US,BY,KZ,GE,AM,KG,NL,DE,SG,GB,FR,CA,IE,SE,PL -j RETURN
-A DOCKER-USER -p tcp -m tcp --dport 587 -m geoip --source-country RU,UA,BY,KZ -j RETURN
-A DOCKER-USER -p tcp -m tcp --dport 993 -m geoip --source-country RU,UA,BY,KZ -j RETURN
-A DOCKER-USER -p tcp -m tcp --dport 80 -m geoip ! --source-country RU,UA,US,BY,KZ,GE,AM,KG,NL,DE,SG,GB,FR,CA,IE,SE,PL -j DROP
-A DOCKER-USER -p tcp -m tcp --dport 81 ! -s 192.168.0.0/16 -j DROP
-A DOCKER-USER -p tcp -m tcp --dport 143 -m geoip ! --source-country RU,UA,BY,KZ -j DROP
-A DOCKER-USER -p tcp -m tcp --dport 443 -m geoip ! --source-country RU,UA,US,BY,KZ,GE,AM,KG,NL,DE,SG,GB,FR,CA,IE,SE,PL -j DROP
-A DOCKER-USER -p tcp -m tcp --dport 587 -m geoip ! --source-country RU,UA,BY,KZ -j DROP
-A DOCKER-USER -p tcp -m tcp --dport 993 -m geoip ! --source-country RU,UA,BY,KZ -j DROP


Правила действительно работают для того же 81 порта.

Но порты 143 587 и 993 работают неадекватно.

Когда этих правил нет - 143,587,993 работают через TCP и доступ до сервера есть

Когда я добавляю свои правила - те же самые порты работают по TCP/UDP - доступа до сервера нет

У меня сложилось впечатление что правила где-то либо застревают либо NPM+DOCKER не поддерживают то что я хочу либо тупо багулина.

П. С. В итоге сижу пока что на своём кастомном решении Nginx, всё равно у NPM нету нужно фичи DNS-01 Challenge для nic.ru, а ждать 2 года пока добавят лень....

П. П. С. Чувак с пандой на аватарке- пожалуйста не пиши всякую чушь. Советуя отключать iptables для docker ты ломаешь сам докер и сам принцип докера "для чего" его поднимают. Отсюда ты ломаешь масштабируемость.
Для джунов DevOps есть прекрасная документация по docker в которой ясно сказано что кастомные настройки нужно вносить в Docker-User не ломая цепочку Dockera (а это и ни к чему так как она дефолтна).
  • Вопрос задан
  • 74 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы