GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> OpenVPN

So richten Sie einen OpenVPN-Server unter Ubuntu 22.04 ein und konfigurieren ihn

Einführung

Ein Virtual Private Network (VPN) ermöglicht es Ihnen, nicht vertrauenswürdige Netzwerke zu durchqueren, als ob Sie sich in einem privaten Netzwerk befänden. Es gibt Ihnen die Freiheit, sicher von Ihrem Smartphone oder Laptop aus auf das Internet zuzugreifen, wenn Sie mit einem nicht vertrauenswürdigen Netzwerk verbunden sind, wie dem WLAN in einem Hotel oder Café.

In Kombination mit HTTPS-Verbindungen können Sie mit diesem Setup Ihre drahtlosen Anmeldungen und Transaktionen sichern. Sie können geografische Beschränkungen und Zensur umgehen und Ihren Standort sowie unverschlüsselten HTTP-Datenverkehr vor nicht vertrauenswürdigen Netzwerken schützen.

OpenVPN ist eine Open-Source-VPN-Lösung mit vollem Funktionsumfang für Transport Layer Security (TLS), die eine Vielzahl von Konfigurationen unterstützt. In diesem Tutorial richten Sie OpenVPN auf einem Ubuntu 22.04-Server ein und konfigurieren es dann so, dass es von einem Client-Computer aus zugänglich ist.

Hinweis: Wenn Sie vorhaben, einen OpenVPN-Server auf einem DigitalOcean-Droplet einzurichten, beachten Sie, dass wir, wie viele Hosting-Anbieter, Gebühren für Bandbreitenüberschreitungen erheben. Achten Sie daher bitte darauf, wie viel Datenverkehr Ihr Server verarbeitet.

Weitere Informationen finden Sie auf dieser Seite.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein Ubuntu 22.04-Server mit einem sudo-Nicht-Root-Benutzer und einer aktivierten Firewall. Um dies einzurichten, können Sie unserem Tutorial Initial Server Setup with Ubuntu 22.04 folgen. Wir werden dies als den OpenVPN-Server bezeichnen in diesem Handbuch.
  • Ein separater Ubuntu 22.04-Server, der als private Zertifizierungsstelle (CA) eingerichtet ist und im Folgenden als CA-Server bezeichnet wird in diesem Leitfaden. Nachdem Sie die Schritte aus der Anleitung zur Ersteinrichtung des Servers auf diesem Server ausgeführt haben, können Sie die Schritte 1 bis 3 unserer Anleitung zum Einrichten und Konfigurieren einer Zertifizierungsstelle (CA) unter Ubuntu 22.04 befolgen, um dies zu erreichen.

Hinweis: Obwohl es technisch möglich ist, Ihren OpenVPN-Server oder Ihren lokalen Computer als CA zu verwenden, wird dies nicht empfohlen, da es Ihr VPN für einige Sicherheitslücken öffnet. Gemäß der offiziellen OpenVPN-Dokumentation sollten Sie Ihre Zertifizierungsstelle auf einem eigenständigen Computer platzieren, der für das Importieren und Signieren von Zertifikatanforderungen vorgesehen ist. Aus diesem Grund geht diese Anleitung davon aus, dass sich Ihre Zertifizierungsstelle auf einem separaten Ubuntu 22.04-Server befindet, der auch einen Nicht-Root-Benutzer mit sudo-Berechtigungen und einer aktivierten Basis-Firewall hat.

Darüber hinaus benötigen Sie einen Client-Computer, mit dem Sie sich mit Ihrem OpenVPN-Server verbinden. In dieser Anleitung nennen wir dies den OpenVPN-Client . Für die Zwecke dieses Tutorials wird empfohlen, dass Sie Ihren lokalen Computer als OpenVPN-Client verwenden.

Wenn diese Voraussetzungen erfüllt sind, können Sie mit der Einrichtung und Konfiguration eines OpenVPN-Servers unter Ubuntu 22.04 beginnen.

Hinweis: Bitte beachten Sie, dass Sie beim Deaktivieren der Kennwortauthentifizierung während der Konfiguration dieser Server später in diesem Handbuch beim Übertragen von Dateien zwischen ihnen auf Schwierigkeiten stoßen können. Um dieses Problem zu beheben, können Sie die Kennwortauthentifizierung auf jedem Server erneut aktivieren. Alternativ könnten Sie für jeden Server ein SSH-Schlüsselpaar generieren und dann den öffentlichen SSH-Schlüssel des OpenVPN-Servers zu den authorized_keys der CA-Maschine hinzufügen Datei und umgekehrt. Siehe So richten Sie SSH-Schlüssel unter Ubuntu 22.04 ein, um Anweisungen zur Durchführung einer dieser Lösungen zu erhalten.

Schritt 1 – Installation von OpenVPN und Easy-RSA

Der erste Schritt in diesem Tutorial ist die Installation von OpenVPN und Easy-RSA. Easy-RSA ist ein Verwaltungstool für die Public-Key-Infrastruktur (PKI), das Sie auf dem OpenVPN-Server verwenden, um eine Zertifikatsanforderung zu generieren, die Sie dann auf dem CA-Server verifizieren und signieren.

Aktualisieren Sie zunächst den Paketindex Ihres OpenVPN-Servers und installieren Sie OpenVPN und Easy-RSA. Beide Pakete sind in den Standard-Repositorys von Ubuntu verfügbar, sodass Sie apt verwenden können für die Installation:

  1. sudo apt update
  2. sudo apt install openvpn easy-rsa

Als Nächstes müssen Sie als Ihr Nicht-Root-Benutzer ein neues Verzeichnis auf dem OpenVPN-Server mit dem Namen ~/easy-rsa erstellen :

  1. mkdir ~/easy-rsa

Jetzt müssen Sie einen Symlink von easyrsa erstellen Skript, das das Paket in ~/easy-rsa installiert hat Verzeichnis, das Sie gerade erstellt haben:

  1. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Hinweis: Während andere Anleitungen Sie möglicherweise anweisen, die Datei easy-rsa zu kopieren package-Dateien in Ihr PKI-Verzeichnis, verwendet dieses Tutorial einen Symlink-Ansatz. Daher werden alle Aktualisierungen von easy-rsa Paket wird automatisch in den Skripten Ihrer PKI widergespiegelt.

Stellen Sie schließlich sicher, dass der Eigentümer des Verzeichnisses Ihr Nicht-Root-Benutzer sudo ist, und beschränken Sie den Zugriff auf diesen Benutzer mit chmod :

  1. sudo chown sammy ~/easy-rsa
  2. chmod 700 ~/easy-rsa

Sobald diese Programme installiert und an die richtigen Stellen auf Ihrem System verschoben wurden, besteht der nächste Schritt darin, eine Public Key Infrastructure (PKI) auf dem OpenVPN-Server zu erstellen, damit Sie TLS-Zertifikate für Clients und andere Server anfordern und verwalten können sich mit Ihrem VPN verbinden.

Schritt 2 – Erstellen einer PKI für OpenVPN

Bevor Sie den privaten Schlüssel und das Zertifikat Ihres OpenVPN-Servers erstellen können, müssen Sie ein lokales Public Key Infrastructure-Verzeichnis auf Ihrem OpenVPN-Server erstellen. Sie verwenden dieses Verzeichnis, um die Zertifikatsanforderungen des Servers und der Clients zu verwalten, anstatt sie direkt auf Ihrem CA-Server zu stellen.

Um ein PKI-Verzeichnis auf Ihrem OpenVPN-Server zu erstellen, müssen Sie eine Datei namens vars füllen mit einigen Standardwerten. Zuerst werden Sie cd in die easy-rsa Verzeichnis, dann erstellen und bearbeiten Sie die vars Datei mit nano oder Ihrem bevorzugten Texteditor.

  1. cd ~/easy-rsa
  2. nano vars

Sobald die Datei geöffnet ist, fügen Sie die folgenden zwei Zeilen ein:

~/easy-rsa/vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Dies sind die einzigen zwei Zeilen, die Sie in diesem vars benötigen Datei auf Ihrem OpenVPN-Server, da sie nicht als Zertifizierungsstelle verwendet wird. Sie stellen sicher, dass Ihre privaten Schlüssel und Zertifikatsanforderungen so konfiguriert sind, dass sie moderne Elliptic Curve Cryptography (ECC) verwenden, um Schlüssel und sichere Signaturen für Ihre Clients und den OpenVPN-Server zu generieren.

Wenn Sie Ihre OpenVPN- und CA-Server für die Verwendung von ECC konfigurieren, bedeutet dies, dass ein Client und ein Server, wenn sie versuchen, einen gemeinsamen symmetrischen Schlüssel einzurichten, Elliptic-Curve-Algorithmen für ihren Austausch verwenden können. Die Verwendung von ECC für einen Schlüsselaustausch ist erheblich schneller als die Verwendung von reinem Diffie-Hellman mit dem klassischen RSA-Algorithmus, da die Zahlen viel kleiner und die Berechnungen schneller sind.

Hintergrund: Wenn sich Clients mit OpenVPN verbinden, verwenden sie asymmetrische Verschlüsselung (auch bekannt als öffentlicher/privater Schlüssel), um einen TLS-Handshake durchzuführen. Bei der Übertragung von verschlüsseltem VPN-Datenverkehr verwenden der Server und die Clients jedoch eine symmetrische Verschlüsselung, die auch als Shared-Key-Verschlüsselung bezeichnet wird.

Bei der symmetrischen Verschlüsselung ist der Rechenaufwand viel geringer als bei der asymmetrischen:Die verwendeten Zahlen sind viel kleiner, und moderne CPUs integrieren Anweisungen, um optimierte symmetrische Verschlüsselungsoperationen durchzuführen. Um von asymmetrischer zu symmetrischer Verschlüsselung zu wechseln, verwenden der OpenVPN-Server und -Client den Elliptic Curve Diffie-Hellman (ECDH)-Algorithmus, um sich so schnell wie möglich auf einen gemeinsamen geheimen Schlüssel zu einigen.

Nachdem Sie die vars ausgefüllt haben Datei können Sie mit der Erstellung des PKI-Verzeichnisses fortfahren. Führen Sie dazu easyrsa aus Skript mit dem init-pki Möglichkeit. Obwohl Sie diesen Befehl bereits als Teil der Voraussetzungen auf dem CA-Server ausgeführt haben, ist es notwendig, ihn hier auszuführen, da Ihr OpenVPN-Server und Ihr CA-Server separate PKI-Verzeichnisse haben:

  1. ./easyrsa init-pki

Beachten Sie, dass auf Ihrem OpenVPN-Server keine Zertifizierungsstelle erstellt werden muss. Ihr CA-Server ist allein verantwortlich für das Validieren und Signieren von Zertifikaten. Die PKI auf Ihrem VPN-Server wird nur als bequemer und zentraler Ort zum Speichern von Zertifikatanforderungen und öffentlichen Zertifikaten verwendet.

Nachdem Sie Ihre PKI auf dem OpenVPN-Server initialisiert haben, können Sie mit dem nächsten Schritt fortfahren, nämlich dem Erstellen einer OpenVPN-Server-Zertifikatsanforderung und eines privaten Schlüssels.

Schritt 3 – Erstellen einer OpenVPN-Server-Zertifikatsanforderung und eines privaten Schlüssels

Nachdem auf Ihrem OpenVPN-Server nun alle Voraussetzungen installiert sind, besteht der nächste Schritt darin, einen privaten Schlüssel und eine Certificate Signing Request (CSR) auf Ihrem OpenVPN-Server zu generieren. Danach übertragen Sie die Anforderung zum Signieren an Ihre Zertifizierungsstelle und erstellen das erforderliche Zertifikat. Sobald Sie ein signiertes Zertifikat haben, übertragen Sie es zurück auf den OpenVPN-Server und installieren es für die Verwendung durch den Server.

Navigieren Sie zunächst zu ~/easy-rsa Verzeichnis auf Ihrem OpenVPN-Server als Nicht-Root-Benutzer:

  1. cd ~/easy-rsa

Jetzt rufen Sie easyrsa auf mit dem gen-req Option gefolgt von einem Common Name (CN) für die Maschine. Der CN kann beliebig sein, aber es kann hilfreich sein, ihn beschreibend zu machen. In diesem Tutorial ist der CN des OpenVPN-Servers server . Achten Sie darauf, den nopass einzuschließen Möglichkeit auch. Andernfalls wird die Anforderungsdatei mit einem Kennwort geschützt, was später zu Berechtigungsproblemen führen kann.

Hinweis: Wenn Sie einen anderen Namen als server wählen Hier müssen Sie einige der folgenden Anweisungen anpassen. Zum Beispiel beim Kopieren der generierten Dateien in die /etc/openvpn Verzeichnis, müssen Sie die richtigen Namen ersetzen. Sie müssen auch die /etc/openvpn/server.conf ändern später so, dass sie auf die richtige .crt verweist und .key Dateien.

  1. ./easyrsa gen-req server nopass
OutputCommon Name (eg: your user, host, or server name) [server]:
 
Keypair and certificate request completed. Your files are:
req: /home/sammy/easy-rsa/pki/reqs/server.req
key: /home/sammy/easy-rsa/pki/private/server.key

Dadurch werden ein privater Schlüssel für den Server und eine Zertifikatsanforderungsdatei mit dem Namen server.req erstellt . Kopieren Sie den Serverschlüssel nach /etc/openvpn/server Verzeichnis:

  1. sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

Nachdem Sie diese Schritte ausgeführt haben, haben Sie erfolgreich einen privaten Schlüssel für Ihren OpenVPN-Server erstellt. Sie haben auch einen Certificate Signing Request für den OpenVPN-Server generiert. Die CSR ist jetzt bereit zum Signieren durch Ihre Zertifizierungsstelle. Im nächsten Abschnitt dieses Tutorials erfahren Sie, wie Sie eine CSR mit dem privaten Schlüssel Ihres CA-Servers signieren.

Schritt 4 – Signieren der Zertifikatsanforderung des OpenVPN-Servers

Im vorherigen Schritt haben Sie eine Certificate Signing Request (CSR) und einen privaten Schlüssel für den OpenVPN-Server erstellt. Nun muss der CA-Server den server kennen Zertifikat und validieren Sie es. Sobald die Zertifizierungsstelle das Zertifikat validiert und an den OpenVPN-Server zurückleitet, können Clients, die Ihrer Zertifizierungsstelle vertrauen, auch dem OpenVPN-Server vertrauen.

Verwenden Sie auf dem OpenVPN-Server als Nicht-Root-Benutzer SCP oder eine andere Übertragungsmethode, um server.req zu kopieren Zertifikatsanforderung an den CA-Server zum Signieren:

  1. scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

Wenn Sie das vorausgesetzte Tutorial How To Set Up and Configure a Certificate Authority (CA) on Ubuntu 22.04 befolgt haben, besteht der nächste Schritt darin, sich beim CA-Server anzumelden als Nicht-Root-Benutzer, den Sie zum Verwalten Ihrer Zertifizierungsstelle erstellt haben. Sie werden cd zum ~/easy-rsa Verzeichnis, in dem Sie Ihren PK erstellt haben, und importieren Sie dann die Zertifikatsanforderung mit easyrsa Skript:

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/server.req server
Output. . .
The request has been successfully imported with a short name of: server
You may now use this name to perform signing operations on this request.

Als nächstes signieren Sie die Anfrage, indem Sie easyrsa ausführen Skript mit dem sign-req Option, gefolgt vom Anforderungstyp und dem Common Name. Der Anforderungstyp kann entweder client sein oder server . Da Sie mit der Zertifikatsanforderung des OpenVPN-Servers arbeiten, verwenden Sie unbedingt den server Anfragetyp:

  1. ./easyrsa sign-req server server

In der Ausgabe werden Sie aufgefordert, zu überprüfen, ob die Anfrage von einer vertrauenswürdigen Quelle stammt. Geben Sie yes ein drücken Sie dann ENTER bestätigen:

OutputYou are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
 
Request subject, to be signed as a server certificate for 3650 days:
 
subject=
commonName = server
 
 
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
. . .
Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

Beachten Sie, dass Sie an dieser Stelle nach Ihrem Passwort gefragt werden, wenn Sie Ihren privaten CA-Schlüssel verschlüsselt haben.

Wenn diese Schritte abgeschlossen sind, haben Sie die Zertifikatsanforderung des OpenVPN-Servers mit dem privaten Schlüssel des CA-Servers signiert. Die resultierende server.crt Die Datei enthält den öffentlichen Verschlüsselungsschlüssel des OpenVPN-Servers sowie eine Signatur vom CA-Server. Der Sinn der Signatur besteht darin, jedem, der dem CA-Server vertraut, mitzuteilen, dass er auch dem OpenVPN-Server vertrauen kann, wenn er sich mit ihm verbindet.

Um die Konfiguration der Zertifikate abzuschließen, kopieren Sie die server.crt und ca.crt Dateien vom CA-Server zum OpenVPN-Server:

  1. scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

Kopieren Sie nun zurück auf Ihrem OpenVPN-Server die Dateien von /tmp nach /etc/openvpn/server :

  1. sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Jetzt ist Ihr OpenVPN-Server fast bereit, Verbindungen anzunehmen. Im nächsten Schritt führen Sie einige zusätzliche Schritte durch, um die Sicherheit des Servers zu erhöhen.

Schritt 5 – Konfiguration von OpenVPN-Verschlüsselungsmaterial

Fügen Sie für eine zusätzliche Sicherheitsebene einen zusätzlichen gemeinsamen geheimen Schlüssel hinzu, den der Server und alle Clients mit OpenVPNs tls-crypt verwenden Richtlinie. Diese Option wird verwendet, um das TLS-Zertifikat zu verschleiern, das verwendet wird, wenn sich ein Server und ein Client anfänglich miteinander verbinden. Es wird auch vom OpenVPN-Server verwendet, um eingehende Pakete schnell zu überprüfen:Wenn ein Paket mit dem Pre-Shared Key signiert ist, verarbeitet der Server es; Wenn es nicht signiert ist, weiß der Server, dass es aus einer nicht vertrauenswürdigen Quelle stammt, und kann es verwerfen, ohne zusätzliche Entschlüsselungsarbeiten durchführen zu müssen.

Diese Option hilft sicherzustellen, dass Ihr OpenVPN-Server nicht authentifizierten Datenverkehr, Port-Scans und Denial-of-Service-Angriffe bewältigen kann, die Serverressourcen binden können. Es macht es auch schwieriger, OpenVPN-Netzwerkverkehr zu identifizieren.

Um die tls-crypt zu generieren Pre-Shared Key, führen Sie Folgendes auf dem OpenVPN-Server in ~/easy-rsa aus Verzeichnis:

  1. cd ~/easy-rsa
  2. openvpn --genkey secret ta.key

Das Ergebnis ist eine Datei namens ta.key . Kopieren Sie es nach /etc/openvpn/server/ Verzeichnis:

  1. sudo cp ta.key /etc/openvpn/server

Wenn diese Dateien auf dem OpenVPN-Server vorhanden sind, können Sie Client-Zertifikate und Schlüsseldateien für Ihre Benutzer erstellen, die Sie verwenden, um sich mit dem VPN zu verbinden.

Schritt 6 – Client-Zertifikat und Schlüsselpaar generieren

Obwohl Sie auf Ihrem Client-Computer einen privaten Schlüssel und eine Zertifikatsanforderung generieren und diese dann zum Signieren an die Zertifizierungsstelle senden können, beschreibt dieser Leitfaden einen Prozess zum Generieren der Zertifikatsanforderung auf dem OpenVPN-Server. Der Vorteil dieses Ansatzes besteht darin, dass Sie ein Skript erstellen können, das automatisch Client-Konfigurationsdateien generiert, die alle erforderlichen Schlüssel und Zertifikate enthalten. Dadurch vermeiden Sie die Übertragung von Schlüsseln, Zertifikaten und Konfigurationsdateien an Clients und optimieren den VPN-Beitrittsprozess.

Für dieses Handbuch generieren Sie ein einzelnes Paar aus Clientschlüssel und Zertifikat. Wenn Sie mehr als einen Kunden haben, können Sie diesen Vorgang für jeden einzelnen wiederholen. Beachten Sie jedoch, dass Sie für jeden Client einen eindeutigen Namenswert an das Skript übergeben müssen. In diesem Tutorial wird das erste Zertifikat/Schlüsselpaar als client1 bezeichnet .

Erstellen Sie zunächst eine Verzeichnisstruktur in Ihrem Home-Verzeichnis, um das Client-Zertifikat und die Schlüsseldateien zu speichern:

  1. mkdir -p ~/client-configs/keys

Da Sie die Zertifikats-/Schlüsselpaare und Konfigurationsdateien Ihrer Clients in diesem Verzeichnis speichern, sollten Sie seine Berechtigungen jetzt als Sicherheitsmaßnahme sperren:

  1. chmod -R 700 ~/client-configs

Navigieren Sie als Nächstes zurück zum EasyRSA-Verzeichnis und führen Sie easyrsa aus Skript mit dem gen-req und nopass Optionen, zusammen mit dem allgemeinen Namen für den Client:

  1. cd ~/easy-rsa
  2. ./easyrsa gen-req client1 nopass

Drücken Sie ENTER um den gemeinsamen Namen zu bestätigen. Kopieren Sie dann client1.key Datei in die ~/client-configs/keys/ Verzeichnis, das Sie zuvor erstellt haben:

  1. cp pki/private/client1.key ~/client-configs/keys/

Übertragen Sie als nächstes die client1.req Datei mit einer sicheren Methode auf Ihren CA-Server:

  1. scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

Melden Sie sich jetzt bei Ihrem CA-Server an. Navigieren Sie dann zum EasyRSA-Verzeichnis und importieren Sie die Zertifikatsanforderung:

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/client1.req client1

Als nächstes signieren Sie die Anfrage auf die gleiche Weise wie im vorherigen Schritt für den Server. Achten Sie diesmal jedoch darauf, den client anzugeben Anfragetyp:

  1. ./easyrsa sign-req client client1

Wenn Sie dazu aufgefordert werden, geben Sie yes ein um zu bestätigen, dass Sie beabsichtigen, die Zertifikatsanforderung zu signieren und dass sie von einer vertrauenswürdigen Quelle stammt:

OutputType the word 'yes' to continue, or any other input to abort.
Confirm request details: yes

Wenn Sie Ihren CA-Schlüssel verschlüsselt haben, werden Sie hier erneut zur Eingabe Ihres Passworts aufgefordert.

Dadurch wird eine Client-Zertifikatsdatei mit dem Namen client1.crt erstellt . Übertragen Sie diese Datei zurück auf den Server:

  1. scp pki/issued/client1.crt sammy@your_server_ip:/tmp

Kopieren Sie auf Ihrem OpenVPN-Server das Client-Zertifikat nach ~/client-configs/keys/ Verzeichnis:

  1. cp /tmp/client1.crt ~/client-configs/keys/

Als nächstes kopieren Sie die ca.crt und ta.key Dateien in ~/client-configs/keys/ Verzeichnis und legen Sie die entsprechenden Berechtigungen für Ihren sudo-Benutzer fest:

  1. cp ~/easy-rsa/ta.key ~/client-configs/keys/
  2. sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
  3. sudo chown sammy.sammy ~/client-configs/keys/*

Damit sind alle Zertifikate und Schlüssel Ihres Servers und Clients generiert und in den entsprechenden Verzeichnissen auf Ihrem OpenVPN-Server gespeichert. Es gibt noch einige Aktionen, die mit diesen Dateien durchgeführt werden müssen, aber diese werden in einem späteren Schritt folgen. Jetzt können Sie mit der Konfiguration von OpenVPN fortfahren.

Schritt 7 – Konfigurieren von OpenVPN

Wie viele andere weit verbreitete Open-Source-Tools bietet OpenVPN zahlreiche Konfigurationsoptionen, mit denen Sie Ihren Server an Ihre spezifischen Anforderungen anpassen können. In diesem Abschnitt geben wir Anweisungen zum Einrichten einer OpenVPN-Serverkonfiguration basierend auf einer der Beispielkonfigurationsdateien, die in der Dokumentation dieser Software enthalten sind.

Kopieren Sie zuerst das Beispiel server.conf Datei als Ausgangspunkt für Ihre eigene Konfigurationsdatei:

  1. sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/

Öffnen Sie die neue Datei zum Bearbeiten mit nano oder den Texteditor Ihrer Wahl:

  1. sudo nano /etc/openvpn/server/server.conf

Sie müssen einige Zeilen in dieser Datei ändern. Suchen Sie zuerst den HMAC Abschnitt der Konfiguration, indem Sie nach tls-auth suchen Richtlinie. Diese Zeile ist standardmäßig aktiviert. Kommentieren Sie es aus, indem Sie ein ; hinzufügen zum Zeilenanfang. Fügen Sie danach eine neue Zeile hinzu, die den Wert tls-crypt ta.key enthält nur:

/etc/openvpn/server/server.conf
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key

Suchen Sie als Nächstes den Abschnitt über kryptografische Chiffren, indem Sie nach cipher suchen Linien. Der Standardwert ist auf AES-256-CBC gesetzt , jedoch der AES-256-GCM cipher bietet ein besseres Maß an Verschlüsselung und Leistung und wird von aktuellen OpenVPN-Clients gut unterstützt. Kommentieren Sie den Standardwert aus, indem Sie ein ; hinzufügen Zeichen am Anfang dieser Zeile und fügen Sie danach eine weitere Zeile hinzu, die den aktualisierten Wert von AES-256-GCM enthält :

/etc/openvpn/server/server.conf
;cipher AES-256-CBC
cipher AES-256-GCM

Fügen Sie direkt nach dieser Zeile ein auth hinzu Direktive zum Auswählen des HMAC-Message-Digest-Algorithmus. Dazu SHA256 ist eine gute Wahl:

/etc/openvpn/server/server.conf
auth SHA256

Suchen Sie als Nächstes die Zeile, die ein dh enthält Direktive, die Diffie-Hellman-Parameter definiert. Da Sie alle Zertifikate für die Verwendung der Elliptic Curve Cryptography konfiguriert haben, ist keine Diffie-Hellman-Seed-Datei erforderlich. Kommentieren Sie die vorhandene Zeile aus, die wie folgt aussieht:dh dh2048.pem oder dh dh.pem . Der Dateiname für den Diffie-Hellman-Schlüssel kann sich von dem unterscheiden, der in der Beispiel-Serverkonfigurationsdatei aufgeführt ist. Fügen Sie danach eine Zeile mit dem Inhalt dh none hinzu :

/etc/openvpn/server/server.conf
;dh dh2048.pem
dh none

Als Nächstes sollte OpenVPN nach dem Start ohne Berechtigungen ausgeführt werden, also müssen Sie ihm mitteilen, dass es mit einem Benutzer nobody ausgeführt werden soll und Gruppe nogroup . Um dies zu aktivieren, suchen Sie den user nobody und kommentieren Sie ihn aus und group nogroup Zeilen durch Entfernen des ; Vorzeichen vom Anfang jeder Zeile:

/etc/openvpn/server/server.conf
user nobody
group nogroup

(Optional) Pushen Sie DNS-Änderungen, um den gesamten Datenverkehr über das VPN umzuleiten

Die obigen Einstellungen erstellen die VPN-Verbindung zwischen Ihrem Client und Server, erzwingen jedoch keine Verbindungen zur Verwendung des Tunnels. Wenn Sie das VPN verwenden möchten, um Ihren gesamten Client-Datenverkehr über das VPN zu leiten, möchten Sie wahrscheinlich einige zusätzliche Einstellungen auf die Client-Computer übertragen.

Suchen Sie zunächst die Zeile mit push "redirect-gateway def1 bypass-dhcp" und kommentieren Sie sie aus . Dadurch wird Ihr Client angewiesen, seinen gesamten Datenverkehr über Ihren OpenVPN-Server umzuleiten. Beachten Sie, dass die Aktivierung dieser Funktion zu Verbindungsproblemen mit anderen Netzwerkdiensten wie SSH:

führen kann /etc/openvpn/server/server.conf
push "redirect-gateway def1 bypass-dhcp"

Direkt unter dieser Zeile finden Sie die dhcp-option Sektion. Entfernen Sie erneut den ; vom Anfang beider Zeilen, um sie zu entkommentieren:

/etc/openvpn/server/server.conf
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Diese Zeilen weisen Ihren Client an, die kostenlosen OpenDNS-Resolver an den aufgelisteten IP-Adressen zu verwenden. Wenn Sie andere DNS-Resolver bevorzugen, können Sie diese anstelle der hervorgehobenen IPs ersetzen.

Dies hilft Clients bei der Neukonfiguration ihrer DNS-Einstellungen, um den VPN-Tunnel als Standard-Gateway zu verwenden.

(Optional) Passen Sie den Port und das Protokoll an

Standardmäßig verwendet der OpenVPN-Server Port 1194 und das UDP-Protokoll zum Akzeptieren von Client-Verbindungen. Wenn Sie aufgrund restriktiver Netzwerkumgebungen, in denen sich Ihre Clients möglicherweise befinden, einen anderen Port verwenden müssen, können Sie den port ändern Möglichkeit. Wenn Sie keine Webinhalte auf Ihrem OpenVPN-Server hosten, Port 443 ist eine beliebte Wahl, da es normalerweise durch Firewall-Regeln zugelassen wird.

Um OpenVPN so zu ändern, dass es auf Port 443 lauscht, öffnen Sie die server.conf Datei und suchen Sie die Zeile, die so aussieht:

/etc/openvpn/server/server.conf
port 1194

Bearbeiten Sie ihn so, dass der Port 443 lautet:

/etc/openvpn/server/server.conf
# Optional!
port 443

Oft ist das Protokoll auch auf diesen Port beschränkt. Wenn ja, suchen Sie das proto Zeile unter dem port Zeile und ändern Sie das Protokoll von udp zu tcp :

/etc/openvpn/server/server.conf
# Optional!
proto tcp

Wenn Sie tun Wenn Sie das Protokoll auf TCP umstellen, müssen Sie den explicit-exit-notify ändern Wert der Direktive von 1 auf 0 , da diese Direktive nur von UDP verwendet wird. Wenn Sie dies bei Verwendung von TCP nicht tun, werden Fehler beim Starten des OpenVPN-Dienstes verursacht.

Suchen Sie nach explicit-exit-notify Zeile am Ende der Datei und ändern Sie den Wert auf 0 :

/etc/openvpn/server/server.conf
# Optional!
explicit-exit-notify 0

Wenn Sie keinen anderen Port und kein anderes Protokoll verwenden müssen, lassen Sie diese Einstellungen am besten unverändert.

(Optional) Auf Nicht-Standard-Anmeldedaten verweisen

Wenn Sie während des ./easyrsa gen-req server einen anderen Namen gewählt haben Befehl zuvor, ändern Sie das cert und key Zeilen in der server.conf Konfigurationsdatei, sodass sie auf die entsprechende .crt zeigen und .key Dateien. Wenn Sie den Standardnamen verwendet haben, server , dies ist bereits richtig eingestellt:

/etc/openvpn/server/server.conf
cert server.crt
key server.key

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Sie haben nun die Konfiguration Ihrer allgemeinen OpenVPN-Einstellungen abgeschlossen. Im nächsten Schritt passen Sie die Netzwerkoptionen des Servers an.

Schritt 8 – Anpassen der OpenVPN-Server-Netzwerkkonfiguration

Es gibt einige Aspekte der Netzwerkkonfiguration des Servers, die optimiert werden müssen, damit OpenVPN den Datenverkehr korrekt durch das VPN leiten kann. Die erste davon ist IP-Weiterleitung , eine Methode zur Bestimmung, wohin IP-Datenverkehr geleitet werden soll. Dies ist wesentlich für die VPN-Funktionalität, die Ihr Server bereitstellt.

Um die standardmäßige IP-Weiterleitungseinstellung Ihres OpenVPN-Servers anzupassen, öffnen Sie die /etc/sysctl.conf Datei mit nano oder Ihren bevorzugten Editor:

  1. sudo nano /etc/sysctl.conf

Fügen Sie dann am Ende der Datei die folgende Zeile hinzu:

/etc/sysctl.conf
net.ipv4.ip_forward = 1

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Geben Sie Folgendes ein, um die Datei zu lesen und die neuen Werte für die aktuelle Sitzung zu laden:

  1. sudo sysctl -p
Outputnet.ipv4.ip_forward = 1

Jetzt kann Ihr OpenVPN-Server eingehenden Datenverkehr von einem Ethernet-Gerät an ein anderes weiterleiten. Diese Einstellung stellt sicher, dass der Server den Datenverkehr von Clients, die sich über die virtuelle VPN-Schnittstelle verbinden, über seine anderen physischen Ethernet-Geräte leiten kann. Diese Konfiguration leitet den gesamten Webverkehr von Ihrem Client über die IP-Adresse Ihres Servers und die öffentliche IP-Adresse Ihres Clients wird effektiv verborgen.

Im nächsten Schritt müssen Sie einige Firewall-Regeln konfigurieren, um sicherzustellen, dass der Datenverkehr zu und von Ihrem OpenVPN-Server ordnungsgemäß fließt.

Schritt 9 – Firewall-Konfiguration

Bisher haben Sie OpenVPN auf Ihrem Server installiert, konfiguriert und die Schlüssel und Zertifikate generiert, die Ihr Client für den Zugriff auf das VPN benötigt. Sie haben OpenVPN jedoch noch keine Anweisungen gegeben, wohin eingehender Webverkehr von Clients gesendet werden soll. Sie können festlegen, wie der Server den Client-Datenverkehr handhaben soll, indem Sie einige Firewall-Regeln und Routing-Konfigurationen festlegen.

Angenommen, Sie haben die Voraussetzungen zu Beginn dieses Tutorials erfüllt, sollten Sie ufw bereits haben auf Ihrem Server installiert und ausgeführt. Um OpenVPN durch die Firewall zuzulassen, müssen Sie Masquerading aktivieren, ein iptables-Konzept, das spontane dynamische Netzwerkadressübersetzung (NAT) bereitstellt, um Client-Verbindungen korrekt weiterzuleiten.

Bevor Sie die Firewall-Konfigurationsdatei öffnen, um die Masquerading-Regeln hinzuzufügen, müssen Sie zuerst die öffentliche Netzwerkschnittstelle Ihres Computers finden. Geben Sie dazu Folgendes ein:

  1. ip route list default

Ihre öffentliche Schnittstelle ist die Zeichenfolge in der Ausgabe dieses Befehls, die auf das Wort „dev“ folgt. Dieses Ergebnis zeigt beispielsweise die Schnittstelle mit dem Namen eth0 , die unten hervorgehoben wird:

Outputdefault via 159.65.160.1 dev eth0 proto static

Wenn Sie die Schnittstelle mit Ihrer Standardroute verknüpft haben, öffnen Sie /etc/ufw/before.rules Datei, um die relevante Konfiguration hinzuzufügen:

  1. sudo nano /etc/ufw/before.rules

UFW-Regeln werden normalerweise mit ufw hinzugefügt Befehl. Regeln, die in before.rules aufgeführt sind Datei werden jedoch gelesen und platziert, bevor die herkömmlichen UFW-Regeln geladen werden. Fügen Sie am Anfang der Datei die unten hervorgehobenen Zeilen hinzu. Dadurch wird die Standardrichtlinie für POSTROUTING festgelegt Kette im nat Tabelle und maskieren Sie jeglichen Datenverkehr, der vom VPN kommt. Denken Sie daran, eth0 im -A POSTROUTING Zeile unten mit der Schnittstelle, die Sie im obigen Befehl gefunden haben:

/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#
 
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
 
# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Save and close the file when you are finished.

Next, you need to tell UFW to allow forwarded packets by default as well. To do this, open the /etc/default/ufw file:

  1. sudo nano /etc/default/ufw

Inside, find the DEFAULT_FORWARD_POLICY directive and change the value from DROP to ACCEPT :

/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Save and close the file when you are finished.

Next, adjust the firewall itself to allow traffic to OpenVPN. If you did not change the port and protocol in the /etc/openvpn/server.conf file, you will need to open up UDP traffic to port 1194 . If you modified the port and/or protocol, substitute the values you selected here.

In case you forgot to add the SSH port when following the prerequisite tutorial, add it here as well:

  1. sudo ufw allow 1194/udp
  2. sudo ufw allow OpenSSH

Hinweis :If you are using a different firewall or have customized your UFW configuration, you may need to add additional firewall rules. For example, if you decide to tunnel all of your network traffic over the VPN connection, you will need to ensure that port 53 traffic is allowed for DNS requests, and ports like 80 and 443 for HTTP and HTTPS traffic respectively. If there are other protocols that you are using over the VPN then you will need to add rules for them as well.

After adding those rules, disable and re-enable UFW to restart it and load the changes from all of the files you’ve modified:

  1. sudo ufw disable
  2. sudo ufw enable

Your server is now configured to correctly handle OpenVPN traffic. With the firewall rules in place, you can start the OpenVPN service on the server.

Step 10 — Starting OpenVPN

OpenVPN runs as a systemd service, so you can use systemctl to manage it. You will configure OpenVPN to start up at boot so you can connect to your VPN at any time as long as your server is running. To do this, enable the OpenVPN service by adding it to systemctl :

  1. sudo systemctl -f enable [email protected]

Then start the OpenVPN service:

  1. sudo systemctl start [email protected]

Double check that the OpenVPN service is active with the following command. You should see active (running) in the output:

  1. sudo systemctl status [email protected]
Output● [email protected] - OpenVPN service for server
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-04-21 17:58:24 UTC; 6s ago
       Docs: man:openvpn(8)
             https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
             https://community.openvpn.net/openvpn/wiki/HOWTO
   Main PID: 144351 (openvpn)
     Status: "Initialization Sequence Completed"
      Tasks: 1 (limit: 4665)
     Memory: 1.8M
        CPU: 27ms
     CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
             └─144351 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf

. . .

You have now completed the server-side configuration for OpenVPN. Next, you will configure your client machine and connect to the OpenVPN Server.

Step 11 — Creating the Client Configuration Infrastructure

Creating configuration files for OpenVPN clients can be somewhat involved, as every client must have its own config and each must align with the settings outlined in the server’s configuration file. Rather than writing a single configuration file that can only be used on one client, this step outlines a process for building a client configuration infrastructure which you can use to generate config files on-the-fly. You will first create a “base” configuration file then build a script which will allow you to generate unique client config files, certificates, and keys as needed.

Get started by creating a new directory where you will store client configuration files within the client-configs directory you created earlier:

  1. mkdir -p ~/client-configs/files

Next, copy an example client configuration file into the client-configs directory to use as your base configuration:

  1. cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Open this new file using nano oder Ihren bevorzugten Texteditor:

  1. nano ~/client-configs/base.conf

Inside, locate the remote Richtlinie. This points the client to your OpenVPN server address — the public IP address of your OpenVPN server. If you decided to change the port that the OpenVPN server is listening on, you will also need to change 1194 to the port you selected:

~/client-configs/base.conf
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194
. . .

Be sure that the protocol matches the value you are using in the server configuration:

~/client-configs/base.conf
proto udp

Next, uncomment the user und group directives by removing the ; sign at the beginning of each line:

~/client-configs/base.conf
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Find the directives that set the ca , cert , and key . Comment out these directives since you will add the certs and keys within the file itself shortly:

~/client-configs/base.conf
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
;ca ca.crt
;cert client.crt
;key client.key

Similarly, comment out the tls-auth directive, as you will add ta.key directly into the client configuration file (and the server is set up to use tls-crypt ):

~/client-configs/base.conf
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

Mirror the cipher and auth settings that you set in the /etc/openvpn/server/server.conf file:

~/client-configs/base.conf
cipher AES-256-GCM
auth SHA256

Next, add the key-direction directive somewhere in the file. You must set this to “1” for the VPN to function correctly on the client machine:

~/client-configs/base.conf
key-direction 1

Finally, add a few commented out lines to handle various methods that Linux based VPN clients will use for DNS resolution. You’ll add two similar, but separate sets of commented out lines. The first set is for clients that do not use systemd-resolved to manage DNS. These clients rely on the resolvconf utility to update DNS information for Linux clients.

~/client-configs/base.conf
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf

Now add another set of lines for clients that use systemd-resolved for DNS resolution:

~/client-configs/base.conf
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .

Save and close the file when you are finished.

Later in Step 13 - Installing the Client Configuration step of this tutorial you will learn how to determine how DNS resolution works on Linux clients and which section to uncomment.

Next, you’ll create a script that will compile your base configuration with the relevant certificate, key, and encryption files and then place the generated configuration in the ~/client-configs/files Verzeichnis. Open a new file called make_config.sh within the ~/client-configs directory:

  1. nano ~/client-configs/make_config.sh

Inside, add the following content:

~/client-configs/make_config.sh
#!/bin/bash
 
# First argument: Client identifier
 
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
 
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-crypt>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-crypt>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Save and close the file when you are finished.

Before moving on, be sure to mark this file as executable by typing:

  1. chmod 700 ~/client-configs/make_config.sh

This script will make a copy of the base.conf file you made, collect all the certificate and key files you’ve created for your client, extract their contents, append them to the copy of the base configuration file, and export all of this content into a new client configuration file. This means that, rather than having to manage the client’s configuration, certificate, and key files separately, all the required information is stored in one place. The benefit of using this method is that if you ever need to add a client in the future, you can run this script to quickly create a new config file and ensure that all the important information is stored in a single, easy-to-access location.

Please note that any time you add a new client, you will need to generate new keys and certificates for it before you can run this script and generate its configuration file. You will get some practice using this script in the next step.

Step 12 — Generating Client Configurations

If you followed along with the guide, you created a client certificate and key named client1.crt and client1.key , respectively, in Step 6. You can generate a config file for these credentials by moving into your ~/client-configs directory and running the script you made at the end of the previous step:

  1. cd ~/client-configs
  2. ./make_config.sh client1

This will create a file named client1.ovpn in your ~/client-configs/files directory:

  1. ls ~/client-configs/files
Outputclient1.ovpn

You need to transfer this file to the device you plan to use as the client. For instance, this could be your local computer or a mobile device.

While the exact applications used to accomplish this transfer will depend on your device’s operating system and your personal preferences, a dependable and secure method is to use SFTP (SSH file transfer protocol) or SCP (Secure Copy) on the backend. This will transport your client’s VPN authentication files over an encrypted connection.

Here is an example SFTP command which you can run from your local computer (macOS or Linux). This will copy the client1.ovpn file you created in the last step to your home directory:

  1. sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Here are several tools and tutorials for securely transferring files from the OpenVPN server to a local computer:

  • WinSCP
  • How To Use SFTP to Securely Transfer Files with a Remote Server
  • How To Use Filezilla to Transfer and Manage Files Securely on your VPS

Step 13 — Installing the Client Configuration

This section covers how to install a client VPN profile on Windows, macOS, Linux, iOS, and Android. None of these client instructions are dependent on one another, so feel free to skip to whichever is applicable to your device.

The OpenVPN connection will have the same name as whatever you called the .ovpn Datei. In regards to this tutorial, this means that the connection is named client1.ovpn , aligning with the first client file you generated.

Windows

Installing

Download the OpenVPN client application for Windows from OpenVPN’s Downloads page. Choose the appropriate installer version for your version of Windows.

Hinweis :OpenVPN needs administrative privileges to install.

After installing OpenVPN, copy the .ovpn file to:

C:\Program Files\OpenVPN\config

When you launch OpenVPN, it will automatically locate the profile and make it available.

You must run OpenVPN as an administrator each time it’s used, even by administrative accounts. To do this without having to right-click and select Run as administrator every time you use the VPN, you must preset this from an administrative account. This also means that standard users will need to enter the administrator’s password to use OpenVPN. On the other hand, standard users can’t properly connect to the server unless the OpenVPN application on the client has admin rights, so the elevated privileges are necessary.

To set the OpenVPN application to always run as an administrator, right-click on its shortcut icon and go to Properties . At the bottom of the Compatibility tab, click the button to Change settings for all users . In the new window, check Run this program as an administrator .

Connecting

Each time you launch the OpenVPN GUI, Windows will ask if you want to allow the program to make changes to your computer. Klicken Sie auf Ja . Launching the OpenVPN client application only puts the applet in the system tray so that you can connect and disconnect the VPN as needed; it does not actually make the VPN connection.

Once OpenVPN is started, initiate a connection by going into the system tray applet and right-clicking on the OpenVPN applet icon. This opens the context menu. Select client1 at the top of the menu (that’s your client1.ovpn profile) and choose Connect .

A status window will open showing the log output while the connection is established, and a message will show once the client is connected.

Disconnect from the VPN the same way:Go into the system tray applet, right-click the OpenVPN applet icon, select the client profile and click Disconnect .

macOS

Installing

Tunnelblick is a free, open source OpenVPN client for macOS. You can download the latest disk image from the Tunnelblick Downloads page. Double-click the downloaded .dmg file and follow the prompts to install.

Towards the end of the installation process, Tunnelblick will ask if you have any configuration files. Answer I have configuration files and let Tunnelblick finish. Open a Finder window and double-click client1.ovpn . Tunnelblick will install the client profile. Administrative privileges are required.

Connecting

Launch Tunnelblick by double-clicking the Tunnelblick icon in the Applications Mappe. Once Tunnelblick has been launched, there will be a Tunnelblick icon in the menu bar at the top right of the screen for controlling connections. Click on the icon, and then the Connect client1 menu item to initiate the VPN connection. If you are using custom DNS settings with Tunnelblick, you may need check “Allow changes to manually-set network settings” in the advanced configuration dialog.

Linux

Installing

If you are using Linux, there are a variety of tools that you can use depending on your distribution. Your desktop environment or window manager might also include connection utilities.

The most universal way of connecting, however, is to just use the OpenVPN software.

On Ubuntu or Debian, you can install it just as you did on the server by typing:

  1. sudo apt update
  2. sudo apt install openvpn

On CentOS you can enable the EPEL repositories and then install it by typing:

  1. sudo dnf install epel-release
  2. sudo dnf install openvpn

Configuring Clients that use systemd-resolved

First determine if your system is using systemd-resolved to handle DNS resolution by checking the /etc/resolv.conf file:

  1. cat /etc/resolv.conf
Output# This file is managed by man:systemd-resolved(8). Do not edit.
. . .

nameserver 127.0.0.53
options edns0

If your system is configured to use systemd-resolved for DNS resolution, the IP address after the nameserver option will be 127.0.0.53 . There should also be comments in the file like the output that is shown that explain how systemd-resolved is managing the file. If you have a different IP address than 127.0.0.53 then chances are your system is not using systemd-resolved and you can go to the next section on configuring Linux clients that have an update-resolv-conf script instead.

To support these clients, first install the openvpn-systemd-resolved Paket. It provides scripts that will force systemd-resolved to use the VPN server for DNS resolution.

  1. sudo apt install openvpn-systemd-resolved

One that package is installed, configure the client to use it, and to send all DNS queries over the VPN interface. Open the client’s VPN file:

  1. nano client1.ovpn

Now uncomment the following lines that you added earlier:

client1.ovpn
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .

Configuring Clients that use update-resolv-conf

If your system is not using systemd-resolved to manage DNS, check to see if your distribution includes an /etc/openvpn/update-resolv-conf script instead:

  1. ls /etc/openvpn
Outputupdate-resolv-conf

If your client includes the update-resolv-conf file, then edit the OpenVPN client configuration file that you transferred earlier:

  1. nano client1.ovpn

Uncomment the three lines you added to adjust the DNS settings:

client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

If you are using CentOS, change the group directive from nogroup to nobody to match the distribution’s available groups:

client1.ovpn
group nobody

Save and close the file.

Connecting

Now, you can connect to the VPN by just pointing the openvpn command to the client configuration file:

  1. sudo openvpn --config client1.ovpn

This should connect you to your VPN.

Hinweis: If your client uses systemd-resolved to manage DNS, check the settings are applied correctly by running the systemd-resolve --status command like this:

  1. systemd-resolve --status tun0

You should see output like the following:

OutputLink 22 (tun0)
. . .
         DNS Servers: 208.67.222.222
                      208.67.220.220
          DNS Domain: ~.

If you see the IP addresses of the DNS servers that you configured on the OpenVPN server, along with the ~. setting for DNS Domain in the output, then you have correctly configured your client to use the VPN server’s DNS resolver. You can also check that you are sending DNS queries over the VPN by using a site like DNS leak test.com.

iOS

Installing

From the iTunes App Store, search for and install OpenVPN Connect, the official iOS OpenVPN client application. To transfer your iOS client configuration onto the device, connect it directly to a computer.

The process of completing the transfer with iTunes is outlined here. Open iTunes on the computer and click on iPhone> apps . Scroll down to the bottom to the File Sharing section and click the OpenVPN app. The blank window to the right, OpenVPN Documents , is for sharing files. Drag the .ovpn file to the OpenVPN Documents window.

Now launch the OpenVPN app on the iPhone. You will receive a notification that a new profile is ready to import. Tap the green plus sign to import it.

Connecting

OpenVPN is now ready to use with the new profile. Start the connection by sliding the Connect button to the On Position. Disconnect by sliding the same button to Off .

Hinweis :The VPN switch under Settings cannot be used to connect to the VPN. If you try, you will receive a notice to only connect using the OpenVPN app.

Android

Installing

Open the Google Play Store. Search for and install Android OpenVPN Connect, the official Android OpenVPN client application.

You can transfer the .ovpn profile by connecting the Android device to your computer by USB and copying the file over. Alternatively, if you have an SD card reader, you can remove the device’s SD card, copy the profile onto it and then insert the card back into the Android device.

Start the OpenVPN app and tap the FILE menu to import the profile.

Then navigate to the location of the saved profile (the screenshot uses /storage/emulated/0/openvpn ) and select your .ovpn Datei. Tap the IMPORT button to finish importing this profile.

Connecting Once the profile is added, you will see a screen like this:

To connect, tap the toggle button close to the profile you want to use. You’ll see real time stats of your connection and traffic being routed through your OpenVPN server:

To disconnect, just tap the toggle button on the top left once again. You will be prompted to confirm that you want to disconnect from your VPN.

Step 14 — Testing Your VPN Connection (Optional)

Hinweis: This method for testing your VPN connection will only work if you opted to route all your traffic through the VPN in Step 7 when you edited the server.conf file for OpenVPN.

Once everything is installed, a simple check confirms everything is working properly. Without having a VPN connection enabled, open a browser and go to DNSLeakTest.

The site will return the IP address assigned by your internet service provider and as you appear to the rest of the world. To check your DNS settings through the same website, click on Extended Test and it will tell you which DNS servers you are using.

Now connect the OpenVPN client to your Droplet’s VPN and refresh the browser. A completely different IP address (that of your VPN server) should now appear, and this is how you appear to the world. Again, DNSLeakTest’s Extended Test will check your DNS settings and confirm you are now using the DNS resolvers pushed by your VPN.

Step 15 — Revoking Client Certificates

Occasionally, you may need to revoke a client certificate to prevent further access to the OpenVPN server.

To do so, follow the example in the prerequisite tutorial on How to Set Up and Configure a Certificate Authority on Ubuntu 22.04 under the Revoking a Certificate Abschnitt.

Once you have revoked a certificate for a client using those instructions, you’ll need to copy the generated crl.pem file to your OpenVPN server in the /etc/openvpn/server directory:

  1. sudo cp /tmp/crl.pem /etc/openvpn/server/

Next, open the OpenVPN server configuration file:

  1. sudo nano /etc/openvpn/server/server.conf

At the bottom of the file, add the crl-verify option, which will instruct the OpenVPN server to check the certificate revocation list that you created each time a connection attempt is made:

/etc/openvpn/server/server.conf
crl-verify crl.pem

Save and close the file.

Finally, restart OpenVPN to implement the certificate revocation:

  1. sudo systemctl restart [email protected]

The client should no longer be able to successfully connect to the server using the old credential.

To revoke additional clients, follow this process:

  1. Revoke the certificate with the ./easyrsa revoke client_name Befehl
  2. Generate a new CRL
  3. Transfer the new crl.pem file to your OpenVPN server and copy it to the /etc/openvpn/server/ directory to overwrite the old list.
  4. Restart the OpenVPN service.

You can use this process to revoke any certificates that you’ve previously issued for your server.

Conclusion

You should now have a fully operational virtual private network running on your OpenVPN Server. You can browse the web and download content without worrying about malicious actors tracking your activity.

There are several steps you could take to customize your OpenVPN installation even further, such as configuring your client to connect to the VPN automatically or configuring client-specific rules and access policies. For these and other OpenVPN customizations, you should consult the official OpenVPN documentation.

To configure more clients, you only need to follow steps 6 and 11-13 for each additional device. To revoke access to clients, follow step 15 .


OpenVPN
  1. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  2. So installieren und konfigurieren Sie den Redis-Server in Ubuntu

  3. So richten Sie eine Zertifizierungsstelle unter Ubuntu 22.04 ein und konfigurieren sie

  4. So richten Sie NFS-Server und -Client unter Ubuntu 20.04 ein

  5. So installieren und konfigurieren Sie den OpenVPN-Server unter Ubuntu 20.04

So installieren und konfigurieren Sie DHCP unter Ubuntu 18.04

So installieren und konfigurieren Sie LAMP Server unter Ubuntu

So installieren und konfigurieren Sie den OpenLDAP-Server unter Ubuntu 16.04

So installieren und konfigurieren Sie VNC auf Ubuntu Server 20.04

So installieren und konfigurieren Sie Parse Server unter Ubuntu 20.04

So richten Sie ein VPN mit OpenVPN unter Ubuntu 18.04 ein und konfigurieren es