您好,我有一个 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 容器访问互联网。
我用我自己的 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
在我的具体情况下,ovpn 的自定义配置导致了问题,但默默地失败了,感谢您的回复,我尝试删除客户配置并使用您的设置,它也以这种方式工作,谢谢。