GNAI-006: Client-Einrichtungsdocs Linux/KDE + Windows 11 (wg-easy-Profil, Verifikation, Fehlersuche)
This commit is contained in:
@@ -4,12 +4,16 @@
|
||||
|
||||
**Titel:** Homelab / Infrastructure – WireGuard VPN Gateway (LXC) Setup & Access Control
|
||||
|
||||
**Version:** 1.3
|
||||
**Version:** 1.4
|
||||
|
||||
**Status:** In Umsetzung (Schritt 1–4 & 7 fertig, Step 5/6/9 offen)
|
||||
**Status:** In Umsetzung (Schritt 1–7 fertig, Step 5/6 ✅ User, Step 8/9 offen)
|
||||
|
||||
**Vorgänger / Referenzen:** GNAI-003-INFRA, GNAI-004-SEC
|
||||
|
||||
**Client-Dokus (Benutzeranleitung):**
|
||||
* [GNAI-006-SEC_VPN_Clients_Linux.md](GNAI-006-SEC_VPN_Clients_Linux.md) – Linux (KDE Plasma, z. B. CachyOS)
|
||||
* [GNAI-006-SEC_VPN_Clients_Windows11.md](GNAI-006-SEC_VPN_Clients_Windows11.md) – Windows 11
|
||||
|
||||
**Änderungsvorschlag Draft:** Hostname, Testmatrix und PASSWORD_HASH-Format gemäß Umsetzung korrigiert (siehe Changelog)
|
||||
|
||||
---
|
||||
@@ -275,3 +279,4 @@ Details & Entscheidungen: siehe `GNAI-006-SEC_VPN_Implementation-Log.md`.
|
||||
| 1.1 | 2026-09-09 | Umsetzung dokumentiert: Hostname `wireguard` (nicht `wireguard-gateway`); Testmatrix auf „Ausstehend“ (keine Tests über Mobilfunk gelaufen); `PASSWORD_HASH` = bcrypt (wg-easy/bcryptjs), nicht Argon2; Quadlet mit `EnvironmentFile=`; nftables-Konfig & ip_forward dokumentiert; wg-easy-allowedIPs-Limitation vermerkt; Umsetzungszustand-Tabellen & Implementation-Log ergänzt |
|
||||
| 1.2 | 2026-09-09 | Split-Tunneling konkretisiert: clientseitige AllowedIPs kommen aus Env-Variable `WG_ALLOWED_IPS` (Default `0.0.0.0/0` = Full-Tunnel!); `WG_ALLOWED_IPS` in `/opt/wg-easy/environment` gesetzt, Container neu gestartet, Env im Container verifiziert; Android-/24-Limitierung dokumentiert (nur `/32`-Einträge); Schritt 8 in „Konfig gesetzt / End-to-End offen“ zerlegt; `WG_PERSISTENT_KEEPALIVE`-Hinweis ergänzt |
|
||||
| 1.3 | 2026-09-09 | DNS-Korrektur: A-Record gehört beim **Domain-DNS-Anbieter** (nicht NPM/selfhost.eu-Portal – NPM ist nur HTTP-Proxy); Fritzbox-Portforward ✅ erledigt; WAN-IP `93.208.161.126` per `getent` verifiziert; Statisch/DynDNS-Check als offen vermerkt |
|
||||
| 1.4 | 2026-09-09 | DNS ✅ (Wildcard-DynDNS war bereits ausreichend; Redundanz-A-Record harmlos, Auflösung verifiziert); **zwei Client-Einrichtungsdocs** ergänzt (Linux/KDE, Windows 11) und im Header referenziert |
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
# GNAI-006-SEC – VPN-Client-Einrichtung: Linux (KDE Plasma)
|
||||
|
||||
**Bezug:** GNAI-006-SEC_VPN.md (WireGuard-VPN-Gateway LXC 105)
|
||||
**Zielgruppe:** Benutzer (Laptop, z. B. CachyOS mit KDE Plasma)
|
||||
**Version:** 1.0 · 2026-09-09
|
||||
|
||||
---
|
||||
|
||||
## 1. Voraussetzungen
|
||||
|
||||
* WireGuard-Client-Paket installiert
|
||||
* Das eigene wg-easy-Profil (`.conf`) – s. Abschnitt 2
|
||||
|
||||
## 2. Profil aus der wg-easy-UI beziehen (einmalig)
|
||||
|
||||
> ⚠️ Die UI ist **nur aus dem LAN** erreichbar (nftables). Beim ersten Setup also im Heimnetz (WLAN/LAN) bleiben.
|
||||
|
||||
1. Browser öffnen → `http://10.0.0.15:51821`
|
||||
2. Passwort eingeben
|
||||
3. In der Client-Liste den eigenen Eintrag wählen (z. B. `Laptop-FullAdmin`)
|
||||
4. **`Download`** klicken → Datei `Laptop-FullAdmin.conf` wird heruntergeladen
|
||||
*(Alternativ: QR-Code auf dem Display mit dem Smartphone scannen – Android/KDE-kompatibel.)*
|
||||
|
||||
Die Datei enthält alles Notwendige:
|
||||
|
||||
```ini
|
||||
[Interface]
|
||||
PrivateKey = … # nur die eigenen – NICHT weitergeben
|
||||
Address = 10.8.0.2/32
|
||||
DNS = 10.0.0.1 # Fritzbox als Resolver
|
||||
|
||||
[Peer]
|
||||
PublicKey = …
|
||||
PresharedKey = …
|
||||
Endpoint = vpn.ghostnet.selfhost.eu:51820
|
||||
AllowedIPs = 10.0.0.0/24, 10.8.0.0/24, …
|
||||
```
|
||||
|
||||
**Nur der Abschnitt `[Interface]` (PrivateKey!) ist privat** – `PublicKey`/`PresharedKey` dürfen geteilt werden, `PrivateKey` niemals.
|
||||
|
||||
## 3. WireGuard installieren (CachyOS)
|
||||
|
||||
```bash
|
||||
sudo pacman -S wireguard-dkms wireguard-tools
|
||||
```
|
||||
|
||||
* DKMS baut das WireGuard-Kernelmodul für den jeweils laufenden Kernel (CachyOS wechselt Kernel häufig – DKMS verhindert, dass nach einem Kernel-Update das Modul fehlt).
|
||||
* Prüfen: `lsmod | grep wireguard`
|
||||
|
||||
## 4. Profil importieren
|
||||
|
||||
### Variante A – KDE-Systemtray (empfohlen)
|
||||
|
||||
1. Oben rechts in der Taskleiste → **Systemtray-Icon** (kleines WLAN/Schild-Symbol) – erscheint nach Installation von `wireguard-tools` + `plasma-workspace` (bzw. `plasma-vault`-unabhängig, Teil der Standard-KDE-Pakete).
|
||||
2. Rechtsklick auf das Icon → **„New from file…“** → die `.conf` wählen.
|
||||
3. Eintrag erscheint in der Liste → Rechtsklick → **„Connect“**.
|
||||
|
||||
### Variante B – `wg-quick` (Konsole / Autostart)
|
||||
|
||||
```bash
|
||||
# Profil in das Konfigurationsverzeichnis legen
|
||||
install -m 600 ~/Downloads/Laptop-FullAdmin.conf /etc/wireguard/
|
||||
|
||||
# Verbindung starten (ohne root)
|
||||
sudo wg-quick up wg0
|
||||
|
||||
# Status
|
||||
wg show wg0
|
||||
|
||||
# Verbinden getrennt
|
||||
sudo wg-quick down wg0
|
||||
```
|
||||
|
||||
**Autostart (optional):** `/etc/wireguard/wg0.conf` mit `[Interface] PrivateKey=…` vorhanden → `sudo systemctl enable wg-quick@wg0`.
|
||||
|
||||
## 5. Verifikation
|
||||
|
||||
```bash
|
||||
ip -br addr show wg0 # wg0 UP, 10.8.0.2/32
|
||||
ping -c 3 10.8.0.1 # VPN-Gateway (muss funktionieren)
|
||||
ping -c 3 10.0.0.2 # Proxmox – LAN via Tunnel
|
||||
ping -c 3 10.0.0.90 # LLM-Server – LAN via Tunnel
|
||||
curl -s ifconfig.co # eigene ÖFFENTLICHE IP (Nicht-LAN: muss die WAN-IP des Providers sein, NIE 10.0.0.x)
|
||||
```
|
||||
|
||||
**Erwartet (Split-Tunneling):**
|
||||
* LAN-Hosts (`10.0.0.0/24`) → **über den VPN-Tunnel**
|
||||
* Alles andere (Internet) → **direkt** (Nicht-LAN: Provider-NAT)
|
||||
* `curl ifconfig.co` zeigt deine **normale** Außen-IP – **nicht** eine VPN-IP
|
||||
|
||||
## 6. Fehlersuche
|
||||
|
||||
| Symptom | Ursache / Lösung |
|
||||
| --- | --- |
|
||||
| „No handshake yet“ nach 30 s | (1) LAN: `http://10.0.0.15:51821` erreichbar? (2) Nicht-LAN: DNS von `vpn.ghostnet.selfhost.eu` auflösen (`nslookup vpn.ghostnet.selfhost.eu` → muss `93.208.161.126` zeigen); Fritzbox-Portforward UDP 51820 aktiv? |
|
||||
| `wg-quick` meldet `WireGuard kernel module not loaded` | `sudo modprobe wireguard` (DKMS nicht installiert oder Kernel-Update → `sudo pacman -S wireguard-dkms`) |
|
||||
| LAN-Ping funktioniert, `curl ifconfig.co` zeigt VPN-IP | Client ist (fälschlich) im Full-Tunnel-Modus → `AllowedIPs` in der `.conf` prüfen – muss **nur** `10.0.0.0/24,10.8.0.0/24,…` sein, **nicht** `0.0.0.0/0` |
|
||||
| `Permission denied` bei `wg-quick up` | `sudo` vergessen (oder: `sudo usermod -aG wheel $USER` + `sudo /usr/bin/setfacl -m u:$USER:rw /etc/wireguard/wg0.conf` für rootless) |
|
||||
| KDE-Icon fehlt | `plasma-workspace`-Paket installiert; Systemtray neu starten: `plasmashell --replace` |
|
||||
|
||||
## 7. Sicherheitshinweise
|
||||
|
||||
* **Niemals** den PrivateKey aus der `.conf` in einen Chat/Die-Cloud/Chat-Verlauf stellen.
|
||||
* `.conf` mit `chmod 600` (`install -m 600` s. oben) – kein World-Readable.
|
||||
* Bei Verdacht auf Kompromittierung: in der wg-easy-UI Client **deaktivieren** (Toggle) oder **delete** – der Server erkennt den Key nicht mehr an.
|
||||
@@ -0,0 +1,86 @@
|
||||
# GNAI-006-SEC – VPN-Client-Einrichtung: Windows 11
|
||||
|
||||
**Bezug:** GNAI-006-SEC_VPN.md (WireGuard-VPN-Gateway LXC 105)
|
||||
**Zielgruppe:** Benutzer (Windows 11)
|
||||
**Version:** 1.0 · 2026-09-09
|
||||
|
||||
> Windows 11 nutzt WireGuard über den **integrierten WireGuard-Treiber** (Hyper-V-basiert). Es braucht **kein** extra Kernelmodul – es reicht die Desktop-App.
|
||||
|
||||
---
|
||||
|
||||
## 1. WireGuard-App installieren
|
||||
|
||||
### Variante A – Microsoft Store (empfohlen)
|
||||
|
||||
1. **Microsoft Store** öffnen → Suche: **WireGuard**
|
||||
2. Veröffentlicher: **WireGuard** (wireguard.com) → **Installieren**
|
||||
3. App startet leer („No connections“)
|
||||
|
||||
### Variante B – Installer (GitHub-Release)
|
||||
|
||||
1. <https://www.wireguard.com/install/> → **Windows** → `wireguard-x.x.x-amd64.msi`
|
||||
2. Installieren (Admin-Prompt bestätigen)
|
||||
|
||||
## 2. Profil aus der wg-easy-UI beziehen (einmalig)
|
||||
|
||||
> ⚠️ Die UI ist **nur aus dem LAN** erreichbar. Beim ersten Setup also im Heimnetz.
|
||||
|
||||
1. Browser → `http://10.0.0.15:51821` → Passwort
|
||||
2. Eigene Client-Karte (z. B. `Laptop-FullAdmin`) → **`Download`** → `.conf` wird gespeichert
|
||||
|
||||
**Profil in die App importieren:**
|
||||
|
||||
1. WireGuard-App starten → **„+“** (oben rechts) → **„Import from file…“**
|
||||
2. Die heruntergeladene `.conf` wählen → Eintrag erscheint in der Verbindungsliste
|
||||
|
||||
*(Alternativ: QR-Code aus der UI mit dem Telefon scannen → in WireGuard auf dem Telefon; für Windows nur File-Import.)*
|
||||
|
||||
## 3. Verbinden
|
||||
|
||||
1. In der App den Eintrag anklicken (z. B. `Laptop-FullAdmin`)
|
||||
2. **„Start“** (grüner Schalter)
|
||||
3. Taskleiste unten rechts: **Netzwerk-Icon** zeigt ein kleines **WireGuard-Schild** → verbunden
|
||||
4. Nach 2–5 s steht die Tunnel-IP `10.8.0.x/32` (s. Status unter „Verbinden“)
|
||||
|
||||
## 4. Verifikation
|
||||
|
||||
**PowerShell:**
|
||||
|
||||
```powershell
|
||||
# 1. Tunnel-IP
|
||||
Get-NetIPAddress -InterfaceAlias "Laptop-FullAdmin" | Select-Object IPAddress
|
||||
# erwartet: 10.8.0.2 (oder .3)
|
||||
|
||||
# 2. LAN via Tunnel
|
||||
ping 10.8.0.1 # VPN-Gateway
|
||||
ping 10.0.0.2 # Proxmox
|
||||
ping 10.0.0.90 # LLM-Server
|
||||
|
||||
# 3. Außen-IP (muss die NORMALE Provider-IP sein, nicht 10.0.0.x)
|
||||
Invoke-RestMethod "https://ifconfig.co"
|
||||
```
|
||||
|
||||
**Split-Tunneling-Erwartung:**
|
||||
* `10.0.0.0/24` + `10.8.0.0/24` → **Tunnel**
|
||||
* Internet (alles andere) → **direkt**, Außen-IP = deine normale WAN-IP
|
||||
|
||||
## 5. Fehlersuche
|
||||
|
||||
| Symptom | Ursache / Lösung |
|
||||
| --- | --- |
|
||||
| „No handshake yet“ nach 30 s | (1) Im LAN? (UI erreichbar `http://10.0.0.15:51821`) (2) Nicht-LAN: `nslookup vpn.ghostnet.selfhost.eu` → muss auf WAN-IP zeigen; Fritzbox-Forward UDP 51820 aktiv? |
|
||||
| App meldet `No WireGuard adapter found` | Windows 11 nutzt den integrierten WireGuard-Treiber – kein extra Setup nötig. Prüfen: *Einstellungen → Apps → Optionalle Features* → „Windows-Hyper-V-Plattform“ / „Windows Internal WireGuard“ aktiv. Fehlt es → Feature aktivieren (Admin) → Neustart. |
|
||||
| Ping ins LAN klappt, aber `Invoke-RestMethod ifconfig.co` zeigt VPN-IP | `AllowedIPs` in der `.conf` ist `0.0.0.0/0` (Full-Tunnel) → neu aus UI herunterladen (wg-easy-Env `WG_ALLOWED_IPS` muss gesetzt sein, s. GNAI-006) |
|
||||
| „Access is denied“ beim Start | App als Administrator starten (Einmalig) oder Firewall-Einstellung prüfen: Windows Firewall blockiert gelegentlich ausgehende UDP 51820 → Ausnahme hinzufügen. |
|
||||
| VPN-Icon in der Taskleiste fehlt | Taskleiste rechts → Pfeil → „WireGuard“ → **pinnen** (Rechtsklick → „Auf Taskleiste pinnen“) |
|
||||
|
||||
## 6. Autostart / Verhalten bei Netzwerkwechsel
|
||||
|
||||
* **Standard:** Verbindung bleibt aktiv, wechselt mit dem Netzwerk (WAN-Wechsel = kurzer Datenverlust, dann Re-Handshake).
|
||||
* **Autostart bei Login:** WireGuard-App → Einstellungen (Zahnrad) → „Start automatically at login“ (falls verfügbar; in älteren Builds: `shell:startup` mit `wireguard.exe --startup` – **empfohlen: Store-Version**).
|
||||
|
||||
## 7. Sicherheitshinweise
|
||||
|
||||
* **Niemals** den `[Interface]`-Abschnitt der `.conf` (PrivateKey) teilen, per E-Mail/Chat/Kopie.
|
||||
* `.conf` auf dem Rechner mit NTFS-Berechtigungen schützen (Standard-User-Ordner = `Users\<du>\Downloads` – genügt für Einzelplatz; bei Mehrbenutzer-Rechner unter `C:\Users\Public` **nicht** ablegen).
|
||||
* Bei Verdacht auf Kompromittierung: wg-easy-UI → Client deaktivieren/löschen → neu erzeugen (alter Key wird dann nie mehr akzeptiert).
|
||||
Reference in New Issue
Block a user