Разбираюсь с iptables после установки докера. Изначально было настроено так:
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443,{мой кастомный порт для ssh} -j ACCEPT
Поставил докер, установил контейнер, сделал проброс ещё одного порта (допустим, 10000) на 22 порт контейнера. Ожидаю, что когда попытаюсь зайти по ssh в хост-систему на 10000 порт, то получу что-то вроде connection refused, пока не открою сам 10000 порт. В итоге соединяюсь прекрасно. В чём затык? Правила стали вот такие:
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443,{мой кастомный порт для ssh} -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-18c405db569f -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-18c405db569f -j DOCKER
-A FORWARD -i br-18c405db569f ! -o br-18c405db569f -j ACCEPT
-A FORWARD -i br-18c405db569f -o br-18c405db569f -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 10.10.0.19/32 ! -i br-18c405db569f -o br-18c405db569f -p tcp -m tcp --dport 22 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-18c405db569f ! -o br-18c405db569f -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-18c405db569f -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
Тут добавилось какое-то правило, которое открывает 10000 порт? Не вижу его. :( А в соответствии с правилом «-P INPUT DROP», врод, он должен быть закрыт. Или тут несколько правил, типа одно перенаправляет на другое, а в конце на то, что «-A DOCKER -d 10.10.0.19/32 *** –dport 22 -j ACCEPT»?