VPN Setup-Guide

WireGuard VPN für KMU

Sicherer Remote-Zugang für dein Team – ohne teure Lizenzkosten. Von der Serverinstallation bis zur Client-Konfiguration: WireGuard in 30–60 Minuten produktionsreif. DSGVO-konform auf Hetzner VPS.

E
Emre Hayta
· · 8 Min. Lesezeit · Schwierigkeit: Mittel · Zielgruppe: KMU-IT
WireGuard VPN Hetzner Ubuntu DSGVO Remote-Zugang KMU Österreich
Inhaltsverzeichnis

Viele KMUs zahlen Jahr für Jahr Tausende Euro für VPN-Lösungen von Cisco, Fortinet oder Palo Alto – Lizenzen, die teuer und oft überdimensioniert sind. Dabei gibt es seit Jahren eine quelloffene Alternative, die technisch überlegen, kostenlos und in unter einer Stunde einsatzbereit ist: WireGuard.

WireGuard ist ein modernes VPN-Protokoll, das direkt im Linux-Kernel läuft. Im Vergleich zu OpenVPN ist es deutlich schneller, einfacher zu konfigurieren und schlanker im Code – was die Angriffsfläche massiv reduziert. Für ein Team von 5–20 Personen reicht ein kleiner Hetzner-VPS (ab 4,55 €/Monat) vollkommen aus.

Die Ersparnis gegenüber kommerziellen VPN-Lösungen: Bis zu 3.000 € pro Jahr – bei verbesserter Sicherheit und DSGVO-konformer Datenhaltung in der EU.

1. Warum WireGuard statt klassischer VPN-Lösungen?

Der Vergleich fällt eindeutig aus:

Kriterium OpenVPN WireGuard
Codezeilen ~600.000 (OpenSSL) ~4.000
Performance Langsam, CPU-intensiv Bis 3× schneller
Verbindungsaufbau Sekunden bis Minuten < 100 ms
Konfiguration Komplex, viele Optionen Minimal, klar
Kernel-Integration Userspace Linux-Kernel ab 5.6
Kosten Kostenlos (aber Komplexität) Kostenlos

Gegenüber kommerziellen Lösungen (Cisco AnyConnect, Fortinet SSL-VPN) kommen noch folgende Argumente hinzu:

  • Keine Lizenzkosten: WireGuard ist Open Source unter der GPLv2-Lizenz
  • Peer-reviewed: Der Code wurde formal auditiert und verifiziert – weniger als 5.000 Zeilen bedeuten deutlich kleinere Angriffsfläche
  • DSGVO-konform: Server in EU (Hetzner Nürnberg/Helsinki), Daten verlassen nie externe Infrastruktur
  • Schnelles Reconnect: Ideal für Mobilgeräte, die zwischen WLAN und Mobilfunk wechseln
Praxishinweis: WireGuard ist inzwischen im Linux-Kernel integriert (ab 5.6, also Ubuntu 20.04+). Kein Kernel-Modul kompilieren, kein DKMS – einfach installieren und loslegen.

2. Voraussetzungen

Für diesen Guide benötigst du:

  • VPS: Hetzner Cloud CPX11 (2 vCPU, 2 GB RAM) reicht vollständig aus – ab 4,55 €/Monat
  • Betriebssystem: Ubuntu 22.04 LTS (empfohlen)
  • Domain oder feste IP: Entweder eine Subdomain (z.B. vpn.firma.at) oder die direkte Server-IP
  • Root- oder sudo-Zugriff auf den Server
  • Grundkenntnisse SSH: Befehle ausführen, Dateien editieren
Tipp: Hetzner bietet EU-Server in Nürnberg, Falkenstein und Helsinki – alle DSGVO-konform. Für österreichische KMUs ist Nürnberg oder Wien (via Partner) empfehlenswert.

3. Server-Setup (Ubuntu)

Installation und Keys generieren

Verbinde dich per SSH mit deinem Server und führe folgende Befehle aus:

Bash
# System updaten
apt update && apt upgrade -y

# WireGuard installieren
apt install wireguard -y

# Keys generieren
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key

# Schlüssel anzeigen (für die Konfiguration merken)
echo "Private Key: $(cat /etc/wireguard/server_private.key)"
echo "Public Key:  $(cat /etc/wireguard/server_public.key)"

# IP-Forwarding aktivieren (Pakete weiterleiten)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

WireGuard-Konfiguration erstellen

Erstelle die Konfigurationsdatei /etc/wireguard/wg0.conf. Ersetze <SERVER_PRIVATE_KEY> mit dem Inhalt von /etc/wireguard/server_private.key:

INI
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

# NAT: Pakete vom VPN ins Internet weiterleiten
# Passe "eth0" an dein Netzwerkinterface an (prüfen mit: ip route)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# Mitarbeiter 1 – Maria
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.0.0.2/32
Wichtig: Das Netzwerkinterface eth0 kann bei Hetzner auch ens3 oder enp1s0 heißen. Prüfe es mit: ip route | grep default

Firewall konfigurieren und starten

Bash
# WireGuard-Port in UFW freigeben
ufw allow 51820/udp

# WireGuard beim Systemstart aktivieren und sofort starten
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0

# Status prüfen
systemctl status wg-quick@wg0
wg show

Der Befehl wg show sollte jetzt das Interface wg0 mit der IP 10.0.0.1 anzeigen.

Brauchst du Unterstützung bei der Umsetzung?

30-Min Call — kostenlos, unverbindlich, konkret.

Termin buchen →

4. Client-Konfiguration (Windows, macOS, iOS/Android)

Client-Keys generieren

Für jeden Mitarbeiter wird ein eigenes Schlüsselpaar erstellt – entweder direkt am Server oder auf dem Client-Gerät:

Bash
# Client-Keys generieren (z.B. für "maria")
wg genkey | tee maria_private.key | wg pubkey > maria_public.key

echo "Client Private Key: $(cat maria_private.key)"
echo "Client Public Key:  $(cat maria_public.key)"

Client-Konfigurationsdatei

Erstelle eine .conf-Datei für den Mitarbeiter. Diese wird in die WireGuard-App importiert:

INI
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = 10.0.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER-IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Erklärung der wichtigsten Parameter:

  • Address = 10.0.0.2/32 – Jeder Client bekommt eine eigene VPN-IP (10.0.0.2, 10.0.0.3, …)
  • AllowedIPs = 0.0.0.0/0 – Gesamter Traffic läuft durch das VPN (Full Tunnel)
  • PersistentKeepalive = 25 – Hält die Verbindung hinter NAT aufrecht (wichtig für mobile Geräte)

Apps für Windows, macOS, iOS und Android

  • Windows/macOS: WireGuard-App herunterladen → "Import tunnel(s) from file" → .conf-Datei importieren → Verbinden
  • iOS/Android: WireGuard-App aus dem App Store/Play Store → QR-Code scannen (einfachste Methode)

QR-Code für Mobilgeräte

Bash
# qrencode installieren
apt install qrencode -y

# QR-Code aus der Client-Config erzeugen (im Terminal anzeigen)
qrencode -t ansiutf8 < maria.conf

# Oder als PNG-Datei speichern
qrencode -o maria-qr.png < maria.conf

Den QR-Code kurz anzeigen, Mitarbeiter damit scannen lassen, danach sofort löschen. So müssen keine sensiblen Konfigurationsdateien per E-Mail versendet werden.

5. Nutzer verwalten

Neuen Peer hinzufügen

Für jeden neuen Mitarbeiter wiederhole den Prozess: Keys generieren, Client-Config erstellen, Peer-Block in der Serverkonfiguration ergänzen:

Bash
# 1. Keys für neuen Mitarbeiter "thomas" generieren
wg genkey | tee thomas_private.key | wg pubkey > thomas_public.key

# 2. Peer live hinzufügen (ohne Neustart!)
wg set wg0 peer $(cat thomas_public.key) allowed-ips 10.0.0.3/32

# 3. Peer auch in wg0.conf eintragen (für Persistenz nach Reboot)
cat >> /etc/wireguard/wg0.conf << EOF

[Peer]
# Mitarbeiter 2 – Thomas
PublicKey = $(cat thomas_public.key)
AllowedIPs = 10.0.0.3/32
EOF

Peer entfernen (Mitarbeiter austritt)

Bash
# Peer sofort deaktivieren (ohne Neustart)
wg set wg0 peer <CLIENT_PUBLIC_KEY> remove

# Peer-Block auch aus wg0.conf löschen (mit nano oder sed)
nano /etc/wireguard/wg0.conf

Aktive Verbindungen anzeigen

Bash
# Übersicht aller Peers und deren Verbindungsstatus
wg show

# Beispiel-Output:
# interface: wg0
#   public key: aBcD...
#   listening port: 51820
#
# peer: xYzW...
#   endpoint: 88.99.100.101:54321
#   allowed ips: 10.0.0.2/32
#   latest handshake: 23 seconds ago
#   transfer: 1.44 MiB received, 8.23 MiB sent

6. Troubleshooting

Die häufigsten Probleme und ihre Lösung:

Verbindung schlägt fehl

Bash
# Firewall-Status prüfen – Port 51820/udp muss erlaubt sein
ufw status

# WireGuard-Status prüfen
systemctl status wg-quick@wg0

# Logs in Echtzeit anzeigen
journalctl -u wg-quick@wg0 -f

Kein Internet durch VPN

Bash
# IP-Forwarding muss aktiviert sein
sysctl net.ipv4.ip_forward
# Erwarteter Wert: net.ipv4.ip_forward = 1

# Falls 0: sofort aktivieren
sysctl -w net.ipv4.ip_forward=1

# Netzwerkinterface prüfen (für PostUp/PostDown in wg0.conf)
ip route | grep default
# Beispiel: default via 10.0.0.1 dev eth0
# → "eth0" ist das Interface, das in PostUp/PostDown stehen muss

Langsame Verbindung

Bash
# MTU auf 1420 setzen (verhindert Fragmentierung)
# In der Client-Config unter [Interface] ergänzen:
# MTU = 1420

# Oder direkt am Interface testen:
ip link set mtu 1420 dev wg0

Schnell-Diagnose

  • Handshake in wg show fehlt → Client-Config prüfen (Public Key des Servers korrekt?)
  • Handshake vorhanden, aber kein Traffic → PostUp/PostDown und IP-Forwarding prüfen
  • Verbindung bricht nach Netzwechsel ab → PersistentKeepalive = 25 in Client-Config setzen
  • Port nicht erreichbar → ufw allow 51820/udp und Hetzner Firewall (Cloud Console) prüfen

7. Bonus: wg-easy — WireGuard mit Web-Interface

Den manuellen Setup aus Abschnitt 3–5 kann man komplett durch wg-easy ersetzen — ein Docker-Container, der WireGuard mit einem übersichtlichen Web-UI verpackt. Keine CLI mehr für neue Clients, kein manuelles Editieren von wg0.conf — alles läuft über den Browser.

Was ist wg-easy?

  • Docker-Container mit Web-UI für WireGuard
  • Clients per Browser hinzufügen/entfernen, QR-Codes direkt generieren
  • Traffic-Statistiken, aktive Verbindungen auf einen Blick
  • Ideal für KMUs ohne dediziertes IT-Team
  • Open Source: github.com/wg-easy/wg-easy

Voraussetzungen

  • Docker muss auf dem Server installiert sein (folgt aus Abschnitt 3 — apt install docker.io docker-compose-plugin -y)
  • Zusätzlich zu Port 51820/udp auch Port 51821/tcp in der Firewall öffnen
Bash
ufw allow 51821/tcp

Passwort-Hash generieren

wg-easy verwendet einen Bcrypt-Hash statt eines Klartext-Passworts. Hash generieren:

Bash
docker run --rm ghcr.io/wg-easy/wg-easy wgpw 'DEIN_PASSWORT'

Den ausgegebenen Hash ($2b$12$...) für die nächste Konfiguration bereithalten.

Installation via Docker Compose

YAML
# /opt/wg-easy/docker-compose.yml
version: '3.8'
services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy
    container_name: wg-easy
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    volumes:
      - /opt/wg-easy/data:/etc/wireguard
    environment:
      - WG_HOST=<DEINE-SERVER-IP>
      - PASSWORD_HASH=<BCRYPT-HASH>
      - WG_DEFAULT_ADDRESS=10.8.0.x
      - WG_DEFAULT_DNS=1.1.1.1
      - WG_ALLOWED_IPS=0.0.0.0/0
      - UI_TRAFFIC_STATS=true

Container starten

Bash
mkdir -p /opt/wg-easy/data
cd /opt/wg-easy
docker compose up -d

Das Web-UI ist danach unter http://<SERVER-IP>:51821 erreichbar. Nach der Anmeldung können neue Clients per Klick erstellt, QR-Codes generiert und Verbindungen in Echtzeit überwacht werden.

Hinweis: wg-easy ersetzt den manuellen WireGuard-Setup aus Abschnitt 3–5. Wer wg-easy verwendet, braucht wg0.conf nicht manuell anlegen — das übernimmt der Container.
⚠️ Sicherheitshinweis: Port 51821 sollte nicht direkt öffentlich exponiert werden. Empfehlung: nginx Reverse Proxy mit HTTPS (Let's Encrypt) vorschalten und das Web-UI nur über eine gesicherte Domain erreichbar machen. Alternativ: Zugriff auf das UI per IP-Whitelist oder VPN-internen Zugriff beschränken.

8. Fazit & nächste Schritte

WireGuard ist die modernste, schlankste und günstigste VPN-Lösung für KMUs. Im Vergleich zu teuren kommerziellen Lösungen bietet es:

  • Keine Lizenzkosten – nur die VPS-Kosten (ab 4,55 €/Monat)
  • Top-Performance – bis 3× schneller als OpenVPN
  • Minimale Angriffsfläche – ~4.000 Zeilen Code, peer-reviewed
  • DSGVO-konform – Server in der EU, volle Datenkontrolle
  • Einfache Verwaltung – Peers in Sekunden hinzufügen oder entfernen

Für ein 10-köpfiges Team mit bisheriger Cisco-Lizenz (ca. 3.000 €/Jahr) amortisiert sich das Setup am ersten Tag. Der Hetzner-VPS läuft für 55 €/Jahr – der Rest bleibt im Unternehmen.

Nächste Schritte: Für erweiterte Setups empfiehlt sich ein Split-Tunnel (nur Firmen-Traffic durch VPN), Monitoring via wg show + Prometheus, oder ein Management-Interface wie wg-easy für eine Web-Oberfläche.

WireGuard professionell einrichten lassen?

Du möchtest WireGuard für deinen Betrieb nutzen, aber das Setup soll professionell, sicher und wartbar sein? TECHZ übernimmt das vollständige Setup für dich – inkl. Firewall-Konfiguration, Client-Onboarding und Dokumentation.

Weitere Artikel