Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过VPN容器路由Docker容器流量_Docker_Containers_Vpn_Openvpn - Fatal编程技术网

通过VPN容器路由Docker容器流量

通过VPN容器路由Docker容器流量,docker,containers,vpn,openvpn,Docker,Containers,Vpn,Openvpn,我已经在运行openmediavault(版本4.1.27-1 Arrakis)的RockPro64(ARMv8处理器版本2(v8 |))上安装了几个容器。一切都很好 我使用的容器包括Transmission、Jellyfin、Radarr、Sonar、Jackett……等等。我希望能够通过VPN连接这些容器,以便连接更私密 理想的情况是,我有一个与我的VPN提供商连接的“VPN容器”(目前这是PIA,但我希望有一个灵活的解决方案)。我的其他容器将通过此容器连接到internet,以便它们具有V

我已经在运行openmediavault(版本4.1.27-1 Arrakis)的RockPro64(ARMv8处理器版本2(v8 |))上安装了几个容器。一切都很好

我使用的容器包括Transmission、Jellyfin、Radarr、Sonar、Jackett……等等。我希望能够通过VPN连接这些容器,以便连接更私密

理想的情况是,我有一个与我的VPN提供商连接的“VPN容器”(目前这是PIA,但我希望有一个灵活的解决方案)。我的其他容器将通过此容器连接到internet,以便它们具有VPN连接

也许值得一提的是,我有两个容器(Jellyfin和Nextcloud),我可以通过域名从外部通过internet访问。通过VPN连接这些容器可能会有所不同


我找不到任何为我的设置提供解决方案的清晰指南。我希望有人能提供一些关于从何处开始或共享对我有用的指南的想法。

这看起来像是容器保护传出连接所需的内容:。您想用
--net container:name of vpn container启动容器吗

我想,如果您希望传入的容器通过VPN,则需要确保VPN提供商为您提供静态IP/主机名并转发端口。我怀疑您不想走这条路,因为这会很复杂。最好的办法是继续通过域名访问它们,只需确保它通过http并确保您使用的设备(手机/平板电脑/笔记本电脑等)位于VPN上


*关于这方面的更多信息,请看linuxserver.io出色的工作:

我通过PIA vpn(在amd64上,但也提供了arm64的图像)运行雷达、声纳、激光雷达、巴扎、pyload、洪水、水母、杰里芬、杰克特、空声集装箱

它有很好的文档记录和积极维护。在撰写本文时,它支持私有互联网接入、Mulvad、Windscribe、Surfshark、Cyberghost、Vyprvpn、NordVPN、PureVPN和Privado

对于gluetun容器,我使用它来公开端口:

version: '3.7'
services:
  gluetun:
    image: qmcgaw/private-internet-access
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    network_mode: bridge
    ports:
      - 8888:8888/tcp # HTTP proxy
      - 8388:8388/tcp # Shadowsocks
      - 8388:8388/udp # Shadowsocks
      - 8000:8000/tcp # Built-in HTTP control server
# other containers ports
      - 8112:8112     # deluge webui
      - 58846:58846   # deluge daemon
      - 6767:6767     # bazarr
      - 8989:8989     # sonarr
      - 7878:7878     # radarr
      - 8686:8686     # lidarr
      - 9117:9117     # jackett
      - 4040:4040     # airsonic
      - 8096:8096     # jellyfin/emby
      - 8227:8227     # pyload
    volumes:
      - ./data_gluetun:/gluetun
      - ./data_gluetun/port_forward:/tmp/gluetun/forwarded_port
    environment:
      - VPNSP=private internet access
      - TZ=Europe/London
      - USER=${PIA_USER}
      - PASSWORD=${PIA_PASS}
      - REGION=${PIA_REGION}
      - PORT_FORWARDING=on
      - FIREWALL_OUTBOUND_SUBNETS=192.168.1.0/24
      - HTTPPROXY=on
      - SHADOWSOCKS=on
      - SHADOWSOCKS_PASSWORD=${SHADOW_PASS}
    restart: unless-stopped
然后在我希望通过上述容器路由的容器中,我注释了所有现有的网络设置,并将它们替换为
网络模式:“container:gluetun”


对于从外部本地网络访问的自动letsencrypt证书和反向代理,我使用arm兼容的mariadb
yobasystems/alpine mariadb:latest
,运行在带有64位ubuntu服务器的RPi4b上。

因此,您可以在docker compose中创建一个与VPN对应的网络,并使用该网络和所有容器他们会互相认识的。看看Ehm,听起来很有趣,但也有点让我不知所措。我会看看我能不能解决这个问题。