Я хочу, чтобы служба работала в двух контейнерах (один 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
Я думаю, это потому, что конфигурация создает определяемый пользователем мост, который изолирован от других сетей. Любые рекомендации или идеи приветствуются.