Открытый сетевой порт не открыт для адреса rnet - PullRequest
0 голосов
/ 29 мая 2020

Я хочу, чтобы служба работала в двух контейнерах (один VPN, другой - веб-служба), чтобы открыть порт для второго контейнера для локального ethe rnet. Однако похоже, что единственный способ получить доступ к веб-сервису - через локальный хост или частную сеть, созданную Docker (172.19.0.2). Даже запуск браузера на самом хосте не примет его ethe rnet IP (например, 10.0.0.5:8112 ПЛОХО! Но localhost: 8112 ИЛИ 172.19.0.2:8112 ХОРОШО!). Я пытаюсь понять, почему адрес ethe rnet не получает никакой любви. Вот результат моих таблиц IP (в качестве меры предосторожности удален UFW):

*mangle
:PREROUTING ACCEPT [2109:567018]
:INPUT ACCEPT [2038:553438]
:FORWARD ACCEPT [71:13580]
:OUTPUT ACCEPT [1765:394606]
:POSTROUTING ACCEPT [1840:409176]
COMMIT
# Completed on Fri May 29 10:29:13 2020
# Generated by iptables-save v1.8.4 on Fri May 29 10:29:13 2020
*filter
:INPUT ACCEPT [1310:455388]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1361:352218]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-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-b2521616293e -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-b2521616293e -j DOCKER
-A FORWARD -i br-b2521616293e ! -o br-b2521616293e -j ACCEPT
-A FORWARD -i br-b2521616293e -o br-b2521616293e -j ACCEPT
-A FORWARD -o br-af6f70f1ebad -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-af6f70f1ebad -j DOCKER
-A FORWARD -i br-af6f70f1ebad ! -o br-af6f70f1ebad -j ACCEPT
-A FORWARD -i br-af6f70f1ebad -o br-af6f70f1ebad -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-b2521616293e -o br-b2521616293e -p tcp -m tcp --dport 8112 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-b2521616293e ! -o br-b2521616293e -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-af6f70f1ebad ! -o br-af6f70f1ebad -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-b2521616293e -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-af6f70f1ebad -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Fri May 29 10:29:13 2020
# Generated by iptables-save v1.8.4 on Fri May 29 10:29:13 2020
*nat
:PREROUTING ACCEPT [34:3101]
:INPUT ACCEPT [7:1326]
:OUTPUT ACCEPT [192:12759]
:POSTROUTING ACCEPT [192:12759]
:DOCKER - [0:0]
-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-b2521616293e -j MASQUERADE
-A POSTROUTING -s 172.18.0.0/16 ! -o br-af6f70f1ebad -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 8112 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER -i br-b2521616293e -j RETURN
-A DOCKER -i br-af6f70f1ebad -j RETURN
-A DOCKER ! -i br-b2521616293e -p tcp -m tcp --dport 8112 -j DNAT --to-destination 172.19.0.2:8112
COMMIT

Ниже приведен результат моей команды docker ps -a.

d06f04c174a2        linuxserver/deluge          "/init"                  2 weeks ago         Up 2 minutes                                 deluge
bb51c6f78a04        itsdaspecialk/pia-openvpn   "openvpn.sh --auth-u…"   2 weeks ago         Up 2 minutes        0.0.0.0:8112->8112/tcp   pia-vpn

Вот docker -compose.yml для всей установки

---
version: "2.1"
services:
  pia-vpn:
    container_name: pia-vpn
    image: itsdaspecialk/pia-openvpn
    restart: always
    cap_add:
      - net_admin
    dns:
      - 209.222.18.222
      - 209.222.18.218
    ports:
      - 8112:8112
    volumes:
      - /home/poseter/pia-vpn/auth:/auth
    environment:
      REGION: "US East"
    command: ["--auth-user-pass", "/auth/auth.conf"]
  deluge:
    image: linuxserver/deluge
    container_name: deluge
    depends_on:
      - pia-vpn
    network_mode: "service:pia-vpn"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=timezone
      - UMASK_SET=022 #optional
      - DELUGE_LOGLEVEL=error #optional
    volumes:
      - /home/poster/deluge/config:/config
      - /home/poster/deluge/downloads:/downloads
    restart: unless-stopped

Я думаю, это потому, что конфигурация создает определяемый пользователем мост, который изолирован от других сетей. Любые рекомендации или идеи приветствуются.

...