簡體   English   中英

使用 vpn 時的 docker 容器網絡訪問

[英]docker container network access when using vpn

預期結果:

容器可以通過主機名或主機 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:

似乎讓 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"

另一種選擇是vpn中的服務使用localhost相互訪問。 由於它們共享 vpn 容器的網絡堆棧,因此可以像訪問同一台主機一樣訪問它們。 這周讓我難住了一段時間。

一條評論,您在所有容器上都有 net_admin,您只需要在 vpn 上使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM