linux-ubuntu-debian vpn wireguard openvpn security remote-access

VPN Clients: OpenVPN & WireGuard (Artikel 016)

Vergleich und Konfiguration von VPN-Clients unter Linux. Deep-Dive in das moderne WireGuard-Protokoll und den bewährten OpenVPN-Standard für Enterprise-Verbindungen.

# VPN Clients: Sicherer Remote-Zugriff für Server & Admins

TL;DR / Management Summary Virtual Private Networks (VPNs) sind die Lebensader für die sichere Server-Wartung in hybriden Architekturen. Während OpenVPN der bewährte Standard mit massiven Konfigurationsmöglichkeiten ist, hat WireGuard die Szene durch extreme Geschwindigkeit, minimalistischen Code und native Kernel-Integration revolutioniert. Empfehlung: WireGuard für Site-to-Site und High-Performance Tunnel; OpenVPN für komplexe Auth-Szenarien (LDAP/MFA) oder wenn nur TCP/Port 443 erlaubt ist.


# 1. Einführung & Architektur

Wie Tunnel gegraben werden.

# OpenVPN (User-Space)

OpenVPN basiert auf SSL/TLS. Da es im User-Space läuft, muss jedes Paket zwischen Kernel und User-Space kopiert werden (Context Switches), was CPU-Overhead erzeugt.

# WireGuard (Kernel-Space)

WireGuard läuft direkt als Kernel-Modul. Es nutzt “Crypto Routing”, wobei öffentliche Schlüssel direkt an IP-Adressen gebunden sind. Es ist zustandslos (stateless) und verbraucht fast keinen Strom/CPU im Leerlauf.

graph LR
    subgraph "Local Server"
        A[App] --> B[Virtual Interface wg0/tun0]
    end
    B -->|Encrypted UDP/TCP| C[Internet]
    C -->|Encrypted| D[Remote Gateway]
    D -->|Decrypted| E[Internal Network]

# 2. WireGuard: Der moderne Champion

Einfachheit als Sicherheitsmerkmal.

# Installation & Key-Setup

sudo apt install wireguard
# Keys generieren
wg genkey | tee privatekey | wg pubkey > publickey

# Konfiguration (/etc/wireguard/wg0.conf)

[Interface]
PrivateKey = <Inhalt von privatekey>
Address = 10.0.0.2/24
DNS = 10.0.0.1

[Peer]
PublicKey = <Server PublicKey>
Endpoint = vpn.company.com:51820
AllowedIPs = 10.0.0.0/24, 172.16.0.0/16
PersistentKeepalive = 25

# Management

# Tunnel starten
sudo wg-quick up wg0
# Status prüfen
sudo wg show

# 3. OpenVPN: Das Enterprise-Urgestein

Vielseitigkeit für jede Firewall.

# Installation

sudo apt install openvpn

# Konfiguration (/etc/openvpn/client/office.conf)

Normalerweise erhält man eine .ovpn Datei. Diese kopiert man nach /etc/openvpn/client/ (umbenannt zu .conf).

client
dev tun
proto udp
remote vpn.company.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
cipher AES-256-GCM
verb 3

# Management

# Starten via Systemd
sudo systemctl enable --now openvpn-client@office

# 4. Day-2 Operations: Routing & DNS

Die VPN-Fallen vermeiden.

# Split-Tunneling

Vermeiden Sie es, den gesamten Traffic (“Default Gateway”) durch das VPN zu jagen, wenn nur interne Ressourcen gebraucht werden.

  • WireGuard: Steuerung via AllowedIPs.
  • OpenVPN: In der Config route-nopull setzen und Routen manuell hinzufügen (route 10.0.0.0 255.255.255.0).

# DNS-Leaks verhindern

Stellen Sie sicher, dass interne Domains via VPN-DNS aufgelöst werden (siehe Artikel 009: systemd-resolved).


# 5. Troubleshooting & “War Stories”

Wenn der Tunnel einbricht.

# Story 1: “Der MTU-Albtraum”

Symptom: SSH geht, aber ls -l oder große Webseiten hängen im VPN. Ursache: VPN-Header fressen Platz. Ein Standard-Ethernet Paket (1500 Bytes) passt plus VPN-Header nicht mehr durch die Leitung (Fragmentation). Lösung: MTU senken.

  • WireGuard: MTU = 1280 in der [Interface] Sektion.
  • OpenVPN: mssfix 1200 hinzufügen.

# Story 2: “UDP-Blocking in Hotels”

Symptom: VPN verbindet sich nicht in öffentlichen WLANs. Ursache: Hotels blockieren oft alles außer TCP 80/443. WireGuard nutzt nur UDP. Lösung: Nutzen Sie OpenVPN im TCP-Modus auf Port 443 als Fallback. WireGuard kann mit Tools wie udp2raw getunnelt werden (komplex!).


# 6. Fazit & Empfehlung

  • Server-to-Server: WireGuard. Immer.
  • Admins / Roadwarrior: WireGuard (wenn möglich), sonst OpenVPN.
  • Sicherheit: WireGuard hat eine viel kleinere Angriffsfläche (4.000 Zeilen Code vs. 100.000+ bei OpenVPN).

# Anhang: Cheatsheet

Aufgabe WireGuard OpenVPN
Status prüfen wg show systemctl status openvpn-client@*
Logs journalctl -f /var/log/openvpn.log
Performance ~95% Line-Rate ~20-40% Line-Rate
Port (Standard) 51820 (UDP) 1194 (UDP)