LINUX.ORG.RU
ФорумAdmin

Iptables и публикация порта Docker в режиме host

 , ,


0

1

Всем доброго дня

Бьюсь с docker и iptables. Использую Docker Swarm и все работает корректно, кроме контейнеров с публикацие порта типом ‘host’. Ingress работает как нужно. Есть правило для публикации 80 и 443 портов в интернет (сервис Nginx):

-A FILTERS -p tcp -m multiport --dports 80,443 -j ACCEPT

Оно работает, кроме сервисов с типом публикации host аля 61245:80 в Интернет. Вот как выглядит контейнер в docker ps, у которого порт 61245 не фильтруется.

1d828a18d4a6 443/tcp, 0.0.0.0:61245->80/tcp test_my-container.1.mauafd2zp4uzqaceyaoqhqh9g

Ниже пример правила (запускается при старте ОС через сервис ‘ExecStart=/sbin/iptables-restore -n /etc/iptables_rules_docker.ipv4’):

    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    :FILTERS - [0:0]
    :DOCKER-USER - [0:0]
    -F INPUT
    -F DOCKER-USER
    -F FILTERS
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -j FILTERS
    -A DOCKER-USER -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A DOCKER-USER -i eth0 -j FILTERS
    -A DOCKER-USER -i eth1 -j FILTERS
    -A FILTERS -s 192.168.0.0/16 -j ACCEPT
    -A FILTERS -s 172.16.0.0/16 -j ACCEPT
    -A FILTERS -s 10.0.0.0/8 -j ACCEPT
    -A FILTERS -p tcp -m multiport --dports 80,443 -j ACCEPT
    -A FILTERS -m limit --limit 5/min -j LOG --log-prefix "iptables_INPUT_denied: "
    -A FILTERS -p tcp -j DROP
    
    COMMIT

Если я уберу правило с 80,443, то в логах при попытке зайти на 80 и на 61245 одну и ту же строку (меняется только ID и SPT):

iptables_INPUT_denied: IN=eth1 OUT=docker_gwbridge SRC=1.2.3.4 DST=172.18.0.17 LEN=60 TOS=0x00 PREC=0x00 TTL=53 ID=45802 DF PROTO=TCP SPT=41820 DPT=80 WINDOW=64240 RES=0x00 SYN URGP=0

Подскажите, пожалуйста, как сделать так, чтобы порты типа 61245 фильтровались, а 80 оставался доступным.

Ты смотришь таблицу filter, а вся черная магия докера с подменой портов идёт в nat

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