Machen Sie sich Sorgen darüber, wie Sie frei auf das Internet zugreifen können, ohne viele Einschränkungen und Datenunsicherheiten? Keine Sorge mehr! Starten Sie das Hosting Ihres VPN-Servers mit OpenVPN in Docker.
Mit den Technologien Docker und OpenVPN können Sie Ihren VPN-Server schnell einrichten und betreiben. In diesem Tutorial lernen Sie die grundlegenden Grundlagen der Ausführung eines in einem Docker-Container gehosteten OpenVPN-Servers.
Bleiben Sie dran und halten Sie Ihren VPN-Server mit OpenVPN Docker sicher!
Voraussetzungen
Dieses Tutorial ist eine praktische Demonstration. Wenn Sie mitmachen möchten, benötigen Sie Folgendes:
- A Linux-based operating system (OS) – This tutorial uses Ubuntu v22.04, but other Linux distributions will work.
- Docker installiert und ausgeführt – Dieses Tutorial verwendet Docker v20.10.17.
- Ein Android-Gerät mit der installierten OpenVPN Connect-App – In diesem Tutorial wird Android v11 und OpenVPN Connect v3.2.7 verwendet.
Erstellen eines Docker-Containers für OpenVPN
Containerisierung bedeutet, Code und alle seine Abhängigkeiten als standardisierte Softwareeinheit zu verpacken, um Anwendungen schnell und zuverlässig ausführen zu können. Es gibt mehrere Möglichkeiten, einen OpenVPN Docker-Container zu erstellen. Sie können entweder den Container von Grund auf neu erstellen oder einen vorgefertigten Container aus dem Docker Hub herunterladen.
In diesem Tutorial verwenden wir jedoch ein bereits vorhandenes OpenVPN Docker-Image. Fertige Container bieten mehrere Vorteile, da sie umfassend auf verschiedene Sicherheitslücken getestet werden und von einer großen Entwicklergemeinschaft unterstützt werden. Darüber hinaus sparen Sie mit diesen Containern Zeit und vermeiden das Rad neu zu erfinden.
Um einen OpenVPN Docker-Container zu erstellen, gehen Sie wie folgt vor:
1. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl OVPN_DATA aus. Dieser Befehl gibt keine Ausgabe aus, setzt aber den Namen des Datenvolumens auf „ovpn-data-test“ und speichert ihn in der Variable OVPN_DATA.
2. Führen Sie anschließend den folgenden Befehl „docker volume create“ aus, um ein Datenvolumen mit dem Namen zu erstellen, den Sie in der Variable $OVPN_DATA festgelegt haben.
Dieser Befehl gibt keine Ausgabe aus, erstellt jedoch einen Container für das Datenvolumen von OpenVPN, in dem alle Daten, Konfigurationsdateien und Zertifikate gespeichert werden.
3. Führen Sie schließlich den folgenden Befehl „docker run“ aus, um das OpenVPN Docker-Image herunterzuladen und zu installieren, wie folgt:
- Geben Sie den Speicherplatz (
-v
) innerhalb des Containers an, der vom restlichen Dateisystem des Containers getrennt ist. In diesem Fall befindet sich das OpenVPN Docker-Image im Verzeichnis/etc/openvpn
.
- Geben Sie den Protokollierungsmechanismus (
--log-driver
) an, der die Informationen zu den laufenden Containern und Diensten aufbewahrt (none
).
- Weisen Sie Docker an, den Container automatisch zu entfernen (–rm), wenn er bereits existiert.
Stellen Sie sicher, dass Sie (YourPublicIP.com) durch die öffentliche IP oder den Domänennamen Ihres Servers (Host) via UDP-Protokoll ersetzen. Beachten Sie jedoch, dass Sie auch das TCP-Protokoll verwenden können.
TCP ist ein verbindungsorientiertes Protokoll, während UDP ein verbindungsloses Protokoll ist.

Beachten Sie, dass Sie bei der Verwendung von Self-Hosting oder öffentlicher IP Portweiterleitung auf Ihrem Router/Modem durchführen müssen.
Sichern Sie den OpenVPN-Client mit Zertifikaten
Sie haben erfolgreich den OpenVPN-Docker-Client auf Ihrer Maschine installiert, also hurra! Bevor Sie jedoch OpenVPN verwenden können, müssen Sie zuerst die Konfiguration des OpenVPN-Clients einrichten.
Nur weil Sie an OpenVPN arbeiten, bedeutet das nicht, dass Sie Ihren VPN-Server der Welt öffnen müssen. Sie benötigen Zertifikate, um Ihren OpenVPN-Client zu sichern:
1. Führen Sie den unten stehenden Docker-Befehl aus, um die CA- und Client-Zertifikate zu generieren und abzurufen. Dieser Befehl erstellt laufende OpenVPN-Container (-it) aus dem im Hauptcontainer angegebenen Bild.
In den meisten Fällen dauert es einige Zeit, CA-Serverzertifikate zu generieren, abhängig von den Ressourcen des verwendeten Geräts.
Geben Sie „ja“ ein und drücken Sie die Eingabetaste, wie unten gezeigt, um das OpenVPN PKI-System zu initiieren.

2. Geben Sie als nächstes ein neues CA-Zertifikatpasswort ein und bestätigen Sie es, und drücken Sie dann die Eingabetaste. Notieren Sie sich das Passwort an einem sicheren Ort, da Sie es später benötigen, um ein Clientzertifikat einzurichten und zu generieren.

3. Legen Sie einen eindeutigen Namen für Ihr CA-Zertifikat fest und drücken Sie die Eingabetaste.

4. Geben Sie nun das CA-Passwort ein, das Sie im zweiten Schritt festgelegt haben, um zu überprüfen, ob die Anforderung mit der Signatur übereinstimmt.

5. Geben Sie Ihr Passwort erneut ein, um einen privaten Schlüssel zu generieren.

6. Führen Sie als nächstes den unten stehenden Befehl aus, um den OpenVPN-Serverdienst auf Docker zu starten und einen OpenVPN-Client einzurichten, wobei:
- Die Option -p legt den Port (1194) fest, der die Verbindung zwischen Server und Client herstellt und initiiert.
Sie können den Port 1194 nach Ihren Wünschen ändern, wenn Sie den Standard-OpenVPN-Port nicht verwenden möchten.
- Das Argument –cap-add=NET_ADMIN wendet die zusätzlichen Linux-Fähigkeiten an, indem es die Netzwerkschnittstellen ändert, die Docker standardmäßig nicht gewährt.

7. Sobald der Port festgelegt ist, führen Sie den unten stehenden docker run
-Befehl aus, um Folgendes durchzuführen:
- Generieren Sie das Client-Zertifikat und laden Sie die Client-Konfigurationsdatei (.ovpn) aus dem Docker-Container auf den Host-Server herunter. Das generierte Zertifikat hat kein Passwort, wie im Befehl mit dem Argument „no-pass“ angegeben.
- Setzen Sie den Dateinamen des OpenVPN-Zertifikats und der Client-Identifikation auf „CLIENTAPP“. Das Zertifikat wird im Benutzerverzeichnis des Hosts und nicht im Docker-Container gespeichert.
Geben Sie Ihr Passwort wie unten gezeigt ein, um die Zertifikatserstellung abzuschließen.

8. Führen Sie anschließend den folgenden Befehl aus, um die OpenVPN-Verbindungs (ovpn_getclient)-Konfigurationsdatei aus dem Container auf den Host-Server zu generieren und herunterzuladen.
9. Navigieren Sie auf Ihrem Host-Server (Linux-Maschine) zum Verzeichnis „user/home“ und übertragen Sie die .ovpn-Datei (CLIENTAPP.ovpn) auf Ihr Android-Gerät.
10. Starten Sie schließlich Ihre OpenVPN Connect Client-App auf Ihrem Android-Gerät.
Tappen Sie auf „BROWSE“ unter dem Reiter „FILE“ und wählen Sie die .ovpn-Datei (CLIENTAPP.ovpn) aus, die Sie auf Ihr Android-Gerät übertragen haben. Dadurch wird ein neues Profil zu Ihrem OpenVPN Connect Client hinzugefügt.

Nach erfolgreicher Verbindung sehen Sie das folgende Ergebnis.

Zugriff auf die OpenVPN-Web-Oberfläche
Machen Sie sich Sorgen über die Anzahl der Befehle, die Sie ausführen mussten, um auf Ihren VPN-Server zuzugreifen? Warum probieren Sie nicht eine einfache webbasierte Benutzeroberfläche aus?
OpenVPN bietet ein webbasiertes Installations- und Konfigurationstoolset, das eine schnelle Bereitstellung von VPN-Fernzugriffslösungen ermöglicht. Das Tool-Kit wird in einem einzigen Paket namens OpenVPN Access Server geliefert.
Um auf die OpenVPN-Web-Benutzeroberfläche zuzugreifen, müssen Sie das Paket installieren:
1. Führen Sie den folgenden docker pull-Befehl aus, um den neuesten OpenVPN-Docker-Container (openvpn-as) vom Linux Server Docker Hub (linuxserver) herunterzuladen und zu installieren.

2. Nachdem der Download abgeschlossen ist, führen Sie den folgenden docker create-Befehl aus, um einen neuen Docker-Container mit dem Namen openvpn-as zu erstellen und die folgenden Optionen festzulegen:
-v /home/docker/openvpn-as/config:/config
– Legt das Verzeichnis fest, in dem die Konfigurationsdateien gespeichert werden.
--restart=always
– Stellt sicher, dass der Container bei jedem Systemstart gestartet wird. Wenn Sie nicht möchten, dass der Container neu gestartet wird, können Sie dieses Argument weglassen.
-e PGID=1001 -e PUID=1001
– Setzt die Benutzer-ID, um Berechtigungsprobleme zwischen dem Host-Server und dem Container zu vermeiden.
-e TZ=Africa/Nairobi
– Gibt die Zeitzoneninformationen an.
- –net=host –privileged – Legt fest, wie der OpenVPN Access Server im Container ausgeführt wird.

3. Führen Sie als nächstes den unten stehenden Befehl docker start aus, um über den OpenVPN-Web-UI auf den OpenVPN Access Server Docker-Container zuzugreifen, den Sie im zweiten Schritt erstellt haben.

4. Öffnen Sie schließlich Ihren bevorzugten Webbrowser und navigieren Sie mit Ihrer lokalen IP-Adresse zur OpenVPN-Web-Oberfläche (z. B. https://IhreIP:943/admin). Ersetzen Sie IhreIP durch die tatsächliche IP-Adresse Ihres Servers.
Sie werden mit der Anmeldeseite des OpenVPN Access Servers begrüßt, wenn alles gut läuft, wie unten gezeigt.
Geben Sie für Benutzername und Passwort admin und password ein und klicken Sie auf Anmelden, um auf das Dashboard des OpenVPN Access Servers zuzugreifen.
Beachten Sie, dass der Standard-Benutzername und das Standard-Passwort admin bzw. password lauten. Sie können die Anmeldedaten nach Ihren Wünschen ändern.

Nach der Anmeldung sehen Sie das Dashboard des OpenVPN Access Servers wie unten dargestellt.

DNS-Konfiguration für eine schnellere und sichere Verbindung
Zu diesem Zeitpunkt funktioniert Ihr OpenVPN Access Server korrekt. Um jedoch die Leistung Ihres VPN-Servers zu verbessern, müssen Sie die DNS konfigurieren.
Um DNS zu konfigurieren, müssen Sie auf die Web-Oberfläche des OpenVPN-Servers zugreifen und die DNS-Einstellungen mit Google oder Ihren bevorzugten DNS-Adressen aktualisieren. Google bietet die schnellsten verfügbaren DNS-Server, die Sie in Ihrem OpenVPN Access Server verwenden werden.
1. Klicken Sie auf VPN-Einstellungen (linkes Panel) unter dem TAB KONFIGURATION auf Ihrem Dashboard des OpenVPN Access Servers.
Scrollen Sie zum Abschnitt DNS-Einstellungen und aktivieren Sie die Option Clients verwenden spezifische DNS-Server, wie unten gezeigt.

2. Aktualisieren Sie dann den primären (8.8.8.8) und sekundären DNS-Server (8.8.8.4) mit den Google DNS-Adressen wie unten angegeben und klicken Sie auf Einstellungen speichern, um die Änderungen zu speichern.

3. Nachdem Sie die Änderungen gespeichert haben, klicken Sie auf Laufenden Server aktualisieren, um den Server neu zu starten, damit die Änderungen wirksam werden.

4. Gehen Sie jetzt auf den OpenVPN Access Server (z.B. https://IhreIP:943/admin) auf Ihrem Linux-Rechner. Ersetzen Sie IhreIP durch die IP-Adresse Ihres Servers. Wenn die Konfiguration korrekt funktioniert, sehen Sie die gleiche Seite wie unten.
Melden Sie sich mit den Standardanmeldeinformationen (admin und Passwort) für Benutzername und Passwort an.

5. Klicken Sie auf die Symbole für beliebige Plattformen, um die Client-Anwendung herunterzuladen, und klicken Sie auf Yourself (Benutzer-gesperrtes Profil), um die Client-.ovpn-Datei herunterzuladen.

6. Starten Sie schließlich den OpenVPN-Client, den Sie heruntergeladen haben, und importieren Sie die .ovpn-Datei, wie Sie es im letzten Schritt von „Sicherung des OpenVPN-Clients mit Zertifikaten“ getan haben, wie unten gezeigt.

Abschluss
Das Hosting Ihres VPN-Servers sollte niemals eine komplexe Aufgabe sein, geschweige denn die Sicherung Ihrer Serververbindung. Glücklicherweise steht OpenVPN Docker kurz vor der Rettung. Und in diesem Tutorial haben Sie gelernt, OpenVPN unter Ubuntu mit Docker zu installieren, einzurichten und zu konfigurieren. Sie haben auch gelernt, den Zugriff auf OpenVPN in einem Docker-Container mit OpenVPN-CA und Client-Zertifikaten abzusichern.
Neben dem Zugriff auf Ihren OpenVPN-Server über die Befehlszeilenschnittstelle können Sie dies nun auch über die OpenVPN Access Server-Webbenutzeroberfläche tun. Sie haben eine schnelle VPN-Bereitstellung realisiert, indem Sie Konfigurationsdateien für die OpenVPN-Client-Apps generiert haben.
Warum bauen Sie Ihr neues Wissen nicht weiter aus, indem Sie VPN-Tunneldienste für Ihre Anwendungen mit WireGuard VPN erstellen? Entdecken Sie die Welt unbegrenzter Möglichkeiten mit selbst gehosteten VPN-Diensten!