OpenVPN Server Installation Ubuntu
OpenVPN Server Installation auf Ubuntu – Schritt-für-Schritt
OpenVPN ist eine kostenlose, Open-Source VPN-Lösung, die sichere Remote-Zugriffe ermöglicht. Im Gegensatz zu WireGuard ist OpenVPN älter, aber es hat eine breite Kompatibilität mit verschiedenen Geräten und Betriebssystemen. Diese Anleitung führt Sie durch eine vollständige Server-Installation auf Ubuntu.
OpenVPN vs WireGuard – Vergleich
| Kriterium | OpenVPN | WireGuard |
|---|---|---|
| Aufbau und Konfiguration | Komplex, viele Optionen | Minimal und einfach |
| Performance | Gut | Sehr gut (optimiert) |
| Latency | Höher (TCP und UDP möglich) | Niedrig |
| Codebase | Größer (~100k Zeilen) | Kleiner (~4k Zeilen) |
| Kompatibilität | Sehr breit (alle Systeme) | Wächsend (einige Einschränkungen) |
| Firewall Traversal | Besser (TCP möglich) | UDP-only |
| Kryptographie | OpenSSL (flexibel) | Modern (ChaCha20, Curve25519) |
| NAT Unterstützung | Sehr gut | Gut |
| Stabilität | Sehr stabil (jahrelange Nutzung) | Stabil (relativ neu) |
| Lernkurve | Steil | Flach |
Systemanforderungen
- OS: Ubuntu 18.04, 20.04, 22.04 oder neuer
- RAM: Mindestens 512MB (1GB empfohlen)
- Disk: Mindestens 1GB verfügbar
- Netzwerk: Statische IP-Adresse oder Dynamic DNS
- Ports: UDP 1194 (oder TCP alternative) muss offen sein
Schritt 1: OpenVPN und easy-rsa installieren
Pakete installieren
sudo apt update sudo apt install -y openvpn easy-rsa
Verzeichnisse erstellen
sudo mkdir -p /etc/openvpn/easy-rsa sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/ sudo chown -R $USER:$USER /etc/openvpn/easy-rsa
Schritt 2: Public Key Infrastructure (PKI) einrichten
easy-rsa initialisieren
cd /etc/openvpn/easy-rsa ./easyrsa init-pki
Certificate Authority (CA) erstellen
./easyrsa build-ca
Sie werden nach einem Common Name gefragt. Geben Sie etwas aussagekräftiges ein, z.B. MyVPN-CA.
Diffie-Hellman Parameter generieren (wichtig für PFS)
./easyrsa gen-dh
Dies dauert mehrere Minuten. Sie können währenddessen die anderen Schritte vorbereiten.
Server-Zertifikat erstellen
./easyrsa build-server-full server nopass
Der Server-Schlüssel wird ohne Passwort erstellt (nopass), damit OpenVPN automatisch starten kann.
Client-Zertifikat erstellen
./easyrsa build-client-full client1 nopass ./easyrsa build-client-full client2 nopass
Erstellen Sie ein Zertifikat pro Client. Wiederholen Sie für weitere Clients.
Certificate Revocation List (CRL) generieren
./easyrsa gen-crl
Dies ist für die Sperrung von Client-Zertifikaten nötig.
Schritt 3: Zertifikate zum OpenVPN Verzeichnis kopieren
sudo cp pki/ca.crt /etc/openvpn/server/ sudo cp pki/private/ca.key /etc/openvpn/server/ sudo cp pki/issued/server.crt /etc/openvpn/server/ sudo cp pki/private/server.key /etc/openvpn/server/ sudo cp pki/dh.pem /etc/openvpn/server/ sudo cp pki/crl.pem /etc/openvpn/server/ sudo chown -R openvpn:openvpn /etc/openvpn/server/ sudo chmod 700 /etc/openvpn/server/
Schritt 4: Server-Konfiguration erstellen
Erstellen Sie /etc/openvpn/server/server.conf:
sudo nano /etc/openvpn/server/server.conf
Fügen Sie folgende Inhalte ein:
# OpenVPN Server Konfiguration port 1194 proto udp dev tun status openvpn-status.log status-version 3 log-append openvpn.log verb 3 # Pfade zu Zertifikaten und Schlüsseln ca ca.crt cert server.crt key server.key dh dh.pem crl-verify crl.pem # Netzwerk-Konfiguration server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /var/log/openvpn/ipp.txt # Client-Konfiguration push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" # Keepalive und Timeouts keepalive 10 120 # Verschlüsselung und Authentifizierung cipher AES-256-CBC auth SHA256 # Kompression (optional, kann VPN verlangsamen) compress lz4-v2 push "compress lz4-v2" # Sicherheit tls-version-min 1.2 tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 user nobody group nogroup persist-key persist-tun # Dateiberechtigungen chroot /etc/openvpn/server # Zusätzliche Sicherheit explicit-exit-notify 1
Schritt 5: Firewall und IP Forwarding konfigurieren
IP Forwarding aktivieren
sudo sysctl -w net.ipv4.ip_forward=1
Permanent speichern:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.d/99-openvpn.conf sudo sysctl -p /etc/sysctl.d/99-openvpn.conf
UFW-Firewall konfigurieren
sudo ufw default allow outgoing sudo ufw default deny incoming sudo ufw allow 22/tcp sudo ufw allow 1194/udp sudo ufw allow from 10.8.0.0/24 sudo ufw enable
Masquerading aktivieren (für Routing)
sudo nano /etc/ufw/before.rules
Fügen Sie nach der ersten Zeile folgende Zeilen ein:
# OpenVPN Masquerading *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE COMMIT
Oder mit iptables direkt:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4
Schritt 6: OpenVPN Server starten und aktivieren
sudo systemctl enable openvpn-server@server sudo systemctl start openvpn-server@server sudo systemctl status openvpn-server@server
Server läuft, wenn Sie folgende Ausgabe sehen:
● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service) Active: active (running)
Schritt 7: Client-Konfigurationsdatei generieren
Erstellen Sie eine einzelne .ovpn-Datei pro Client mit allen erforderlichen Zertifikaten eingebettet:
cat > /tmp/client1.ovpn << 'EOF' client proto udp remote YOUR_SERVER_IP 1194 dev tun resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server verify-x509-name server name auth SHA256 cipher AES-256-CBC comp-lz4 verb 3$(cat /etc/openvpn/easy-rsa/pki/ca.crt) $(cat /etc/openvpn/easy-rsa/pki/issued/client1.crt) $(cat /etc/openvpn/easy-rsa/pki/private/client1.key) EOF
Ersetzen Sie YOUR_SERVER_IP durch die IP-Adresse Ihres Servers.
Übertragen Sie die client1.ovpn-Datei sicher zu dem Client-Computer (z.B. über SCP oder sicheren Download).
Schritt 8: Client-Verbindung testen
Auf Linux Client
sudo apt install openvpn sudo openvpn --config /path/to/client1.ovpn
Auf macOS/Windows
Nutzen Sie die OpenVPN GUI-Anwendung oder:
openvpn /path/to/client1.ovpn
Verbindung überprüfen
ifconfig tun0 # oder: ip addr show dev tun0 # Sollte eine IP im Range 10.8.0.0/24 zeigen # Ping zum Server VPN IP ping 10.8.0.1 # Test mit Testziel curl https://ifconfig.me # Sollte Server-IP zeigen, nicht Client-IP
Client-Zertifikat widerrufen (Revocation)
Falls Sie einen Client deaktivieren möchten:
cd /etc/openvpn/easy-rsa ./easyrsa revoke client1
Dann CRL neu generieren und OpenVPN neu laden:
./easyrsa gen-crl sudo cp pki/crl.pem /etc/openvpn/server/ sudo systemctl reload openvpn-server@server
OpenVPN Status und Logs überwachen
Connected Clients anzeigen
sudo tail -f /etc/openvpn/server/openvpn-status.log
Logs auf Fehler überprüfen
sudo tail -f /var/log/openvpn/openvpn.log sudo journalctl -u openvpn-server@server -f
Performance-Optimierung
Empfangspuffer erhöhen
Für bessere Performance in `/etc/openvpn/server/server.conf`:
rcvbuf 0 sndbuf 0
UDP vs TCP
UDP ist schneller. Wenn Sie TCP brauchen (Firewalls):
proto tcp port 443 # HTTPS Port, durchlässiger in restriktiven Netzwerken
Multi-Client Konfiguration Automatisieren
Skript zum Generieren mehrerer Client-Configs:
#!/bin/bash
cd /etc/openvpn/easy-rsa
SERVER_IP="YOUR_SERVER_IP"
CLIENTS=("client1" "client2" "client3")
for client in "${CLIENTS[@]}"; do
./easyrsa build-client-full $client nopass
cat > /tmp/${client}.ovpn << EOF
client
proto udp
remote $SERVER_IP 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server name
auth SHA256
cipher AES-256-CBC
comp-lz4
verb 3
$(cat pki/ca.crt)
$(cat pki/issued/${client}.crt)
$(cat pki/private/${client}.key)
EOF
chmod 600 /tmp/${client}.ovpn
echo "Generated /tmp/${client}.ovpn"
done
Zusammenfassung – Checkliste
- [ ] OpenVPN und easy-rsa installiert
- [ ] PKI mit CA, Server und Client-Zertifikaten erstellt
- [ ] Server-Konfiguration angelegt
- [ ] IP Forwarding aktiviert
- [ ] UFW-Firewall mit NAT konfiguriert
- [ ] OpenVPN Server läuft und auto-startet
- [ ] Client .ovpn-Dateien mit eingebetteten Zertifikaten erstellt
- [ ] Client-Verbindung getestet
- [ ] Server-Status Logs überprüft
Zusammenfassung
Eine funktionierende OpenVPN-Installation bietet sichere Remote-Zugriffe auf Ihre Infrastruktur. Mit den modernen Cipher-Suites und starken Zertifikaten ist OpenVPN ein zuverlässiger VPN-Dienst für kleine bis mittlere Umgebungen. Die Komplexität der Konfiguration wird durch umfassende Dokumentation und Community-Support gut ausgeglichen.