IPv64.net VPN Gateway Docker Client - Suche Hilfe

Mit --network host nutzt du das Hostnetzwerk. Damit hebst du die Netzwerkisolation auf.
Und mit --privileged kannst du Zugriff auf Host Devices erhalten.

Das bedeutet unterm Strich auch, dass es streng genommen den Container nur zu Einrichten des Interfaces braucht. Den Loop um den Container am Leben zu halten, bräuchte es mit dem Setup tatsächlich nicht. Stirbt der Container, ist das Interface weiterhin auf dem Host-System aktiv.

Angenommen wir modifizieren die entrypoint.sh:

#!/usr/bin/env sh

set -e

SERVICE_BASE_URL="https://ipv64.net/"
WG_CONFIG_URL="${SERVICE_BASE_URL}?wgconfig=${WG_TOKEN}"
WG_STATS_URL="${SERVICE_BASE_URL}?wgstats=${WG_TOKEN}"

##

if [ -z "${WG_TOKEN}" ]; then
  TS=$(date +"%Y-%m-%d %H:%M:%S.%N %Z")
  echo "[ERROR] ${TS} | Missing WG_TOKEN"
  exit 1
fi

# create & enter working directory
mkdir -p /etc/wireguard
if ! cd /etc/wireguard; then
  TS=$(date +"%Y-%m-%d %H:%M:%S.%N %Z")
  echo "[ERROR] ${TS} | Could not create working directory"
  exit 1
fi

# download up to date configuration
TS=$(date +"%Y-%m-%d %H:%M:%S.%N %Z")
echo "[INFO] ${TS} | Downloading WireGuard configuration"
if ! curl -fsL "${WG_CONFIG_URL}" -o ./wg0.conf; then
  TS=$(date +"%Y-%m-%d %H:%M:%S.%N %Z")
  echo "[ERROR] ${TS} | Could not download new configuration"
  exit 1
fi

# connect wireguard tunnel
TS=$(date +"%Y-%m-%d %H:%M:%S.%N %Z")
echo "[INFO] ${TS} | Starting WireGuard interface wg0"
if ! wg-quick up wg0; then
  TS=$(date +"%Y-%m-%d %H:%M:%S.%N %Z")
  echo "[ERROR] ${TS} | Could not start WireGuard interface"
  exit 1
fi

Dann würde uns das reichen:

docker run --rm -d \
  --privileged --network host \
  -e WG_TOKEN="xxxxxxx" ipv64-vpn-gateway-client

Damit wird der Container erstellt, das Interface konfiguriert und der Container verschwindet wieder vollständig.