OpenVPN ist eine leistungsstarke Open-Source-VPN-Lösung, die sichere Punkt-zu-Punkt- sowie Standort-zu-Standort-Verbindungen ermöglicht. Die Software nutzt verschlüsselte Tunnel auf Basis von TLS (Transport Layer Security), um Daten sicher über unsichere Netzwerke wie das Internet zu übertragen. Mit modernen Verschlüsselungsalgorithmen wie AES-256 schützt OpenVPN zuverlässig vor Abhörversuchen und Man-in-the-Middle-Angriffen.
Diese Anleitung zeigt Schritt für Schritt, wie OpenVPN auf Ubuntu 24.04 installiert und konfiguriert wird, um eine vollständig verschlüsselte Verbindung zwischen Server und Client aufzubauen.
Voraussetzungen
Bevor Sie starten, stellen Sie sicher, dass Sie Folgendes haben:
- Einen Ubuntu-24.04-Server sowie einen Benutzer ohne Root-Rechte, der jedoch Befehle mit sudo ausführen kann.
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
OpenVPN installieren
OpenVPN kann direkt aus den offiziellen Ubuntu-Paketquellen installiert werden. Folgen Sie den Schritten, um die Paketliste zu aktualisieren und das VPN-Paket zu installieren.
APT-Paketindex aktualisieren
$ sudo apt updateOpenVPN installieren
$ sudo apt install openvpn -yInstallierte Version prüfen
$ openvpn --versionDie Ausgabe könnte wie folgt aussehen:
OpenVPN 2.6.12 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO]
library versions: OpenSSL 3.0.13 30 Jan 2024, LZO 2.10
DCO version: N/A
Originally developed by James Yonan
.................................................................
OpenVPN 2.6.12 ist laut Ausgabe erfolgreich installiert.
Server-Schlüssel, Zertifikat und TLS-Dateien erstellen
Für den OpenVPN-Server werden ein Zertifikat, ein privater Schlüssel sowie zusätzliche Verschlüsselungsdateien benötigt. Easy-RSA ist ein Werkzeug, mit dem Sie eine eigene Zertifizierungsstelle (CA) aufbauen und Zertifikate für den VPN-Server erzeugen können. Im Folgenden wird erklärt, wie Sie Easy-RSA installieren, die PKI-Struktur anlegen, eine CA erstellen und die benötigten Zertifikate generieren.
Easy-RSA installieren
$ sudo apt install easy-rsa -yZum Home-Verzeichnis wechseln
$ cdeasy-rsa-Verzeichnis anlegen
$ mkdir easy-rsaEasy-RSA-Dateien verlinken
$ ln -s /usr/share/easy-rsa/* easy-rsa/easy-rsa-Inhalt anzeigen
$ ls easy-rsaAusgabe:
easyrsa openssl-easyrsa.cnf vars.example x509-types
In das easy-rsa-Verzeichnis wechseln
$ cd easy-rsavars-Datei erstellen
$ nano varsCA-Informationen eintragen
set_var EASYRSA_REQ_COUNTRY "Germany"
set_var EASYRSA_REQ_PROVINCE "Bavaria"
set_var EASYRSA_REQ_CITY "Bamberg"
set_var EASYRSA_REQ_ORG "Docs"
set_var EASYRSA_REQ_EMAIL "linuxuser@example.de"
set_var EASYRSA_REQ_OU "Community"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "ta222"Die oben genannten Werte legen die organisatorischen CA-Daten fest.
PKI initialisieren
$ ./easyrsa init-pkiAusgabe:
Notice
------
'init-pki' complete; you may now create a CA or requests.
Your newly created PKI dir is:
* /home/linuxuser/easy-rsa/pki
Using Easy-RSA configuration:
* /home/linuxuser/easy-rsa/vars
CA erzeugen
$ ./easyrsa build-caGeben Sie ein sicheres Passwort ein und wählen Sie als Common Name beispielsweise OpenVPN-CA.
Notice
------
CA creation complete. Your new CA certificate is at:
* /home/linuxuser/easy-rsa/pki/ca.crt
Server-Zertifikatsanfrage erstellen
$ ./easyrsa gen-req vpnserver nopassAusgabe:
Notice
------
Private-Key and Public-Certificate-Request files created.
Your files are:
* req: /home/linuxuser/easy-rsa/pki/reqs/vpnserver.req
* key: /home/linuxuser/easy-rsa/pki/private/vpnserver.key
Zertifikatsanfrage signieren
$ ./easyrsa sign-req server vpnserverBestätigen Sie mit yes und geben Sie das CA-Passwort ein.
Notice
------
Certificate created at:
* /home/linuxuser/easy-rsa/pki/issued/vpnserver.crt
Serverzertifikat prüfen
$ ls pki/issuedAusgabe:
vpnserver.crt
HMAC-Schlüssel (TLS-Auth) erzeugen
$ sudo openvpn --genkey secret ta.key$ lsAusgabe:
df.pem easyrsa openssl-easyrsa.cnf pki ta.key vars vars.example x509-types
Diffie-Hellman-Parameter generieren
$ ./easyrsa gen-dhAusgabe:
Generating DH parameters, 2048 bit long safe prime
.....................
DH parameters appear to be ok.
Notice
------
DH parameters of size 2048 created at:
* /home/linuxuser/easy-rsa/pki/dh.pem
dh.pem prüfen
$ ls pki/Ausgabe:
ca.crt dh.pem …
Zertifikate und Schlüssel nach /etc/openvpn kopieren
$ sudo cp ta.key pki/ca.crt pki/private/vpnserver.key pki/issued/vpnserver.crt pki/dh.pem /etc/openvpn/OpenVPN konfigurieren
OpenVPN nutzt Konfigurationsdateien im Verzeichnis /etc/openvpn, um Tunnelinterfaces zu erstellen und zu verwalten. Dateien in diesem Verzeichnis werden vom Dienst openvpn@ gesteuert, während zusätzliche Konfigurationen in /etc/openvpn/server über openvpn-server@ ausgeführt werden. Im Folgenden wird die Einrichtung einer neuen Serverkonfiguration beschrieben.
Konfigurationsvorlage kopieren
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/In das OpenVPN-Verzeichnis wechseln
$ cd /etc/openvpnserver.conf bearbeiten
$ sudo nano server.confOptional: Entfernen Sie das Semikolon vor der local-Direktive und ersetzen Sie die Beispiel-IP:
local 192.0.2.100Tunnel-Gerät überprüfen
dev tuntun erstellt IP-Tunnel, während tap Ethernet-Tunnel erzeugt.
Pfade für CA-, Zertifikats- und Schlüsseldateien anpassen
ca /etc/openvpn/ca.crt
cert /etc/openvpn/vpnserver.crt
key /etc/openvpn/vpnserver.keyDiese Parameter geben die CA-Datei, das öffentliche Zertifikat sowie den privaten Server-Schlüssel an.
Diffie-Hellman-Datei festlegen
dh /etc/openvpn/dh.pemStarke Verschlüsselung aktivieren
data-ciphers AES-256-GCM:AES-128-GCM:?CHACHA20-POLY1305:AES-256-CBC
data-ciphers-fallback AES-256-CBCHMAC-Algorithmus angeben
auth SHA512VPN-Netz konfigurieren
server 10.10.10.0 255.255.255.0Gesamten Traffic durch VPN leiten
push "redirect-gateway def1 bypass-dhcp"DNS-Server für Clients setzen
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 1.1.1.1"In das Easy-RSA-Verzeichnis wechseln
$ cd ~/easy-rsaZertifikatsanfrage für einen neuen Client erstellen
$ ./easyrsa gen-req vpnclient1 nopassDrücken Sie die Eingabetaste, wenn Sie zur Bestätigung des Common Name aufgefordert werden.
Hinweis
Private-Key und Zertifikatsanforderung wurden erzeugt.
Ihre Dateien befinden sich unter:
* req: /home/linuxuser/easy-rsa/pki/reqs/vpnclient1.req
* key: /home/linuxuser/easy-rsa/pki/private/vpnclient1.key
Client-Zertifikatsanforderung signieren
$ ./easyrsa sign-req client vpnclient1Bestätigen Sie die Nachfrage mit yes und geben Sie anschließend das CA-Passwort ein.
Hinweis
Das Zertifikat wurde erzeugt:
* /home/linuxuser/easy-rsa/pki/issued/vpnclient1.crt
Zertifikat und Schlüssel in das Client-Verzeichnis kopieren
$ sudo cp pki/issued/vpnclient1.crt /etc/openvpn/client/keys$ sudo cp pki/private/vpnclient1.key /etc/openvpn/client/keysOpenVPN-Clientkonfiguration erstellen
Beispielkonfiguration kopieren
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/clientIn das Client-Konfigurationsverzeichnis wechseln
$ cd /etc/openvpn/clientclient.conf in vpnclient1.ovpn umbenennen
$ sudo mv client.conf vpnclient1.ovpnWählen Sie das Format abhängig vom Zielgerät. .ovpn eignet sich für grafische OpenVPN-Clients auf Windows, macOS, iOS und Android.
Client-Konfigurationsdatei bearbeiten
$ sudo nano vpnclient1.ovpnAdresse des OpenVPN-Servers eintragen
remote 192.0.2.100 1194CA-, Zertifikats- und Schlüsselparameter auskommentieren
#ca ca.crt
#cert client.crt
#key client.keyVerschlüsselungsalgorithmen definieren
data-ciphers AES-256-GCM:AES-128-GCM:?CHACHA20-POLY1305:AES-256-CBCAuthentifizierungsalgorithmus angeben
auth SHA512Die angepasste Clientkonfiguration sieht beispielsweise so aus:
client
dev tun
proto udp
remote 192.0.2.100 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:AES-256-CBC
auth SHA512
verb 3Zertifikate, Schlüssel und TLS-Auth-Block anhängen
$ sudo bash -c 'cat <> vpnclient1.ovpn
$(< /etc/openvpn/ca.crt)
$(< keys/vpnclient1.crt)
$(< keys/vpnclient1.key)
$(< /etc/openvpn/ta.key)
key-direction 1
EOF'Client-Konfiguration prüfen
$ cat vpnclient1.ovpnDie fertige .ovpn-Datei ins Home-Verzeichnis kopieren
$ cp vpnclient1.ovpn ~/vpnclient1.ovpnOpenVPN-Server testen
Nutzen Sie OpenVPN Connect, um die Verbindung zwischen Client und Server auszuprobieren.
OpenVPN Connect herunterladen
Installieren Sie die Anwendung von der offiziellen Webseite.
Neues Terminal auf dem lokalen Rechner öffnen
$ cdPer SFTP mit dem Server verbinden
$ sftp linuxuser@SERVER-IPDateien auflisten und prüfen, ob vpnclient1.ovpn vorhanden ist
sftp> lsClientkonfiguration herunterladen
sftp> get vpnclient1.ovpnAusgabe:
Fetching /home/linuxuser/vpnclient1.ovpn to vpnclient1.ovpn
vpnclient1.ovpn 100% 8281 539.1KB/s 00:00
Konfiguration in OpenVPN Connect importieren
Datei auswählen → Importieren → Hostname prüfen → Verbinden.
Öffentliche IP per curl prüfen
$ curl ifconfig.meInternetverbindung testen
$ ping google.comAusgabe:
Pinging google.com [172.217.170.174] with 32 bytes of data:
Reply … (Latenzzeiten wie angezeigt)
0% Packet Loss
Durchschnitt ca. 29ms
Fehlerbehebung
Connection Timeout beheben
Öffnen Sie die Clientkonfiguration und prüfen Sie die remote-Zeile.
$ code vpnclient1.ovpnremote 192.0.2.100 1194Firewall prüfen:
$ sudo ufw status$ sudo ufw allow 1194/tcp$ sudo ufw reloadAuthentication/Decrypt Packet Errors beheben
Diese Fehler hängen meist mit einer falschen TLS-Konfiguration zusammen.
Server-Protokolle anzeigen
$ sudo journalctl -xeu openvpn-server@server.serviceDie Datei ta.key überprüfen
$ sudo cat /etc/openvpn/ta.keyDie Ausgabe sollte ähnlich aussehen wie:
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
1ba01f852d75016a3fd1b3b88aef9609
d52f7dd4e7858f0a219f5b9ec65b37c1
efe9458fe0e06b2ae4d1f9fee3aee929
959bd0e9e260588023fed611d803a769
108dfd5157dd95f6a627c486361e7c6d
753d65f6c25fd2278a44a872e5178f0f
58b2fddb9f3b223dc0ebc0ff95e4a58e
a2cc037f8ebaad2f56bd2cafc07a57ae
04e637dfda193c37a91833eeebd664b4
60e9d6a04a86f0407ad7ca6e458d5573
9163933ecc29b567d26f5b70789fe2f5
d523f0ab7c667929a1023d5098d517f3
17f7b227a8eafaf9804fcf2713d753c7
ff35d5c36e035a123ac68a49bc67473d
fba57989354045fe4305a705d5effa3d
36d447f62b9ef46e2aec61562c2900eb
-----END OpenVPN Static key V1-----Serverkonfiguration überprüfen
$ sudo nano /etc/openvpn/server.confdata-ciphers AES-256-GCM:AES-128-GCM:?CHACHA20-POLY1305:AES-256-CBC
auth SHA512Clientkonfiguration auf TLS- und Cipher-Werte prüfen
$ nano /etc/openvpn/client/vpnclient1.ovpnStellen Sie sicher, dass die folgenden Werte exakt mit der Serverkonfiguration übereinstimmen:
# ...static key...key-direction 1data-ciphers AES-256-GCM:AES-128-GCM:?CHACHA20-POLY1305:AES-256-CBC
auth SHA512Übertragen Sie die aktualisierte .ovpn-Datei auf Ihr Endgerät und testen Sie die Verbindung erneut.
Fazit
Sie haben OpenVPN erfolgreich auf Ubuntu 24.04 installiert, den VPN-Server eingerichtet, Client-Schlüssel erzeugt und eine funktionierende Verbindung hergestellt. OpenVPN unterstützt zahlreiche Clients sowie mehrere Tunnelkonfigurationen auf unterschiedlichen Ports. Für weiterführende Informationen empfiehlt sich die offizielle OpenVPN-Dokumentation.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.