Files
WikiJS/IT_Abteilung/Wireguard.md

187 lines
8.2 KiB
Markdown

---
title: Wireguard VPN Profice Dokumentation
description:
published: true
date: 2026-02-23T09:19:08.176Z
tags:
editor: markdown
dateCreated: 2026-02-23T09:18:36.441Z
---
# 🛡️ WireGuard VPN Dokumentation: Zentraler Sicherheits-Gateway
Diese Dokumentation beschreibt die Installation und Verwaltung des WireGuard VPN-Servers, der als exklusiver Zugangspunkt für unsere internen Dienste fungiert. Aktuell sichert dieser den Zugriff auf **wiki.profice.de** und **n8n.profice.de**.
---
## 1. Funktionsprinzip und Architektur
WireGuard agiert als "Türsteher" für unser Netzwerk. Anstatt Dienste direkt dem öffentlichen Internet auszusetzen, lauscht der WireGuard-Container auf einem einzelnen UDP-Port. Nur Geräte mit einem gültigen kryptografischen Schlüssel können einen Tunnel aufbauen.
* **Modus:** Docker-basiertes Deployment.
* **Zweck:** Verschlüsselter Zugriff auf das interne Docker-Netzwerk und IP-Whitelisting für Traefik.
* **Abgedeckte Domains:** * `wiki.profice.de`
* `n8n.profice.de`
---
## 2. Installation (Docker Compose)
Wir nutzen das bewährte Image von **linuxserver/wireguard**, da es eine einfache Verwaltung von Peers (Clients) über Umgebungsvariablen ermöglicht.
### 2.1 Docker Compose Konfiguration
Die Datei befindet sich auf dem Server unter `/opt/wireguard/docker-compose.yml`.
```yaml
version: "3.8"
services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
- SERVERURL=vpn.profice.de # Deine öffentliche IP oder DynDNS
- SERVERPORT=51820
- PEERS=AdminHandy,AdminLaptop,Mitarbeiter1 # Namen der Endgeräte
- PEERDNS=1.1.1.1 # Optionaler DNS
- INTERNAL_SUBNET=10.13.13.0
- ALLOWEDIPS=0.0.0.0/0 # Oder spezifische interne IPs
volumes:
- /opt/wireguard/config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: always
```
## 3. Geräte-Verbindung (Client Setup)
Sobald der Container gestartet ist, erstellt WireGuard automatisch die notwendigen Konfigurationsprofile für alle in der `PEERS`-Variable definierten Endgeräte.
### 3.1 Smartphone (iOS / Android)
Die einfachste Methode für mobile Geräte ist die Verwendung des QR-Codes.
1. Installieren Sie die **WireGuard App** aus dem offiziellen App Store oder Google Play Store.
2. Öffnen Sie ein Terminal auf dem Server und lassen Sie sich den QR-Code anzeigen:
```bash
docker logs -f wireguard
### 3.1 Mobile Verbindung (Smartphone/Tablet)
Die einfachste Methode für mobile Geräte ist die Verwendung des QR-Codes.
1. **App installieren:** Installieren Sie die offizielle **WireGuard App** aus dem Google Play Store oder Apple App Store.
2. **QR-Code anzeigen:** Öffnen Sie ein Terminal auf dem Server und lassen Sie sich den Code in den Logs anzeigen:
```bash
docker logs wireguard
```
3. **Hinzufügen:** Wählen Sie in der App das **"+" Icon** -> **Scan from QR code**.
4. **Verbindung:** Scannen Sie den Code für Ihren Peer (z. B. `peer_AdminHandy`) und aktivieren Sie den Tunnel.
---
### 3.2 Desktop-Verbindung (Windows / macOS / Linux)
Für Desktop-Rechner verwenden wir die Konfigurationsdateien (`.conf`).
1. **Konfiguration finden:** Navigieren Sie auf dem Server in den Ordner des jeweiligen Peers:
```bash
cd /opt/wireguard/config/peer_<NAME>/
```
2. **Download:** Kopieren Sie die Datei `peer_<NAME>.conf` sicher auf Ihren Computer (z. B. via SCP oder SFTP).
3. **Import:** * Installieren Sie den Client von [wireguard.com](https://www.wireguard.com).
* Wählen Sie **Tunnel aus Datei importieren** und wählen Sie die `.conf`-Datei aus.
4. **Aktivieren:** Klicken Sie auf **Aktivieren**, um die gesicherte Verbindung herzustellen.
---
## 4. Integration mit Traefik & Domain-Schutz
Der Schutz der Domains `wiki.profice.de` und `n8n.profice.de` erfolgt durch eine Kombination aus verschlüsseltem Tunnel und **IP-Whitelisting** auf Proxy-Ebene.
### 4.1 IP-Whitelisting in Traefik
Damit nur VPN-Nutzer auf die Weboberflächen zugreifen können, wird eine Middleware definiert. Diese lässt ausschließlich Traffic aus dem WireGuard-Subnetz zu.
**Beispiel für die Traefik-Konfiguration (Dynamic File Config):**
```yaml
http:
middlewares:
vpn-only-access:
ipWhiteList:
sourceRange:
- "10.13.13.0/24" # Das interne WireGuard-Subnetz
- "172.18.0.0/16" # Optional: Das interne Docker-Netzwerk
```
### 4.2 Zuweisung zu den Diensten
Damit die Sicherheits-Middleware aktiv wird, muss sie in den Docker-Labels der jeweiligen Dienste (**n8n** und **Wiki.js**) hinterlegt werden. Dies teilt Traefik mit, dass jede Anfrage an diese Domains zuerst die IP-Whitelist-Prüfung bestehen muss.
Fügen Sie folgende Zeilen zu den entsprechenden Containern in Ihrer `docker-compose.yml` hinzu:
**Für n8n:**
```yaml
labels:
- "traefik.http.routers.n8n.middlewares=vpn-only-access@file"
```
**Für Wiki.js:**
```yaml
labels:
- "traefik.http.routers.wiki.middlewares=vpn-only-access@file"
```
## 5. Verwaltung neuer Benutzer (Peers)
Die Verwaltung von Benutzern und Geräten erfolgt zentral über die Konfiguration des WireGuard-Docker-Containers. Der Prozess ist hochgradig automatisiert:
### 5.1 Einen neuen Peer hinzufügen
Um einen neuen Mitarbeiter oder ein weiteres Gerät (z. B. ein Tablet) hinzuzufügen, gehen Sie wie folgt vor:
1. **Konfigurationsdatei öffnen:** Öffnen Sie die `docker-compose.yml` im WireGuard-Installationsverzeichnis (meist `/opt/wireguard/`).
2. **Peer-Liste erweitern:** Suchen Sie unter `environment:` die Variable `PEERS=`. Fügen Sie den neuen Namen durch ein Komma getrennt hinzu.
* *Wichtig:* Keine Leerzeichen verwenden und nur alphanumerische Zeichen nutzen.
* *Beispiel:* `PEERS=AdminPC,ChefHandy,Mitarbeiter_A`
3. **Änderungen anwenden:** Starten Sie den Stack neu. WireGuard erkennt die Änderung und generiert im Hintergrund automatisch neue Schlüsselpaare und Konfigurationsdateien:
```bash
docker-compose up -d
```
### 5.2 Zugriff auf die Zugangsdaten
Nach dem Neustart erstellt der Container für jeden Peer einen eigenen Unterordner. Diese finden Sie auf dem Host-Server unter:
` /opt/wireguard/config/peer_<Name>/`
In diesem Ordner befinden sich:
* **peer_<Name>.conf:** Die Konfigurationsdatei für Desktop-Clients.
* **peer_<Name>.png:** Der QR-Code für die schnelle Einrichtung auf mobilen Endgeräten.
---
## 6. Fehlerbehebung (Troubleshooting)
Falls Probleme bei der Verbindung oder beim Zugriff auf die geschützten Domains auftreten, nutzen Sie bitte die folgende Tabelle zur Diagnose:
| Problem | Mögliche Ursache | Lösung |
| :--- | :--- | :--- |
| **Kein Handshake möglich** | Der UDP-Port 51820 ist durch eine Firewall blockiert. | Stellen Sie sicher, dass Port **51820/UDP** am Router und in der Server-Firewall (z.B. UFW) für externe Anfragen geöffnet ist. |
| **VPN steht, aber kein Internet** | Das IP-Forwarding am Host-System ist deaktiviert. | Prüfen Sie dies mit `sysctl net.ipv4.ip_forward`. Der Wert muss auf `1` stehen. Aktivieren Sie es ggf. in der `/etc/sysctl.conf`. |
| **Domains nicht auflösbar** | Die DNS-Konfiguration im VPN-Profil ist inkorrekt. | Prüfen Sie die `PEERDNS`-Einstellung in der Docker-Konfiguration. Empfohlen ist ein stabiler DNS wie `1.1.1.1` oder der interne DNS des Netzwerks. |
| **Traefik meldet "403 Forbidden"** | Die IP-Adresse des VPN-Clients ist nicht in der Whitelist der Traefik-Middleware. | Kontrollieren Sie die Traefik-Konfiguration. Das Subnetz des VPNs (z. B. `10.13.13.0/24`) muss explizit in der `ipWhiteList`-Middleware erlaubt sein. |
| **Verbindung bricht häufig ab** | Instabile Internetverbindung oder MTU-Probleme. | Testen Sie eine geringere MTU-Größe in der Client-Konfiguration (z. B. `MTU = 1280`). |
---
## 7. Sicherheitsrevisions-Log
Sämtliche Änderungen an der Peer-Liste oder den Firewall-Regeln müssen im Git-Repository des Infrastruktur-Teams dokumentiert werden, um die Nachvollziehbarkeit des Zugriffsmanagements zu gewährleisten.
---
**Dokumentationsstatus:** Aktiv ✅
**Abteilung:** IT-Security / DevOps
**Verantwortlich:** Systemadministrator
**Letzte Aktualisierung:** 23.02.2026