OpenVPN unter Ubuntu 24.04 installieren und einrichten
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.
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 update
OpenVPN installieren
$ sudo apt install openvpn -y
Installierte Version prüfen
$ openvpn --version
Die 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 -y
Zum Home-Verzeichnis wechseln
$ cd
easy-rsa-Verzeichnis anlegen
$ mkdir easy-rsa
Easy-RSA-Dateien verlinken
$ ln -s /usr/share/easy-rsa/* easy-rsa/
easy-rsa-Inhalt anzeigen
$ ls easy-rsa
Ausgabe:
easyrsa openssl-easyrsa.cnf vars.example x509-types
In das easy-rsa-Verzeichnis wechseln
$ cd easy-rsa
vars-Datei erstellen
$ nano vars
CA-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-pki
Ausgabe:
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-ca
Geben 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 nopass
Ausgabe:
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 vpnserver
Bestä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/issued
Ausgabe:
vpnserver.crt
HMAC-Schlüssel (TLS-Auth) erzeugen
$ sudo openvpn --genkey secret ta.key
$ ls
Ausgabe:
df.pem easyrsa openssl-easyrsa.cnf pki ta.key vars vars.example x509-types
Diffie-Hellman-Parameter generieren
$ ./easyrsa gen-dh
Ausgabe:
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/openvpn
server.conf bearbeiten
$ sudo nano server.conf
Optional: Entfernen Sie das Semikolon vor der local-Direktive und ersetzen Sie die Beispiel-IP:
local 192.0.2.100
Tunnel-Gerät überprüfen
dev tun
tun 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.key
Diese Parameter geben die CA-Datei, das öffentliche Zertifikat sowie den privaten Server-Schlüssel an.
Diffie-Hellman-Datei festlegen
dh /etc/openvpn/dh.pem
Starke Verschlüsselung aktivieren
data-ciphers AES-256-GCM:AES-128-GCM:?CHACHA20-POLY1305:AES-256-CBC
data-ciphers-fallback AES-256-CBC
HMAC-Algorithmus angeben
auth SHA512
VPN-Netz konfigurieren
server 10.10.10.0 255.255.255.0
Gesamten 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-rsa
Zertifikatsanfrage für einen neuen Client erstellen
$ ./easyrsa gen-req vpnclient1 nopass
Drü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 vpnclient1
Bestä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/keys
OpenVPN-Clientkonfiguration erstellen
Beispielkonfiguration kopieren
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client
In das Client-Konfigurationsverzeichnis wechseln
$ cd /etc/openvpn/client
client.conf in vpnclient1.ovpn umbenennen
$ sudo mv client.conf vpnclient1.ovpn
Wä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.ovpn
Adresse des OpenVPN-Servers eintragen
remote 192.0.2.100 1194
CA-, Zertifikats- und Schlüsselparameter auskommentieren
#ca ca.crt
#cert client.crt
#key client.key
Verschlüsselungsalgorithmen definieren
data-ciphers AES-256-GCM:AES-128-GCM:?CHACHA20-POLY1305:AES-256-CBC
Authentifizierungsalgorithmus angeben
auth SHA512
Die 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 3
Zertifikate, 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.ovpn
Die fertige .ovpn-Datei ins Home-Verzeichnis kopieren
$ cp vpnclient1.ovpn ~/vpnclient1.ovpn
OpenVPN-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
$ cd
Per SFTP mit dem Server verbinden
$ sftp linuxuser@SERVER-IP
Dateien auflisten und prüfen, ob vpnclient1.ovpn vorhanden ist
sftp> ls
Clientkonfiguration herunterladen
sftp> get vpnclient1.ovpn
Ausgabe:
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.me
Internetverbindung testen
$ ping google.com
Ausgabe:
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.ovpn
remote 192.0.2.100 1194
Firewall prüfen:
$ sudo ufw status
$ sudo ufw allow 1194/tcp
$ sudo ufw reload
Authentication/Decrypt Packet Errors beheben
Diese Fehler hängen meist mit einer falschen TLS-Konfiguration zusammen.
Server-Protokolle anzeigen
$ sudo journalctl -xeu openvpn-server@server.service
Die Datei ta.key überprüfen
$ sudo cat /etc/openvpn/ta.key
Die 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.conf
data-ciphers AES-256-GCM:AES-128-GCM:?CHACHA20-POLY1305:AES-256-CBC
auth SHA512
Clientkonfiguration auf TLS- und Cipher-Werte prüfen
$ nano /etc/openvpn/client/vpnclient1.ovpn
Stellen Sie sicher, dass die folgenden Werte exakt mit der Serverkonfiguration übereinstimmen:
# ...static key...
key-direction 1
data-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.


