# Fritzbox Reverse WireGuard VPN Tunnel Generator Single-File-Webapp zum Erzeugen von WireGuard-Konfigurationen für ein **Reverse-Setup** zwischen einem Windows-PC (als WG-Server) und einer Fritzbox (als WG-Client). ## Das Problem Die Fritzbox bringt einen WireGuard-Server mit — aber: - Sie kann pro Gerät **nur ein Schlüsselpaar** verwalten. Fremde Configs lassen sich nicht einfach importieren. - Übliches Setup: Windows-Client connectet zur Fritzbox als Server. Sobald der Fritzbox-Anschluss seine öffentliche IP wechselt (was bei den meisten DSL-Anschlüssen täglich passiert), verliert der Windows-WireGuard-Client die Verbindung und reconnectet **nicht zuverlässig** — der User muss manuell neu verbinden. ## Die Lösung Spieß umdrehen: Der **Windows-PC** wird WireGuard-Server (öffnet UDP-Port), die **Fritzbox** baut als Client ausgehend zum Windows auf. Der Windows-Anschluss hat in der Regel länger gleiche IPs (oder feste IP über den Provider/Office-Anschluss), und selbst wenn nicht: die Fritzbox initiiert den Tunnel und reconnectet von sich aus zuverlässig bei IP-Wechseln. ``` [Fritzbox-LAN 192.168.178.0/24] | [Fritzbox] ── ausgehend WG ──> [Internet] ──> windows.dyndns.org:51820 | [Windows-PC] ``` Vom Windows-PC aus ist das gesamte Fritzbox-LAN durch den Tunnel erreichbar — inkl. SMB-Freigaben, Drucker, Web-Interfaces, etc. ## Features - **Schlüsselgenerierung im Browser** via WebCrypto X25519 (RFC 7748). Keine externen Tools nötig. - **Public Key wird live aus dem Private Key abgeleitet** — auch bei manuell eingesetzten Schlüsseln. - **Pre-Shared Key** (optional, empfohlen) für zusätzliche Quanten-Resistenz der Tunnel-Verschlüsselung. - **„Fritzbox hat schon eine WireGuard-Verbindung"-Modus**: Generiert dann nur einen separaten `[Peer]`-Block, der als eigene `.conf`-Datei in die Fritzbox importiert werden kann — die existierende Verbindung wird ergänzt, ohne dass sie gelöscht werden muss. - **Output:** Vollständige `.conf` für Windows und Fritzbox, beide als Text + Download + QR-Code. - **Konfiguration speichern/laden:** Verschlüsseltes Token (AES-256-GCM, PBKDF2-HMAC-SHA256 mit 600.000 Iterationen) zum sicheren Aufbewahren z.B. im Passwort-Manager. Konfiguration jederzeit wiederherstellen und neu exportieren. - **Dynamisch generierte Setup-Anleitung** mit Topologie-Diagramm. - **Komplett offline-fähig.** Eine einzige HTML-Datei, alle Libraries (qrcode-generator) inline. Keine externen Requests, keine Telemetrie, alles passiert lokal im Browser. ## Nutzung 1. Die Datei `fritzbox-reverse-wg.html` in einem aktuellen Browser öffnen (Chrome/Edge/Firefox/Safari der letzten ~2 Jahre wegen WebCrypto X25519). 2. Schlüssel werden beim Laden automatisch generiert. Felder anpassen: - **Endpoint:** DynDNS-Hostname des Windows-Anschlusses - **Port:** UDP-Port auf dem Windows-PC - **Tunnel-Subnetz:** Default `10.10.10.0/24` passt meist - **Fritzbox-LAN:** Zielnetz, das vom Windows aus erreichbar werden soll (Default `192.168.178.0/24`) 3. Wenn auf der Fritzbox bereits eine WireGuard-Verbindung existiert: die Checkbox aktivieren und den existierenden Fritzbox-Private-Key in das Eingabefeld eintragen (steht in der ursprünglich von der Fritzbox erzeugten `.conf` als `PrivateKey =`). 4. Auf „Konfigurationen erzeugen" klicken. 5. Beide `.conf`-Dateien herunterladen und auf den jeweiligen Geräten importieren (siehe automatisch generierte Anleitung im Output). 6. Optional: Konfiguration mit einem Passwort verschlüsseln und das Token sichern. Damit lässt sich die gesamte Konfiguration später jederzeit wiederherstellen. ## Voraussetzungen - **Windows-Anschluss:** Sollte einen UDP-Port nach außen öffnen können (Port-Forwarding am Router) und einen DynDNS-Namen haben. - **Fritzbox:** mit WireGuard-Unterstützung (FRITZ!OS 7.50+). ## Sicherheit - Alle kryptografischen Operationen laufen ausschließlich im Browser (WebCrypto API). - Private Keys, PSKs und Passwörter werden zu keinem Zeitpunkt über das Netzwerk gesendet. - Die HTML-Datei lädt keine externen Ressourcen — die qrcode-Generator-Library ist inline eingebettet. - Speicher-Tokens sind mit AES-256-GCM verschlüsselt; Schlüsselableitung via PBKDF2-HMAC-SHA-256 mit 600.000 Iterationen (OWASP-Empfehlung 2024). Manipulierte Tokens werden über das GCM-Auth-Tag erkannt und abgelehnt. ## Credits - QR-Code-Generierung: [qrcode-generator](https://github.com/kazuhikoarase/qrcode-generator) von Kazuhiko Arase (MIT) - Schlüssel-Erzeugung: WebCrypto X25519 (RFC 7748) ## Lizenz MIT