LINUX.ORG.RU
ФорумAdmin

Как запретить внешние соединения по порту кроме локальны через iptables

 , , ,


0

1

Есть nginx на хосте слушающий 80 порт и проксирующий в контейнер с nginx, из контейнера на хост проброшен порт 8020, внутри nginx слушает 80.

Как через iptables можно запретить все внешние соединения по порту 8020 и при этом разрешить все локальные?

nginx host

server {
 listen 80;
 server_name .site.ru;
 
 location / {
   proxy_pass http://127.0.0.1:8020;
   ...
 }
}

Пробую отрубить на интерфейсе:

iptables -I INPUT ! -i lo -p tcp --dport 8020 -j DROP
# site.ru и site.ru:8020 отвечают кодом 200
iptables -I INPUT -i lo -p tcp --dport 8020 -j DROP
# site.ru код 504
# site.ru:8020 код 200

В таблице DOCKER были правила который я так понимаю сгенерированы после проброса портов на хост из контейнера. Удалил их и добавил правило:

DROP       tcp  --  127.0.0.1            192.168.221.5        tcp dpt:8020

Теперь site.ru:8020 не открывается

villiwalla
() автор топика

из контейнера на хост проброшен порт 8020

Контейнер же на внутреннем ip лежит, наружу не светится, виден только порт 80 на реверс-прокси.

King_Carlo ★★★★★
()
Ответ на: комментарий от King_Carlo

Да я вкурсе, просто с прокинутым портом не надо учитывать изменение ip контейнера

villiwalla
() автор топика

запретить все внешние соединения по порту 8020 и при этом разрешить все локальные

iptables -I INPUT -i lo

  1. Вот первое что сразу глаза режет: какое отношение интерфейс lo имеет к внешним соединениям?)

  2. Контейнер с точки зрения хост системы - это другой хост в сети подключенной к интерфейсу docker0 (в стандартном случае по умолчанию). Причем тогда тут filter INPUT? Трафик то наверное тразитный, те вам в filter FORWARD фильтровать надо…

  3. Чтоб не городить костылей через iptables вручную, тут надо либо в сторону docker networking копать, либо резолвинг имен контейнера с хоста: https://forums.docker.com/t/question-docker-host-know-container-ip-and-hostname/19339/7

samson ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.