Einführung
Ein Virtual Private Network (VPN) verschlüsselt den gesamten Netzwerkverkehr, maskiert die Benutzer und schützt sie vor nicht vertrauenswürdigen Netzwerken. Es kann eine sichere Verbindung zu einem Unternehmensnetzwerk bereitstellen, geografische Beschränkungen umgehen und es Ihnen ermöglichen, mit öffentlichen Wi-Fi-Netzwerken im Internet zu surfen, während Ihre Daten privat bleiben.
OpenVPN ist eine Open-Source-SSL-VPN-Lösung mit vollem Funktionsumfang.
In diesem Tutorial erfahren Sie, wie Sie OpenVPN auf einem CentOS 7-Server einrichten und von einem Client-Rechner aus eine Verbindung zu OpenVPN herstellen.

Voraussetzungen
- Ein CentOS 7- oder CentOS 8-Server
- Ein Benutzerkonto mit Root-Zugriff (sudo)
- Zugriff auf die Befehlszeile/das Terminalfenster
- Eine Domain oder Subdomain, die zu Ihrem Server aufgelöst wird
- Ein Client-Rechner, von dem aus Sie sich mit dem OpenVPN-Server verbinden
Schritt 1:OpenVPN installieren
1. Aktualisieren Sie die CentOS-Repositorys und -Pakete, indem Sie Folgendes ausführen:
yum update -y
2. Sie können das OpenVPN-Paket nicht aus den standardmäßigen CentOS-Repositories herunterladen. OpenVPN ist jedoch im EPEL-Repository (Extra Packages for Enterprise Linux) verfügbar. Führen Sie den folgenden Befehl aus, um das EPEL-Repository zu aktivieren:
yum install epel-release -y

3. Aktualisieren Sie die Repositorys erneut:
yum update -y
4. Sie können OpenVPN nun mit dem Befehl installieren:
yum install -y openvpn

Schritt 2:Easy RSA installieren
Der nächste Schritt ist der Aufbau einer Public Key Infrastructure (PKI). Dazu müssen Sie easy RSA installieren , ein CLI-Dienstprogramm zum Erstellen und Verwalten einer PKI-Zertifizierungsstelle (CA).
Easy RSA hilft Ihnen, eine interne Zertifizierungsstelle (CA) einzurichten und SSL-Schlüsselpaare zu generieren, um die VPN-Verbindungen zu sichern.
1. Um das einfache RSA-Paket herunterzuladen, verwenden Sie wget
Befehl. Wenn Sie wget nicht auf Ihrem CenOS-System haben, installieren Sie es, indem Sie Folgendes ausführen:
yum install -y wget
2. Zum Zeitpunkt des Schreibens ist die neueste Version des CLI-Dienstprogramms 3.0.8, die wir herunterladen werden. Um eine andere Version zu verwenden, besuchen Sie die Release-Seite von easy RSA auf GitHub.
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.8.tar.gz

3. Extrahieren Sie als Nächstes das heruntergeladene Archiv:
tar -xf v3.0.8.tar.gz
4. Erstellen und verschieben Sie ein neues openvpn Verzeichnis:
cd /etc/openvpn/
5. Erstellen Sie dann ein Unterverzeichnis easy-rsa
unter dem Pfad /etc/openvpn
:
mkdir /etc/openvpn/easy-rsa
6. Verschieben Sie das extrahierte Verzeichnis nach /etc/openvpn/easy-rsa:
mv /root/easy-rsa-3.0.8 /etc/openvpn/easy-rsa
Um zu überprüfen, ob Sie alles erfolgreich von easy-rsa-3.0.8 verschoben haben wechseln Sie mit cd /etc/openvpn/easy-rsa
in easy-rsa und den Inhalt mit ls
auflisten . Sie sollten eine Liste mit Dateien und Ordnern sehen, wie im Bild unten.

Schritt 3:OpenVPN konfigurieren
Nachdem Sie OpenVPN und Easy RSA installiert haben, können Sie mit der Konfiguration des OpenVPN-Servers fortfahren.
Die Anweisungen in diesem Abschnitt helfen Ihnen bei der Einrichtung der Grundkonfiguration. Sie können es Ihren Bedürfnissen entsprechend ändern.
Bevor Sie einen der Befehle ausführen, stellen Sie sicher, dass Sie zum Stammverzeichnis zurückkehren. Geben Sie dazu cd
ein im Terminalfenster und drücken Sie Enter .
1. Der erste Schritt besteht darin, die Beispieldatei server.conf zu kopieren Datei aus dem Dokumentationsverzeichnis von OpenVPN:
cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn
Wenn Sie die OpenVPN-Beispielkonfigurationsdatei nicht finden können, suchen Sie mit find
nach ihrem Speicherort Befehl:
find / -name server.conf
2. Öffnen Sie anschließend die kopierte Konfigurationsdatei mit einem Texteditor Ihrer Wahl:
vi etc/openvpn/server.conf
Der Befehl öffnet die OpenVPN-Beispielkonfigurationsdatei. Die Kommentare in der Datei beginnen mit einem Hashtag # oder ein Semikolon ;
.

3. Um die Grundkonfiguration einzurichten, müssen Sie entkommentieren die folgenden Zeilen durch Entfernen der Semikolons.
topology subnet
(macht die OpenVPN-Installation als Subnetzwerk funktionsfähig)push "redirect-gateway def1 bypass-dhcp"
(weist den Client an, den Datenverkehr über den OpenVPN-Server umzuleiten)push "dhcp-option DNS 208.67.222.222"
(verwendet einen OpenDNS-Resolver, um sich mit OpenVPN zu verbinden)push "dhcp-option DNS 208.67.220.220"
(verwendet einen OpenDNS-Resolver, um sich mit OpenVPN zu verbinden)user nobody
(führt OpenVPN ohne Privilegien aus)group nobody
(führt OpenVPN ohne Privilegien aus)
4. Generieren Sie dann einen statischen Verschlüsselungsschlüssel, um die TLS-Authentifizierung zu aktivieren. Suchen Sie dazu die Zeile tls-auth ta.key 0
und kommentieren Sie es, indem Sie ;
hinzufügen vor. Fügen Sie dann darunter eine neue Zeile hinzu:
tls-crypt myvpn.tlsauth

5. Speichern und beenden Sie die Konfigurationsdatei.
6. Generieren Sie abschließend den in der Datei angegebenen statischen Verschlüsselungsschlüssel mit dem folgenden Befehl:
openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth
Schritt 4:Schlüssel und Zertifikate generieren
1. Erstellen Sie eine vars Konfigurationsdatei mit vars.example gespeichert in /easy-rsa/easyrsa3 Verzeichnis. Wechseln Sie in das genannte Verzeichnis mit:
cd /etc/openvpn/easy-rsa/easyrsa3
2. Sie können den Inhalt mit ls
auflisten Befehl, um zu überprüfen, ob Sie die vars.example haben Datei.

3. Kopieren Sie die Beispieldatei vars.example unter dem Namen vars :
cp vars.example vars
Wenn Sie die Dateien im Verzeichnis erneut auflisten, sollten Sie eine separate vars haben Datei, mit der Sie Easy RSA konfigurieren können.

4. Öffnen Sie die Variablen Datei in einem Texteditor Ihrer Wahl:
vi vars
5. Blättern Sie durch die Datei und suchen Sie die unten aufgeführten Zeilen.
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "[email protected]"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
6. Kommentieren Sie die Zeilen aus, indem Sie #
entfernen und ersetzen Sie die Standardwerte durch Ihre Informationen.
7. Suchen Sie dann die Zeile, die KEY_NAME angibt und ändern Sie ihn in "server"
:
export KEY_NAME="server"
8. Ändern Sie schließlich KEY_CN zu der Domain oder Subdomain, die zu Ihrem Server aufgelöst wird.
export KEY_CN=openvpn.yourdomain.com
9. Speichern und schließen Sie die Datei.
10. Bereinigen Sie alle vorherigen Schlüssel und generieren Sie die Zertifizierungsstelle:
./easyrsa clean-all

11. Jetzt können Sie mit dem Erstellen der Zertifizierungsstelle mit build-ca
fortfahren Skript. Führen Sie den Befehl aus:
./easyrsa build-ca
Sie werden aufgefordert, eine CA-Schlüssel-Passphrase und einen allgemeinen Namen für Ihre CA festzulegen.

12. Erstellen Sie einen Schlüssel und ein Zertifikat für den Server:
./easyrsa build-server-full server

13. Generieren Sie als Nächstes eine Diffie-Hellman-Schlüsselaustauschdatei, indem Sie Folgendes ausführen:
./easyrsa gen-dh

14. Außerdem benötigen Sie für jeden Client ein Zertifikat. Generieren Sie sie auf dem Server und kopieren Sie sie dann auf den Client-Rechner.
Mit dem folgenden Befehl erstellen wir ein Zertifikat und einen Schlüssel für client1 . Sie können den Befehl ändern, indem Sie einen Namen Ihrer Wahl verwenden.
./easyrsa build-client-full client1

15. Nachdem Sie die Schlüssel und Zertifikate generiert haben, kopieren Sie sie von pki in das openvpn Verzeichnis. Navigieren Sie dazu zum pki Verzeichnis durch Ausführen von:
cd /etc/openvpn/easy-rsa/easyrsa3/pki
Sie müssen insgesamt vier Dateien kopieren:
- ca.crt
- dh.pem
- ca.key
- server.key
Die ersten beiden Dateien (ca.crt und dh.pem ) werden im pki gespeichert Verzeichnis, während ca.key und server.key befinden sich in einem Unterverzeichnis pki/private .

Kopieren Sie daher ca.crt und dh.pem in das openvpn Verzeichnis zuerst:
cp ca.crt dh.pem /etc/openvpn
Wechseln Sie dann in das Unterverzeichnis private , und kopieren Sie ca.key und server.key durch Ausführen von:
cd private
cp ca.key server.key/etc/openvpn
Schritt 5:Firewall- und Routing-Konfiguration
Firewall-Regeln festlegen
1. Überprüfen Sie zunächst Ihre aktive Firewalld-Zone:
firewall-cmd --get-active-zones
Die Ausgabe zeigt Ihre Firewalld-Zone. Im Beispiel unten ist es öffentlich .

2. Fügen Sie das openvpn hinzu service in die Liste der Dienste, die Firewalld innerhalb der aktiven Zone zulässt. Die aktive Zone in unserem Beispiel ist öffentlich . Wenn Ihre aktive Zone vertrauenswürdig ist, ändern Sie den Befehl entsprechend.
firewall-cmd --zone=public --add-service openvpn
3. Als nächstes machen Sie die obigen Einstellungen dauerhaft, indem Sie den Befehl ausführen:
firewall-cmd --zone=public --add-service openvpn --permanent
4. Um zu überprüfen, ob der openvpn-Dienst hinzugefügt wurde, verwenden Sie:
firewall-cmd --list-services --zone=public

5. Fügen Sie dann der Laufzeitinstanz eine Maskerade hinzu:
firewall-cmd --add-masquerade
6. Und dauerhaft machen:
firewall-cmd --add-masquerade --permanent
7. Überprüfen Sie, ob die Maskerade hinzugefügt wurde, indem Sie Folgendes ausführen:
firewall-cmd --query-masquerade
Die Ausgabe sollte mit yes
antworten .

Routing der Konfiguration
Nachdem Sie die obigen Schritte ausgeführt haben, fahren Sie mit dem Routing zu Ihrem OpenVPN-Subnetz fort.
1. Erstellen Sie eine Variable, die die von Ihrem Server verwendete primäre Netzwerkschnittstelle darstellt. Im folgenden Befehl heißt die Variable VAR
. Sie können jedoch eine Variable unter dem Namen Ihrer Wahl erstellen.
VAR=$(ip route get 208.67.222.222 | awk 'NR==1 {print $(NF-2)}')
2. Als nächstes fügen Sie die Routing-Regel dauerhaft hinzu, indem Sie die oben erstellte Variable verwenden:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
3. Firewall neu laden, damit die Änderungen wirksam werden:
firewall-cmd --reload
4. Fahren Sie mit dem Weiterleiten des gesamten Webverkehrs vom Client an die IP-Adresse des Servers fort, indem Sie die IP-Weiterleitung aktivieren. Öffnen Sie die sysctl.conf Datei:
vi /etc/sysctl.conf
5. Fügen Sie am Anfang der Datei die folgende Zeile hinzu:
net.ipv4.ip_forward = 1
6. Starten Sie abschließend den Dienst neu:
systemctl restart network.service
Schritt 6:OpenVPN starten
1. Um den OpenVPN-Dienst zu starten, führen Sie den folgenden Befehl aus:
systemctl -f start [email protected]
2. Ermöglichen Sie es dann, beim Booten zu starten, indem Sie Folgendes ausführen:
systemctl -f enable [email protected]
3. Überprüfen Sie, ob der Dienst aktiv ist mit:
systemctl status [email protected]
Die Ausgabe sollte antworten, dass der OpenVPN-Dienst für den Server aktiv (läuft) ist .
Schritt 7:Konfigurieren Sie einen OpenVPN-Client
Wenn alles auf dem OpenVPN-Server eingerichtet ist, können Sie Ihren Client-Rechner konfigurieren und ihn mit dem Server verbinden.
Wie in Schritt 4 erwähnt, muss jeder Clientcomputer über lokale Kopien des CA-Zertifikats, des Clientschlüssels, des SSL-Zertifikats und des Verschlüsselungsschlüssels verfügen.
1. Suchen und kopieren Sie die folgenden Dateien vom Server auf den Client-Rechner:
- /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/client.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/private/client.key
- /etc/openvpn/myvpn.tlsauth
2. Erstellen Sie anschließend eine Konfigurationsdatei für den OpenVPN-Client unter dem Namen client.ovpn auf dem Client-Rechner:
vi client.ovpn
3. Fügen Sie der Datei folgenden Inhalt hinzu:
client
tls-client
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
tls-crypt /path/to/myvpn.tlsauth
remote-cert-eku "TLS Web Client Authentication"
proto udp
remote your_server_ip 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody
Stellen Sie sicher, dass Sie die fettgedruckten Teile durch Ihre respektierten Werte ersetzen.

4. Speichern und schließen Sie die Datei.
Schritt 8:Verbinden Sie einen Client mit OpenVPN
Die Anweisungen zum Verbinden mit OpenVPN unterscheiden sich je nach Betriebssystem Ihres Client-Rechners.
Für Linux-Benutzer
Führen Sie den folgenden Befehl aus, um eine Verbindung zu OpenVPN herzustellen:
openvpn --config /path/to/client.ovpn
Für Windows-Benutzer
1. Kopieren Sie zuerst die client.ovpn Konfigurationsdatei in C:Program FilesOpenVPNconfig Verzeichnis.
2. Laden Sie die OpenVPN-Anwendung herunter und installieren Sie sie. Den neuesten Build finden Sie auf der Download-Seite der OpenVPN-Community. Sobald Sie die Anwendung installiert haben, starten Sie OpenVPN.
3. Klicken Sie mit der rechten Maustaste auf das OpenVPN-Taskleistensymbol und wählen Sie Verbinden . Um diese Aufgabe auszuführen, benötigen Sie Administratorrechte.
Für macOS-Benutzer
Sie können sich von einem macOS-System mit Tunnelblick (einer grafischen Open-Source-Benutzeroberfläche für OpenVPN unter OS X und macOS) mit OpenVPN verbinden.
Stellen Sie vor dem Start von Tunnelblick sicher, dass Sie client.ovpn speichern Konfigurationsdatei im Verzeichnis ~/Library/Application Support/Tunnelblick/Configurations .