OpenVPN wird komplett über Optionen gesteuert — es gibt keine eigene Konfigurationssprache. Ob Client, Server oder Diagnose: Alles läuft über das Kommando openvpn und eine Datei mit Optionen. Dieser Artikel ist die Befehlsreferenz; den Aufbau mit Kontroll- und Datenkanal erklärt der Artikel OpenVPN.
Client starten
openvpn --config client.ovpn
openvpn --config client.ovpn --daemon
openvpn --config client.ovpn --auth-user-pass --askpass
openvpn --config client.ovpn --log-append /var/log/openvpn-client.log --verb 3
Häufige Optionen in der Client-Datei: remote host 1194, proto udp, dev tun, nobind, persist-key, persist-tun, resolv-retry infinite, remote-cert-tls server, cipher AES-256-GCM, auth SHA256 sowie tls-crypt ta.key für den geschützten Kontrollkanal. Ein redirect-gateway def1 schickt den gesamten Verkehr durch den Tunnel; route-nopull verhindert, dass der Server Routen vorgibt.
Schlüssel und Zertifikate erzeugen
Für eine eigene Zertifizierungsstelle genügt easyrsa, das mit den meisten Paketen als easyrsa beiliegt:
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
./easyrsa gen-dh
openvpn --genkey secret ta.key
Der Aufruf gen-dh erzeugt die Diffie-Hellman-Parameter und dauert je nach Schlüssellänge Minuten. Wer ECDH verwendet, kommt ohne aus und setzt im Server dh none.
Server über die Kommandozeile
openvpn --mode server --tls-server --dev tun
--server 10.8.0.0 255.255.255.0 --topology subnet
--ca ca.crt --cert server.crt --key server.key --dh dh2048.pem
--push "redirect-gateway def1" --push "dhcp-option DNS 10.8.0.1"
--ifconfig-pool-persist ipp.txt --client-to-client --keepalive 10 60
Für den Dauerbetrieb nimmt man die systemd-Instanz, die eine Datei aus /etc/openvpn/server/ liest:
systemctl start Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
systemctl enable Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
systemctl status Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
journalctl -u openvpn-server@server -f
Status und Diagnose
openvpn --config server.conf --status /var/log/openvpn/status.log 60
grep CLIENT_LIST /var/log/openvpn/status.log
grep ROUTING_TABLE /var/log/openvpn/status.log
openvpn --show-ciphers # verfügbare Verschlüsselungsverfahren
openvpn --show-tls # unterstützte TLS-Versionen
openvpn --config server.conf --management 127.0.0.1 7505 --management-client
- Statusdatei: Mit
--status datei 60schreibt der Server jede Minute eine Übersicht mit Kennzahlen und den TabellenCLIENT_LIST(verbundene Clients, übertragene Bytes, zugewiesene Adresse) undROUTING_TABLE. Das ist die Grundlage jedes Monitorings, weil die Datei maschinenlesbar ist. - Verbindung steht, aber kein Verkehr: Weiterleitung einschalten (
net.ipv4.ip_forward=1) und die NAT-Regel für das Tunnelnetz prüfen. - TLS-Fehler: Fast immer ein Zeit- oder Namensproblem —
remote-cert-tls serverzusammen mitverify-x509-namebricht ab, wenn der Zertifikatsname nicht passt. - Detailsicht:
--verb 4bis--verb 6gibt die Aushandlung aus; höhere Stufen werden sehr gesprächig und gehören nicht in den Dauerbetrieb. - Durchsatz: Seit Version 2.6 läuft der Datenkanal mit Data Channel Offload im Kernel, sofern verfügbar — spürbar schneller als der klassische Userspace-Pfad.
Verwandte Artikel
Die Protokollmechanik erklärt OpenVPN; die Schicht-3-Alternative steht in den IPsec-Befehle, die schlanke Kernel-Lösung in den WireGuard-Befehle. Zertifikate und Prüfketten behandeln X.509, PKI, Zertifizierungsstelle und CRL, den TLS-Handshake TLS-Handshake und SSL/TLS. Einwahl über fremde Tunnelprotokolle zeigen L2TP-Befehle und SSTP-Befehle.