Grundlagen der Ausführung von OpenVPN in Docker auf Ubuntu

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.

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.

OVPN_DATA="ovpn-data-test"

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.

docker volume create --name $OVPN_DATA

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.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://YourPublicIP.com
Installing OpenVPN on Docker container

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.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki

Geben Sie „ja“ ein und drücken Sie die Eingabetaste, wie unten gezeigt, um das OpenVPN PKI-System zu initiieren.

Initiating the OpenVPN PKI system

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.

Setting a new CA certificate password

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

Naming the new CA certificate

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.

Checking \the request matches the signature

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

Generate a private key by entering the CA passphrase

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.
docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
Setting the port OpenVPN will listen to

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.
docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTAPP nopass

Geben Sie Ihr Passwort wie unten gezeigt ein, um die Zertifikatserstellung abzuschließen.

Generating the VPN client certificate

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.

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient CLIENTAPP > CLIENTAPP.ovpn

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.

Importing the .ovpn file to the OpenVPN Connect client

Nach erfolgreicher Verbindung sehen Sie das folgende Ergebnis.

Verifying successful connection to the VPN server

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.

docker pull linuxserver/openvpn-as
Downloading OpenVPN Access Server Docker container

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.
  • –net=host –privileged – Legt fest, wie der OpenVPN Access Server im Container ausgeführt wird.
docker create --name=openvpn-as --restart=always -v /home/docker/openvpn-as/config:/config -e INTERFACE=eth0 -e PGID=1001 -e PUID=1001 -e TZ=Africa/Nairobi --net=host --privileged linuxserver/openvpn-as
Creating a new Docker container (openvpn-as)

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.

docker start openvpn-as
Starting the OpenVPN access server Docker container

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.

Accessing the OpenVPN Access Server web UI

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

Accessing the OpenVPN Access Server dashboard

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.

Enabling custom OpenVPN DNS addresses

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.

Setting custom OpenVPN DNS addresses

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

Updating the server settings

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.

Logging in to OpenVPN Access Server

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.

Downloading the .ovpn config file and client app

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.

Connecting to the OpenVPN server

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!

Source:
https://adamtheautomator.com/openvpn-in-docker/