docker 容器无法访问连接到 VPN 的互联网

问题描述 投票:0回答:2

您好,我有一个 docker compose 文件,其中带有 VPN 和附加的容器,我设置了外部网络,但附加到 VPN 的容器无法访问互联网。

docker-compose.yml

version: '3.9'
services:
  vpn:
    container_name: vpn
    image: qmcgaw/gluetun:v3.37.0
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn # Valid values: nordvpn, expressvpn, protonvpn, surfshark or custom
      - OPENVPN_USER=
      - OPENVPN_PASSWORD=

      ## For list of server countries, visit https://raw.githubusercontent.com/qdm12/gluetun/master/internal/storage/servers.json
      ## When VPN_SERVICE_PROVIDER is custom. Comment the below line
      - SERVER_COUNTRIES=Switzerland
    
      # - FREE_ONLY=on  # Valid with protonvpn only. Value willbe set "on" if using free subscription provided by protonvpn

      ## Enable below if VPN_SERVICE_PROVIDER=custom
      - VPN_TYPE=openvpn # or wireguard. 

      ## If VPN_TYPE is openvpn
      - OPENVPN_CUSTOM_CONFIG=/gluetun/custom.conf
    
    # Uncomment/enable below ports if VPN is used/enabled
    ports:
    #   # qbittorrent ports
    #   - 5080:5080
    #   - 6881:6881
    #   - 6881:6881/udp
    #   # prowlarr ports
    #   - 9696:9696
      - 8123:8123
    restart: "unless-stopped"
    networks:
      - mynetwork

  homeassistant:
    container_name: hass
    image: homeassistant/home-assistant
    network_mode: 'service:vpn'
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    depends_on:
      - vpn

networks:
  mynetwork: 
    driver: bridge                                
    external: true

根据我的理解,hass容器应该能够访问互联网,但会有一个设置VPN的瑞士的IP地址?

目前我根本无法从 hass 容器访问互联网。

docker vpn
2个回答
1
投票

我用我自己的 NordVPN 帐户尝试了你的 docker compose :

version: '3.9'
services:
  vpn:
    container_name: vpn
    image: qmcgaw/gluetun:v3.37.0
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn # Valid values: nordvpn, expressvpn, protonvpn, surfshark or custom
      - OPENVPN_USER=
      - OPENVPN_PASSWORD=

      ## For list of server countries, visit https://raw.githubusercontent.com/qdm12/gluetun/master/internal/storage/servers.json
      ## When VPN_SERVICE_PROVIDER is custom. Comment the below line
      - SERVER_COUNTRIES=Switzerland
    
      # - FREE_ONLY=on  # Valid with protonvpn only. Value willbe set "on" if using free subscription provided by protonvpn

      ## Enable below if VPN_SERVICE_PROVIDER=custom
      - VPN_TYPE=openvpn # or wireguard. 

      ## If VPN_TYPE is openvpn
      #- OPENVPN_CUSTOM_CONFIG=/gluetun/custom.conf
    
    # Uncomment/enable below ports if VPN is used/enabled
    ports:
    #   # qbittorrent ports
    #   - 5080:5080
    #   - 6881:6881
    #   - 6881:6881/udp
    #   # prowlarr ports
    #   - 9696:9696
      - 8123:8123
    restart: "unless-stopped"
    networks:
      - mynetwork

  homeassistant:
    container_name: hass
    image: homeassistant/home-assistant
    network_mode: 'service:vpn'
    depends_on:
      - vpn

networks:
  mynetwork: 
    driver: bridge                                
    external: false

注意:我已将网络更改为内部网络,并删除 #- OPENVPN_CUSTOM_CONFIG=/gluetun/custom.conf

然后我测试了从两个容器连接到互联网,我可以毫无问题地访问:

docker container exec -it 3b639f665c78 sh
/ # ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: seq=0 ttl=56 time=32.644 ms
❯ docker container exec -it 8fc7b37dab2c sh
/config # ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: seq=0 ttl=56 time=32.100 ms

请尝试从容器内使用 ping 我们的curl -v


0
投票

在我的具体情况下,ovpn 的自定义配置导致了问题,但默默地失败了,感谢您的回复,我尝试删除客户配置并使用您的设置,它也以这种方式工作,谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.