Назад | Перейти на главную страницу

Docker Networking при открытии портов

Итак, чтобы описать проблему, с которой я столкнулся, я поставлю сцену.

Я использую docker-compose для трех контейнеров. У хоста есть два отдельных IP-адреса.

sonarr и radarr используют интерфейс ens192 с адресом 192.168.30.6, используемые порты такие же, как указано выше.

Я пытаюсь заставить plex использовать интерфейс ens224 с адресом 192.168.40.2

Контейнер использует отдельный мостовой интерфейс между двумя другими контейнерами. Этот мост был создан докером автоматически. Когда я изменяю файл docker-compose и заставляю контейнер plex использовать интерфейс 192.168.30.6 - все работает, как ожидалось.

Я подозреваю, что проблема в конфигурации iptables. Может ли кто-нибудь указать мне в правильном направлении, если они столкнулись с подобной проблемой?

Мои iptables выглядят следующим образом:

archcontainer docker-compose-plex # iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N DOCKER
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.19.0.0/16 ! -o br-0347d63738ba -j MASQUERADE
-A POSTROUTING -s 172.18.0.0/16 ! -o br-e3a3db351246 -j MASQUERADE
-A POSTROUTING -s 172.18.0.2/32 -d 172.18.0.2/32 -p tcp -m tcp --dport 8989 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 32469 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 32414 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 32413 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 32400 -j MASQUERADE
-A POSTROUTING -s 172.18.0.3/32 -d 172.18.0.3/32 -p tcp -m tcp --dport 7878 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 8324 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 32412 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 32410 -j MASQUERADE
-A POSTROUTING -s 172.18.0.4/32 -d 172.18.0.4/32 -p tcp -m tcp --dport 6789 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 3005 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 1900 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER -i br-e3a3db351246 -j RETURN
-A DOCKER -i br-0347d63738ba -j RETURN
-A DOCKER -d 192.168.30.6/32 ! -i br-e3a3db351246 -p tcp -m tcp --dport 8989 -j DNAT --to-destination 172.18.0.2:8989
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 32469 -j DNAT --to-destination 172.19.0.2:32469
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 32414 -j DNAT --to-destination 172.19.0.2:32414
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 32413 -j DNAT --to-destination 172.19.0.2:32413
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 32400 -j DNAT --to-destination 172.19.0.2:32400
-A DOCKER -d 192.168.30.6/32 ! -i br-e3a3db351246 -p tcp -m tcp --dport 7878 -j DNAT --to-destination 172.18.0.3:7878
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 8324 -j DNAT --to-destination 172.19.0.2:8324
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 32412 -j DNAT --to-destination 172.19.0.2:32412
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 32410 -j DNAT --to-destination 172.19.0.2:32410
-A DOCKER -d 192.168.30.6/32 ! -i br-e3a3db351246 -p tcp -m tcp --dport 6789 -j DNAT --to-destination 172.18.0.4:6789
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 3005 -j DNAT --to-destination 172.19.0.2:3005
-A DOCKER -d 192.168.40.2/32 ! -i br-0347d63738ba -p tcp -m tcp --dport 1900 -j DNAT --to-destination 172.19.0.2:1900

archcontainer docker-compose-plex # iptables -S -t filter
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-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 FORWARD -o br-0347d63738ba -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-0347d63738ba -j DOCKER
-A FORWARD -i br-0347d63738ba ! -o br-0347d63738ba -j ACCEPT
-A FORWARD -i br-0347d63738ba -o br-0347d63738ba -j ACCEPT
-A FORWARD -o br-e3a3db351246 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-e3a3db351246 -j DOCKER
-A FORWARD -i br-e3a3db351246 ! -o br-e3a3db351246 -j ACCEPT
-A FORWARD -i br-e3a3db351246 -o br-e3a3db351246 -j ACCEPT
-A DOCKER -d 172.18.0.2/32 ! -i br-e3a3db351246 -o br-e3a3db351246 -p tcp -m tcp --dport 8989 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 32469 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 32414 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 32413 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 32400 -j ACCEPT
-A DOCKER -d 172.18.0.3/32 ! -i br-e3a3db351246 -o br-e3a3db351246 -p tcp -m tcp --dport 7878 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 8324 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 32412 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 32410 -j ACCEPT
-A DOCKER -d 172.18.0.4/32 ! -i br-e3a3db351246 -o br-e3a3db351246 -p tcp -m tcp --dport 6789 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 3005 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-0347d63738ba -o br-0347d63738ba -p tcp -m tcp --dport 1900 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-e3a3db351246 ! -o br-e3a3db351246 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-0347d63738ba ! -o br-0347d63738ba -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-e3a3db351246 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-0347d63738ba -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN