Add README, MIT license and .gitignore
README documents the reverse-tunnel use case, features, security model and usage steps. .gitignore excludes OS/editor cruft and prevents accidental commit of generated WireGuard configs (which contain private keys). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+24
@@ -0,0 +1,24 @@
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# Editor / IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.claude/
|
||||
|
||||
# Temp files
|
||||
*.tmp
|
||||
*.bak
|
||||
*.log
|
||||
|
||||
# Generated WireGuard configs (sollten nicht ins Repo)
|
||||
*.conf
|
||||
!example.conf
|
||||
|
||||
# Saved tokens (verschlüsselt, aber trotzdem nichts fürs Repo)
|
||||
*.token
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Stefan Hacker
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,69 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user