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:
2026-05-10 02:03:19 +02:00
parent 511f95f938
commit 2471fcfc65
3 changed files with 114 additions and 0 deletions
+24
View File
@@ -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
+21
View File
@@ -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.
+69
View File
@@ -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