доступ к сети Docker-контейнера при использовании vpn - PullRequest
0 голосов
/ 26 мая 2018

Ожидаемый результат:

Контейнер может обращаться друг к другу через имя хоста или IP-адрес хост-компьютера

Фактический результат:

При использовании network_mode я не могу вносить какие-либо изменения в виде статического IP-адреса или ссылки на другие контейнеры.

Описание:

У меня есть пара контейнеров, использующих --net (network_mode) для openvpn.Как отдельные экземпляры они работают, и с прокси-сервером nginx я могу получить доступ к каждому с любого компьютера.

Однако контейнеры не могут найти друг друга, за исключением локального ip (172.19.0.x).Я мог бы использовать это, но что происходит при перезагрузке хоста.Будут ли меняться IP-адреса?

docker-compose.yml

version: '3.4'
services:

    vpn:
        image: dperson/openvpn-client
        container_name: vpn
        cap_add:
            - net_admin
        networks:
            - default
        tmpfs:
            - /tmp
        restart: unless-stopped
        security_opt:
            - label:disable
        stdin_open: true
        tty: true
        volumes:
            - ../openvpn:/vpn
            - /dev/net:/dev/net:z
        environment:
            - DNS='8.8.4.4 8.8.8.8'
            - FIREWALL="1"
            - TZ='Europe/Stockholm'
        command: -f ""
        networks:
            - default

    proxy:
        image: nginx
        container_name: proxy
        environment:
            TZ: 'Europe/Stockholm'
        ports:
            - "6003:8989" # sonarr
            - "6004:7878" # radarr
            - "6001:8112" # deluge
            - "6002:9117" # jackett
        depends_on:
            - sonarr
            - radarr
            - deluge
            - jackett
        links:
            - vpn:sonarr
            - vpn:radarr
            - vpn:deluge
            - vpn:jackett
        networks:
            - default
        volumes:
            - ../nginx/default.conf:/etc/nginx/conf.d/default.conf
        restart: always
        command: "nginx -g 'daemon off;'"

    sonarr:
        image: linuxserver/sonarr
        container_name: sonarr
        volumes:
            - ../sonarr:/config
            - /etc/localtime:/etc/localtime:ro
            - /media/megadrive/Media/Series:/tv
            - /media/megadrive/Media/tmp/completed:/downloads
        env_file: ../uidgid.env
        network_mode: "service:vpn"
        environment:
            - TZ='Europe/Stockholm'
        cap_add:
            - net_admin
        depends_on:
            - vpn
        restart: always


    radarr:
        image: linuxserver/radarr
        container_name: radarr
        volumes:
            - ../radarr:/config
            - /media/megadrive/Media/Movies:/movies
            - /media/megadrive/Media/tmp/completed:/downloads
            - /etc/localtime:/etc/localtime:ro
        env_file: ../uidgid.env
        network_mode: "service:vpn"
        environment:
            - TZ='Europe/Stockholm'
        cap_add:
            - net_admin
        depends_on:
            - vpn
        restart: always

    deluge:
        image: linuxserver/deluge
        container_name: deluge
        depends_on:
            - vpn
        network_mode: "service:vpn"
        volumes:
            - ../deluge:/config
            - /media/megadrive/Media/tmp/:/downloads
            - /etc/localtime:/etc/localtime:ro
        restart: always
        env_file: ../uidgid.env
        environment:
            - TZ='Europe/Stockholm'

    jackett:
        container_name: jackett
        image: linuxserver/jackett
        restart: unless-stopped
        network_mode: "service:vpn"
        env_file: ../uidgid.env
        environment:
            - TZ='Europe/Stockholm'
        volumes:
            - ../jackett:/config
            - /media/megadrive/Media/tmp/blackhole:/downloads

networks:
    default:

1 Ответ

0 голосов
/ 26 мая 2018

Похоже, что разрешить службе vpn использовать хост вместо моста (по умолчанию).Решит пару вещей.

  • Разрешить все, чтобы работать на хост-компьютере IP.Пока каждый сервис находится на своем собственном порту, это нормально.
  • Сервисы, похоже, все еще следуют правилам openvpn
  • больше нет необходимости в nginx для прокси для webgui

    vpn:
        image: dperson/openvpn-client
        container_name: vpn
        cap_add:
            - net_admin
        tmpfs:
            - /tmp
        restart: unless-stopped
        security_opt:
            - label:disable
        stdin_open: true
        tty: true
        volumes:
            - ../openvpn:/vpn
            - /dev/net:/dev/net:z
        environment:
            - DNS='8.8.4.4 8.8.8.8'
            - FIREWALL="1"
            - TZ='Europe/Stockholm'
        command: -f ""
        network_mode: "host"
    
...