# HowTo: WireGuard VPN-Profile per `nmcli` in KDE Plasma (Kubuntu) integrieren

## 1. Problemstellung & Hintergrund
Beim manuellen Einrichten von WireGuard-Verbindungen über die grafische Benutzeroberfläche von KDE Plasma (*Systemeinstellungen* $\rightarrow$ *Netzwerk*) treten häufig Fehler auf:
* **UI-Validierungsfehler:** Die Maske von KDE Plasma (Plasma-NM) parst komplexe WireGuard-Konfigurationen (wie multiple DNS-Server, AllowedIPs-Listen oder MTU-Werte) nicht immer fehlerfrei.
* **Schlüsselverwaltung (KWallet vs. Root):** Private Keys werden über die GUI oft im benutzerspezifischen KDE-Wallet hinterlegt statt systemweit im NetworkManager. Dadurch scheitert der Tunnel-Aufbau oder verlangt unerwartet Root- bzw. Wallet-Passwörter.

### Die Lösung
Der NetworkManager bringt seit Version 1.16 ein natives WireGuard-Plugin mit. Über das Kommandozeilen-Tool `nmcli` kann eine existierende, funktionierende `.conf`-Datei (von `wg-quick`) verlustfrei direkt in die systemweite NetworkManager-Struktur importiert werden.

**Vorteile:**
* Kein Terminal/`sudo` mehr für den täglichen Verbindungsaufbau nötig.
* Steuerung per 1-Klick im KDE-Netzwerk-Tray (Taskleiste) – analog zum WireGuard-Client unter Windows.
* Manuelle Kontrolle: Keine Routing-Konflikte im lokalen Office-Netzwerk, da `autoconnect` gezielt deaktiviert werden kann.

---

## 2. Voraussetzungen
* Eine funktionierende WireGuard-Konfigurationsdatei (z. B. `wg0.conf`).
* Root- bzw. `sudo`-Rechte.
* Kubuntu (getestet ab 22.04 LTS / 24.04 LTS / 26.04 LTS mit Plasma-Desktop).

---

## 3. Schritt-für-Schritt Anleitung

### Schritt 1: Bestehende `wg-quick`-Verbindungen stoppen
Sollte die Schnittstelle aktuell über `wg-quick` aktiv sein, muss sie zuerst getrennt werden, damit NetworkManager das Interface `wg0` exklusiv verwalten kann:
```bash
sudo wg-quick down wg0
```

### Schritt 2: Konfiguration in NetworkManager importieren
Mit dem Befehl `nmcli connection import` wird die Standard-WireGuard-Datei in ein NetworkManager-Verbindungsprofil übersetzt:
```bash
sudo nmcli connection import type wireguard file /etc/wireguard/wg0.conf
```
*(Hinweis: Ersetzen Sie `/etc/wireguard/wg0.conf` durch den tatsächlichen Pfad Ihrer Datei).*

*Ausgabe bei Erfolg:*
```text
Connection 'wg0' (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) successfully added.
```

### Schritt 3: Automatisches Verbinden deaktivieren (Wichtig für Office/Homeoffice-Wechsler)
Standardmäßig versucht NetworkManager, neu importierte Verbindungen automatisch hochzufahren. Um Routing-Probleme im lokalen Firmennetzwerk (Office) zu vermeiden, wird der Autoconnect abgeschaltet:
```bash
sudo nmcli connection modify wg0 connection.autoconnect no
```

### Schritt 4: Nutzung & Testen
Die Konfiguration ist sofort aktiv und erfordert keinen Neustart:
1. Klicken Sie unten rechts im KDE-Panel auf das **Netzwerk-/WLAN-Icon**.
2. Unter der Sektion **WireGuard** bzw. **VPN** taucht nun der Eintrag `wg0` auf.
3. Klicken Sie auf **Verbinden**, um den Tunnel aufzubauen, bzw. auf **Trennen**, um ihn zu beenden.

---

## 4. Wichtige CLI-Befehle zur Wartung (Spickzettel)

| Aktion | Befehl |
| :--- | :--- |
| **Status aller Verbindungen anzeigen** | `nmcli connection show` |
| **Tunnel manuell per CLI starten** | `nmcli connection up wg0` |
| **Tunnel manuell per CLI stoppen** | `nmcli connection down wg0` |
| **Verbindungsprofil wieder löschen** | `sudo nmcli connection delete wg0` |
| **Prüfen, ob WireGuard-Handshake steht** | `sudo wg show` |

---

## 5. Technische Details (Unter der Haube)
* **Speicherort des Profils:** NetworkManager speichert die importierte Verbindung als Keyfile unter `/etc/NetworkManager/system-connections/wg0.nmconnection`.
* **Dateirechte:** Die generierte `.nmconnection`-Datei erhält automatisch die restriktiven Dateirechte `0600` (Besitzer: `root:root`), um den enthaltenen `private-key` vor unberechtigtem Auslesen durch andere Benutzer des Systems zu schützen.