VPN on RHEL: IPsec, WireGuard & OpenVPN (Artikel 084)
Integration von VPN-Clients in den RHEL NetworkManager. Erfahren Sie, wie Sie sichere Tunnel via IPsec (Libreswan), WireGuard und OpenVPN direkt über nmcli verwalten.
# VPN on RHEL: Professionelle Tunnel-Integration
TL;DR / Management Summary Während man unter Debian oft mit Standalone-Dämons arbeitet, integriert RHEL VPNs direkt in den NetworkManager. Dies ermöglicht ein nahtloses Umschalten von Profilen und eine einheitliche DNS-Verwaltung. Wir nutzen Libreswan für IPsec (Enterprise-Standard), das native Kernel-Modul für WireGuard und spezialisierte Plugins für OpenVPN. Das Ziel: Ein “Always-on” VPN, das sich automatisch verbindet, sobald das Netzwerk bereit ist.
# 1. Einführung & Architektur
Das VPN als Interface-Eigenschaft.
Im NetworkManager ist ein VPN kein Dienst, sondern eine Connection vom Typ vpn.
# Der VPN-Stack in RHEL (Mermaid)
graph LR
A[Admin: nmcli] --> B[NetworkManager]
B --> C{VPN Plugin}
C -->|IPsec| D[Libreswan / xl2tpd]
C -->|OpenVPN| E[NetworkManager-openvpn]
C -->|WireGuard| F[Kernel Module]
D/E/F --> G[Virtual Interface: tun0 / wg0]
# 2. IPsec mit Libreswan
Der Klassiker für Site-to-Site und Client-to-Site.
RHEL nutzt Libreswan als Standard-Implementierung für IPsec.
# Pakete installieren
sudo dnf install libreswan NetworkManager-libreswan
# Verbindung hinzufügen
sudo nmcli con add type vpn vpn-type libreswan con-name "Company-IPsec" \
ifname "*" vpn.data "address=vpn.company.com, psk=SECRET_KEY, user=admin"
# 3. WireGuard: Modern und schnell
Direkt im Kernel.
WireGuard ist ab RHEL 9 nativ im Kernel enthalten.
# Verbindung erstellen (nmcli)
# 1. WireGuard Interface anlegen
sudo nmcli con add type wireguard con-name "WG-Office" ifname wg0 autoconnect yes
# 2. Private Key und IP setzen
sudo nmcli con mod "WG-Office" \
wireguard.private-key "YOUR_PRIVATE_KEY" \
ipv4.addresses 10.0.0.2/24 \
ipv4.method manual
# 3. Peer (Server) hinzufügen
sudo nmcli con mod "WG-Office" \
+wireguard.peers "public-key=SERVER_PUB_KEY,endpoint=vpn.company.com:51820,allowed-ips=10.0.0.0/24"
# 4. Day-2 Operations: Automatisierung & DNS
Der Tunnel im Alltag.
# Automatisches Verbinden
Stellen Sie sicher, dass das VPN startet, sobald das Ethernet-Interface up ist (VPN-Chaining).
sudo nmcli con mod "Internal-Ethernet" connection.secondaries "WG-Office"
# DNS-Priorität
Oft sollen interne Namen nur via VPN aufgelöst werden.
sudo nmcli con mod "WG-Office" ipv4.dns-priority -1
Ein negativer Wert in RHEL bedeutet höhere Priorität für dieses Interface.
# 5. Troubleshooting & “War Stories”
Wenn die Pakete im Tunnel stecken bleiben.
# Story 1: “Der MTU-Effekt bei IPsec”
Symptom: Ping funktioniert, aber HTTPS-Seiten oder dnf update hängen im VPN.
Ursache: IPsec-Header vergrößern das Paket. Wenn das Netz kein PMTU (Path MTU Discovery) kann, werden Pakete lautlos verworfen.
Lösung: MTU manuell senken:
sudo nmcli con mod "Company-IPsec" vpn.data "mtu=1280".
# Story 2: “SELinux blockiert Key-Files”
Symptom: nmcli con up schlägt fehl mit einer vagen Fehlermeldung. In /var/log/messages steht etwas von “Permission Denied” für /etc/pki/... **Ursache**: Die Zertifikate oder Keys haben nicht das korrekte SELinux-Label für den NetworkManager. **Lösung**: restorecon -Rv /etc/pkiund sicherstellen, dass die Files für den Userroot` lesbar sind.
# 6. Fazit & Empfehlung
- RHEL 9: Nutzen Sie WireGuard für Performance und IPsec (Libreswan) für Kompatibilität mit Cisco/Juniper/Sophos Gateways.
- Plugins: Installieren Sie immer die passenden
NetworkManager-*Plugins, anstatt die Daemons (openvpn,strongswan) manuell zu konfigurieren. - CLI: Nutzen Sie
nmcli monitor, um live zu sehen, wie der NetworkManager den Tunnel aufbaut.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| VPN Plugins suchen | dnf search NetworkManager- |
| Verbindung starten | nmcli con up <name> |
| Verbindung stoppen | nmcli con down <name> |
| VPN Logs (RHEL) | journalctl -u NetworkManager -f |
| IPsec Status | ipsec status |
| WireGuard Status | wg show |
| Secrets anzeigen | nmcli --show-secrets con show <name> |