Gluetun:讓Docker容器走VPN連線,沒網路就斷線,使用教學

Gluetun

  • OpenVPN
services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    ports:
      - 8888:8888/tcp # HTTP proxy
      - 8388:8388/tcp # Shadowsocks
      - 8388:8388/udp # Shadowsocks
    volumes:
      - /home/user/gluetun:/gluetun
    environment: # 按照VPN供應商的OpenVPN設定檔填寫
      - VPN_SERVICE_PROVIDER=protonvpn
      - VPN_TYPE=openvpn
      - OPENVPN_USER= # OpenVPN帳號
      - OPENVPN_PASSWORD= # OpenVPN密碼
      - SERVER_COUNTRIES=United Kingdom # 指定伺服器所在國家,以逗號分隔
     networks: # (選擇性) 固定Gluetun容器的IP
       network:
        ipv4_address: 172.27.0.5

networks: # (選擇性) 固定Gluetun容器的IP
  network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.27.0.0/16
          gateway: 172.27.0.5
  • WireGuard
services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    ports:
      - 8888:8888/tcp # HTTP proxy
      - 8388:8388/tcp # Shadowsocks
      - 8388:8388/udp # Shadowsocks
    volumes:
      - /home/user/gluetun:/gluetun
    environment:
      - VPN_SERVICE_PROVIDER=protonvpn # 按照VPN供應商的WireGuard設定檔填寫
      - VPN_TYPE=wireguard
      - WIREGUARD_PRESHARED_KEY= # 預共享密鑰
      - WIREGUARD_PRIVATE_KEY= # 私鑰
      - WIREGUARD_ADDRESSES= # 填IPV4與IPV6位址,以逗號分隔
      - SERVER_COUNTRIES=United Kingdom # 指定伺服器所在國家,以逗號分隔
     networks: # (選擇性) 固定Gluetun容器的IP
       network:
        ipv4_address: 172.27.0.5

networks: # (選擇性) 固定Gluetun容器的IP
  network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.27.0.0/16
          gateway: 172.27.0.5

讓容器走Gluetun的VPN連線

  • 如果容器服務跟Gluetun寫在同一個docker-compose:加入網路模式network_mode: “service:gluetun”
  • 如果該容器跟Gluetun不是寫在同一個docker-compose:加入network_mode: “container:gluetun”
  • 開啟Gluetun的docker-compose檔案,把 service 用到的通訊埠(ex:8080)加回來
  • 依序啟動Gluetun和 走Gluetun的VPN連線的服務
  • 容器公共IP應當跟您選擇的VPN伺服器一致