WireGuard VPN-Server in Docker betreiben

 

WireGuard stellt eine effiziente Möglichkeit dar, VPN-Verbindungen in einem Docker-Container zu ermöglichen.

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker
Dieses Setup kombiniert zwei essenzielle Komponenten: den WireGuard-Container für die grundlegende VPN-Funktionalität und WireGuard-UI für eine benutzerfreundliche Verwaltung der Verbindungen und Konfiguration. 

docker-compose.yml

Die bereitgestellte Docker-Compose-Datei definiert zwei Hauptservices:

  • WireGuard: Nutzt das Image "linuxserver/wireguard" und ist für die hauptsächliche VPN-Verbindung zuständig. Der Container erhält Netzwerkverwaltungsrechte (NET_ADMIN) und bindet Volumes sowie Ports für die Konfiguration.
  • WireGuard-UI: Stellt eine benutzerfreundliche Webschnittstelle zur Verfügung, um die WireGuard-Verbindungen zu verwalten. Dieser Dienst ist vom WireGuard-Dienst abhängig und wird im gleichen Netzwerkmodus betrieben, was eine nahtlose Interaktion ermöglicht. Um Umgebungsparameter zu definieren, werden verschiedene Umgebungsvariablen genutzt, und die Protokollierung ist optimiert, um die Protokolldateigröße zu begrenzen.
[+]
version: "3"

services:

  wireguard:
    image: linuxserver/wireguard:v1.0.20210914-ls7
    container_name: wireguard
    cap_add:
      - NET_ADMIN
    volumes:
      - ./config:/config
    ports:
      - "5001:5000"
      - "51820:51820/udp"

  wireguard-ui:
    image: ngoduykhanh/wireguard-ui:latest
    container_name: wireguard-ui
    depends_on:
      - wireguard
    cap_add:
      - NET_ADMIN
    network_mode: service:wireguard
    environment:
      - SENDGRID_API_KEY
      - EMAIL_FROM_ADDRESS
      - EMAIL_FROM_NAME
      - SESSION_SECRET
      - WGUI_USERNAME=admin
      - WGUI_PASSWORD=password
      - WG_CONF_TEMPLATE
      - WGUI_MANAGE_START=true
      - WGUI_MANAGE_RESTART=true
    logging:
      driver: json-file
      options:
        max-size: 50m
    volumes:
      - ./db:/app/db
      - ./config:/etc/wireguard

Nach dem Start mit dem Befehl "docker compose up" kann WireGuuard UI über die IP-Adresse des Hosts mit dem Port 5001 aufgerufen werden, z.B. http://localhost:5001, wenn Docker auf derselben Maschine läuft. Das initiale Passwort kann in der docker-compose.yaml Datei vorgegeben werden und in der UI geändert werden.

Wireguard Server - Settings

WireGuard Post-Up- und Post-Down-Skripte werden verwendet, um Befehle nach dem Start bzw. vor dem Stoppen einer VPN-Verbindung auszuführen. Sie ermöglichen automatisierte Netzwerk- oder Systemkonfigurationen, wie das Einstellen von Firewall-Regeln oder das Hinzufügen von Routing-Einträgen, die nur aktiv sein sollen, wenn die VPN-Verbindung aktiv ist. Damit der Wireguard Docker Container  den Netzwerkverkehr des Hosts weiterleitet, habe ich folgende Scripts im Einsatz:

Post Up Script

Post-Up-Skript: Konfiguriert Firewall-Regeln, um eingehenden und ausgehenden Traffic zu erlauben und Netzwerkpakete zu maskieren.

iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j MASQUERADE

Die IP-Range 192.168.1.0/24 sollte natürlich an das Netzwerk angepasst oder gegebenenfalls auf bestimmte IP-Adressen eingeschränkt werden. 

Post Down Script

Post-Down-Skript: Entfernt die zuvor gesetzten Firewall-Regeln.

iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -d 192.168.1.0/24 -j MASQUERADE

Die IP-Range sollte analog zum Post Up Script gesetzt werden.

Fazit

WireGuard vereinfacht die Verwaltung und Absicherung von Netzwerken durch den Einsatz von Docker-Containern für die VPN-Nutzung. Mit der Kombination aus einem WireGuard-Container und der benutzerfreundlichen WireGuard-UI, die über die Docker-Compose-Konfiguration integriert sind, wird der Netzwerkverkehr sicher und effizient gehandhabt, wobei Post-Up- und Post-Down-Skripte zur dynamischen Anpassung von Firewall- und Routing-Einstellungen beitragen.

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details