WireGuard S2S-VPN: So habe ich mein Netzwerk komplett umgestellt

WireGuard S2S-VPN: So habe ich mein Netzwerk komplett umgestellt

In diesem Beitrag zeige ich dir, wie ich mein gesamtes Netzwerk von IPSec auf WireGuard umgestellt habe. Anstelle der alten IPSec‑Verbindungen habe ich eine moderne Site-to-Site (S2S) VPN‑Lösung aufgebaut, die das Heimnetz, Hetzner und Oracle sicher miteinander verbindet. Alle Public IPs wurden anonymisiert.

1. Übersicht der Netzwerktopologie

  • Heimnetz:
    • Subnetz: 192.168.50.0/24
    • Firewall: OPNsense (z. B. IP: 192.168.50.254)
    • WireGuard‑Tunnel: Die Heimseite erhält die Tunnel-IP 10.50.50.2
  • Hetzner:
    • Virtuelle Infrastruktur mit ESX
    • Internes Netz: 192.168.188.0/24
    • Virtuelle OPNsense (Router) mit IP, z. B. 192.168.188.254
    • Öffentliche IP (anonymisiert): XX.XX.XX.XX
    • Zentrale WireGuard‑Serverrolle: Tunnel-IP 10.50.50.1
  • Oracle:
    • Virtuelle Umgebung (mehrere VMs, Dienste laufen in Docker)
    • Subnetz: 10.30.0.0/16
    • WireGuard‑Client in einem Docker‑Container erhält Tunnel-IP 10.50.50.3

Alle Standorte sind über WireGuard miteinander vernetzt – sodass Oracle über Hetzner auch Zugriff auf das Heimnetz (192.168.50.0/24) erhält.

2. Docker‑Compose Setup für den WireGuard‑Client bei Oracle

Auf der Oracle-Seite habe ich einen Docker‑Container eingerichtet, der als WireGuard‑Client fungiert. So sieht der Verzeichnisaufbau aus:

oracle-wireguard/
├── docker-compose.yml
└── config/
    └── wg0.conf

docker-compose.yml

version: '3.8'
services:
  wireguard:
    image: linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - TZ=Europe/Berlin
      - PUID=1000       # ggf. anpassen
      - PGID=1000
    volumes:
      - ./config:/config
      - /lib/modules:/lib/modules
    restart: unless-stopped
    network_mode: "host"

config/wg0.conf

[Interface]
# Tunnel-IP des Oracle‑Clients
Address = 10.50.50.3/24
PrivateKey = <DEIN_ORACLE_DOCKER_PRIVATE_KEY>
DNS = 8.8.8.8

[Peer]
# Konfiguration des zentralen Hetzner‑WireGuard‑Servers
PublicKey = <HETZNER_PUBLIC_KEY>
Endpoint = XX.XX.XX.XX:51820   # anonymisierte Hetzner Public IP und Port
# Erreichbare Netze über diesen Tunnel:
AllowedIPs = 10.30.0.0/16, 192.168.188.0/24, 192.168.50.0/24
PersistentKeepalive = 25

Mit AllowedIPs wird definiert, dass Traffic zu Oracle (10.30.0.0/16), Hetzner (192.168.188.0/24) und Heimnetz (192.168.50.0/24) über den Tunnel laufen soll.

3. WireGuard‑Konfigurationen über OPNsense-Interfaces bei Hetzner und im Heimnetz

Auf Hetzner (WireGuard‑Server auf OPNsense)

Da auf der Hetzner-Seite eine virtuelle OPNsense-Firewall eingesetzt wird, erfolgt die WireGuard-Konfiguration über das OPNsense-Interface:

  1. Installation und Plugin: Stelle sicher, dass das WireGuard-Plugin in OPNsense installiert ist. Falls nicht, installiere es über System > Firmware > Plugins.
  2. Neues Tunnel-Interface anlegen: Navigiere zu VPN > WireGuard und klicke auf Add Tunnel.
  3. Tunnel konfigurieren:
    • Gib als Name z. B. „WG-Hetzner“ ein.
    • Setze im Feld Interface Address die IP-Adresse 10.50.50.1/24.
    • Füge den PrivateKey des Hetzner-OPNsense-Systems ein.
    • Lege den ListenPort (z. B. 51820) fest.
  4. Peers hinzufügen: Klicke im gleichen Bereich auf Add Peer und konfiguriere:
    • Für den Oracle-Client: Trage den Oracle-PublicKey ein und setze AllowedIPs = 10.50.50.3/32.
    • Für das Heimnetz (über die heimseitige OPNsense): Trage den entsprechenden PublicKey ein und setze AllowedIPs = 192.168.50.0/24, 10.50.50.2/32.
  5. Interface zuweisen: Gehe zu Interfaces > Assignments und weise dem neuen WireGuard-Tunnel ein Interface zu (z. B. OPTx). Aktiviere es und konfiguriere ggf. zusätzliche Einstellungen.

Im Heimnetz (OPNsense)

Auch im Heimnetz erfolgt die WireGuard-Konfiguration über das OPNsense-Interface:

  1. WireGuard-Plugin öffnen: Navigiere zu VPN > WireGuard und klicke auf Add Tunnel.
  2. Tunnel konfigurieren:
    • Gib als Name z. B. „WG-Heim“ ein.
    • Setze im Feld Interface Address die IP-Adresse 10.50.50.2/24.
    • Füge den PrivateKey deiner heimseitigen OPNsense ein.
    • Lege den ListenPort (z. B. 51820) fest.
  3. Peer hinzufügen:
    • Klicke auf Add Peer und trage den PublicKey des Hetzner-OPNsense-Systems ein.
    • Setze als Endpoint die anonymisierte Hetzner-IP mit Port (XX.XX.XX.XX:51820).
    • Gib unter AllowedIPs an: 10.30.0.0/16, 192.168.188.0/24, 192.168.50.0/24.
    • Aktiviere PersistentKeepalive mit dem Wert 25.
  4. Interface zuweisen: Gehe zu Interfaces > Assignments und weise dem WireGuard-Tunnel ein Interface zu, aktiviere es und konfiguriere die nötigen Firewall-Regeln.

4. Zusammengefasster Ablauf & Routing

Der gesamte Ablauf der Tunnelbildung und des Routings sieht folgendermaßen aus:

  • Oracle: Der Docker‑Container baut mit der wg0.conf einen Tunnel zum Hetzner‑Server auf.
  • Hetzner: Die OPNsense-Firewall fungiert als zentraler WireGuard‑Server, akzeptiert den Tunnel und leitet den Traffic weiter.
  • Heimnetz (OPNsense): Die heimseitige OPNsense stellt über ihren WireGuard‑Tunnel eine Verbindung zum Hetzner‑Server her, sodass das Heimnetz (192.168.50.0/24) eingebunden wird.

Routing & Firewall:

  • Auf Oracle wird der gesamte Traffic, der zu den Netzen 10.30.0.0/16, 192.168.188.0/24 und 192.168.50.0/24 gehört, über den Tunnel geleitet.
  • Hetzner leitet den Transit-Traffic zwischen Oracle und dem Heimnetz weiter – vorausgesetzt, die statischen Routen und AllowedIPs sind korrekt gesetzt.
  • Auf beiden OPNsense-Instanzen (bei Hetzner und im Heimnetz) wurden die Firewall-Regeln so angepasst, dass der Tunnelverkehr nicht blockiert wird.

Hinweis: Nach Änderungen an den Routen oder Firewall-Regeln kann es erforderlich sein, Services neu zu starten, da sie eventuell noch alte Routen im Cache haben.

5. Generierung von Private- und Public Keys

Die Schlüssel für WireGuard müssen auf jedem System generiert werden, sofern diese noch nicht existieren. So generierst du die Schlüssel:

  • Öffne ein Terminal.
  • Führe folgenden Befehl aus, um den Private Key zu erzeugen:
    wg genkey | tee privatekey
  • Generiere anschließend den Public Key basierend auf dem Private Key:
    cat privatekey | wg pubkey > publickey
  • Der Inhalt der Datei privatekey ist dein WireGuard Private Key, und der Inhalt der Datei publickey ist dein Public Key.

6. Fazit

Durch die Umstellung von IPSec auf WireGuard und die sorgfältige Konfiguration der Docker‑Container, WireGuard‑Server sowie der OPNsense‑Firewalls konnte ich eine moderne, wartungsfreundliche S2S‑VPN‑Lösung implementieren. Der Tunnel verbindet Oracle, Hetzner und das Heimnetz zuverlässig miteinander – und zeigt, wie wichtig es ist, alte Routen zu bereinigen, Services gegebenenfalls neu zu starten und Firewall-Regeln regelmäßig zu überprüfen.

Schreibe einen Kommentar

Diese Seite ist durch reCAPTCHA und Google geschützt Datenschutz-Bestimmungen und Nutzungsbedingungen anwenden.

Der Zeitraum für die reCAPTCHA-Überprüfung ist abgelaufen. Bitte laden Sie die Seite neu.