So erstellen Sie einen VPN-Server auf einem Raspberry Pi mit OpenVPN
Die Sicherheit des öffentlichen Internetzugangs lässt oft zu wünschen übrig. Ein virtuelles privates Netzwerk oder VPN (Virtual Private Network oder Virtual Private Network) kann eine gute Lösung sein, um von zu Hause aus eine Verbindung herstellen zu können, ohne Risiken einzugehen . Wenn Sie auch einen persönlichen VPN-Server konfigurieren, haben Sie über das Internet Zugriff auf das lokale Heimnetzwerk .
Um ein VPN zu erstellen, benötigen Sie lediglich einen Computer, der als Server fungiert. Dafür stellt der Raspberry Pi eine praktikable und wirtschaftliche Alternative dar. OpenVPN ist die Software, mit der Sie Ihren kleinen Computer in einen VPN-Server verwandeln können.
- Warum einen VPN-Server erstellen: Allgemeine Funktionen
- Vorteile der Erstellung eines VPN-Servers mit OpenVPN auf einem Raspberry Pi
- Was benötigen Sie, um einen VPN-Server auf einem Raspberry Pi zu installieren?
- Stellen Sie die IP-Adresse ein
- Mounten Sie einen VPN-Server mit OpenVPN auf einem Raspberry Pi: Schritt-für-Schritt-Anleitung
- Himbeer-Pi-Vorbereitung
- OpenVPN-Installation und einfache rsa-Dateierstellung
- Erstellen der Zertifikate und Schlüssel für OpenVPN
- Generieren der Konfigurationsdatei für den OpenVPN-Server
- Erstellen eines Skripts für den Zugriff auf das Internet mit einem Client
- Clients-Konfiguration schließen
- Warum lohnt es sich, einen VPN-Server auf einem Raspberry Pi zu haben?
Warum einen VPN-Server erstellen: Allgemeine Funktionen
Ein VPN, das in einem lokalen Netzwerk (LAN) installiert ist , um von außen darauf zugreifen zu können, stellt ein virtuelles Kommunikationsnetzwerk dar, in dem die Anforderungen und Antworten zwischen dem VPN-Server und den VPN-Clients (mit dem Server verbundene Geräte) übertragen werden Internet. Auf diese Weise können Sie mit dem LAN von jedem Internet verbinden , Zugang und Zugriff auf Daten auf sich , kommunizieren mit Geräten per Fernbedienung (Drucker oder Fax) oder die Internet – Verbindung des lokalen Netzwerks verwenden (home). Da die Verbindung zum VPN-Server verschlüsselt ist, ist das Surfen viel sicherer als vor unkontrolliertem Zugriff (z. B. öffentlichen drahtlosen Netzwerken).
Um diese sichere Verbindung zu einem VPN-Server herzustellen, muss ein VPN-Server mit einer permanenten Verbindung zum Internet auf einem Computer im lokalen Netzwerk installiert sein. Dieser Computer würde dann als Host des virtuellen Netzwerks fungieren. Mit der Client-Software werden die Geräte (Laptop, Smartphone, Tablet) mit dem Server verbunden, und eine verschlüsselte Verbindung (VPN-Tunnel) ermöglicht einem dieser Clients oder Terminals den Zugriff auf den VPN-Server von einem externen Netzwerk zum persönlichen LAN.
Dieser VPN-Tunnel führt vom Client zum VPN-Server, der die globale Internetverbindung umfasst, und ist somit eine viel sicherere Verbindung als jede übliche Internetverbindung . Für Hacker wäre es beispielsweise sehr schwierig, auf den Tunnel zuzugreifen, um den Datenverkehr auszuspionieren. Dies macht VPNs zur idealen Lösung in Fällen, in denen vertrauliche Daten wie Bankgeschäfte in offenen Netzwerken verarbeitet werden müssen.
Vorteile der Erstellung eines VPN-Servers mit OpenVPN auf einem Raspberry Pi
Gerade die geringen Kosten eines Raspberry Pi und seines Zubehörs machen diesen Minicomputer zu einem attraktiven Kandidaten für einen VPN-Server. Der Energieverbrauch, der den permanenten Betrieb im Computer impliziert, ist ebenfalls relativ gering. All dies macht diese Kombination zu einem Favoriten, obwohl einige Raspberry Pi-Alternativen bereits in der Zwischenzeit verfügbar sind.
OpenVPN ist seinerseits aus verschiedenen Gründen der ideale Architekt für einen VPN-Server, vor allem aber, weil es eine weit verbreitete kostenlose Software für VPN-Server ist, die eine große Anzahl von Betriebssystemen unterstützt (Windows, OS X, Android, iOS, Linux usw.) überzeugt durch seine hohe Stabilität und ist sehr einfach zu installieren.
Was benötigen Sie, um einen VPN-Server auf einem Raspberry Pi zu installieren?
Um die Schritte im folgenden Lernprogramm ausführen zu können, benötigen Sie die folgenden Komponenten:
- Raspberry Pi (Modell 2 oder höher)
- MicroSD-Speicherkarte mit installiertem Raspbien-Jessie-Betriebssystem.
- Stabile Internetverbindung (vorzugsweise über Kabel) und Stromversorgung (Micro-USB-Kabel).
Sie müssen auch entscheiden, ob Sie den VPN-Server direkt auf dem Raspberry Pi (mit dem ein Monitor, eine Maus und eine Tastatur verbunden sind) oder über einen SSH-Client installieren möchten, eine Software, die ein Secure Shell-Protokoll für die Remoteverbindung verwendet ein anderer Computer. Die Fernwartung des Servers mit SSH ist in den meisten Fällen die am meisten empfohlene Variante, da dies den Zugriff auf den VPN-Server von einem anderen Computer aus erleichtert.
Wenn Sie sich endgültig für diese zweite Option entscheiden, können Sie auf verschiedene sehr beliebte Alternativen zurückgreifen, um auf einen Raspberry Pi remote zuzugreifen und diesen zu betreiben, z. B. PuTTY, WinSCP (für Windows) oder OpenSSH (für Unix-Betriebssysteme). Um die Software mit dem Minicomputer zu verbinden, geben Sie die IPv4-Adresse des Raspberry Pi in den Client ein (das Gerät, von dem aus Sie auf den Raspberry Pi zugreifen möchten), und sie verbinden sich miteinander. Wenn Sie die Adresse 192.168.0.1 in den Browser eingeben, wird das Router-Menü Ihres Raspberry Pi geöffnet, in dem die IP-Adresse abgerufen wird.
Stellen Sie die IP-Adresse ein
Bei Verwendung eines SSH-Clients wird empfohlen , dem Raspberry Pi im lokalen Netzwerk eine statische private IP-Adresse zuzuweisen . Andernfalls müsste bei jedem Zugriff auf den Minicomputer über SSH eine neue temporäre dynamische Adresse gefunden und mit dem Client verbunden werden. Noch wichtiger ist es jedoch, den Raspberry Pi mit einer permanenten IP-Adresse zu verknüpfen, um OpenVPN verwenden zu können, da der VPN-Server im lokalen Netzwerk immer verfügbar und unter derselben Adresse sein muss , damit kontinuierlich auf ihn zugegriffen werden kann sowie muss dauerhaft im Internet verfügbar sein . Eine Internetverbindung hat jedoch nur eine dynamische öffentliche IP-Adresse, die sich nach 24 Stunden ändert, wodurch es für den Server schwierig wird, unter derselben IP-Adresse vollständig verfügbar zu sein. Wenn Ihre Internetverbindung keine öffentliche statische IP-Adresse hat, können Sie ein dynamisches DNS (DDNS) einrichten. In diesem anderen Artikel erfahren Sie, wie Sie Ihrem Raspberry Pi eine statische IP-Adresse zuweisen und einen DDNS konfigurieren. Wenn Sie möchten, dass Ihr Raspberry Pi als Server immer online ist, ist es wichtig, das entsprechende Update und die Sicherheit nicht zu vergessen.
Mounten Sie einen VPN-Server mit OpenVPN auf einem Raspberry Pi: Schritt-für-Schritt-Anleitung
Nach dieser Einführung und der Überprüfung der Anforderungen und Grundkonzepte können wir nun mit der Installation von OpenVPN beginnen.
Himbeer-Pi-Vorbereitung
Vor der Installation von OpenVPN müssen Sie zunächst das Terminal Ihres Raspberry Pi öffnen, um zu überprüfen, ob Updates für die bereits installierten Pakete ausstehen. Dies erfolgt mit den folgenden Befehlen:
sudo apt-get update sudo apt-get upgrade
Wenn Sie dies noch nicht getan haben, ist es jetzt an der Zeit, das Standardkennwort des Minicomputers zu ändern (Benutzername 😕 PI ?, Kennwort:? Himbeere?), Um unbefugten Zugriff auf das System sowohl lokal als auch über SSH von der zu vermeiden Netz.
Mit diesem Befehl öffnen wir die Konfiguration des Minicomputers, in der Sie ein sicheres Passwort erstellen können.
sudo raspi-config
OpenVPN-Installation und einfache rsa-Dateierstellung
Geben Sie den folgenden Befehl ein, um OpenVPN und Open SSL zu installieren, eine Software, die die Internetverbindung verschlüsselt:
sudo apt-get install openvpn openssl
Sobald OpenVPN installiert ist, kopieren wir die vordefinierten easy-rsa- Skripte in das OpenVPN-Konfigurationsverzeichnis. Sind hier die Zertifikate und Schlüssel gespeichert? mit einem Befehl, der nur mit Raspbien Jessie funktioniert (im vorherigen Wheezy-Betriebssystem befinden sich die Dateien in /usr/share/doc/openvpn/examples/easy-rsa/2.0):
sudo cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa
Öffnen Sie nun die Datei / etc / openvpn / easy-rsa / vars in der Konsole mit diesem Befehl, um sie zu konfigurieren:
sudo nano /etc/openvpn/easy-rsa/vars
Um die Einstellungen zu ändern, ersetzen Sie die Exportzeile EASY_RSA = “` pwd` ” durch
export EASY_RSA="/etc/openvpn/easy-rsa"
Die Länge des Schlüssels kann auch in dieser Datei geändert werden. Damit können Sie die Sicherheitsstufe der Verschlüsselung bestimmen. Ein Raspberry Pi 3 bietet eine ausreichende Leistung, um mühelos eine Schlüssellänge von 2048 Bit verarbeiten zu können. In Modell 2 hingegen verursacht diese Verschlüsselung schwerwiegende Leistungsverluste. In diesem Fall kann nur eine 1024-Bit-Verschlüsselung verwendet werden (abhängig von Ihrer Priorität: der Geschwindigkeit oder der Verschlüsselung der Verbindung). Eine 4096-Bit-Verschlüsselung ist dagegen nur in wenigen Fällen sinnvoll. Um die Länge des Schlüssels zu ändern, legen Sie die Anzahl der Bits in der Exportzeile KEY_SIZE = 2048 fest .
Jetzt kehren wir zur easy-rsa-Konfigurationsdatei zurück, in der Sie Superuser-Rechte benötigen, um die in den Umgebungsvariablen vorgenommenen Einstellungen zu integrieren. Um dies zu tun führen wir die Vars Skript mit dem Source – Befehl . Machen Sie abschließend die generierte Konfigurationsdatei mit einem symbolischen Link unter dem Namen openssl.cnf zugänglich :
cd /etc/openvpn/easy-rsa sudo su source vars ln -s openssl-1.0.0.cnf openssl.cnf
Erstellen der Zertifikate und Schlüssel für OpenVPN
Stellen Sie vor dem Erstellen neuer Schlüssel für OpenVPN sicher, dass keine alten vorhanden sind (Beispiele usw.). Dies geschieht mit folgendem Befehl:
./clean-all ./build-ca OpenVPN
Hier werden Sie aufgefordert, verschiedene Daten einzugeben, um das Zertifikat des Servers für Clients zu identifizieren (z. B. den aus zwei Buchstaben bestehenden Ländercode ). Sie können die Standardinformationen jedoch aufgrund ihrer geringen Bedeutung im Betrieb bestätigen, indem Sie die Eingabetaste drücken. Schließlich wird das Zertifikat für den Server generiert (das von der Zertifizierungsstelle signiert wird, um die Zuverlässigkeit zu gewährleisten):
./build-key-server server
Geben Sie den nationalen Code erneut ein und ignorieren Sie die anderen Felder. Bestätigen Sie abschließend die Erstellung eines Zertifikats durch Eingabe von? Und? (ja zweimal.
Nachdem die Zertifizierungsstelle und das Serverzertifikat erstellt wurden, müssen die VPN-Clients installiert werden . Dazu müssen Sie für jedes Gerät, mit dem Sie auf den VPN-Server zugreifen möchten, ein Zertifikat und einen Schlüssel erstellen. Der Vorgang ähnelt dem, den Sie zum Erstellen eines Zertifikats und eines Schlüssels für den Server ausgeführt haben (geben Sie den Ländercode ein und bestätigen Sie zweimal). Sie können jedem Gerät einen bestimmten Namen geben. Im folgenden Beispiel wurden drei Clients erstellt: “Laptop”, “Smartphone” und? Tablette?:
./build-key laptop ./build-key smartphone ./build-key tablet ?
Um jeden von ihnen mit einem Passwort zu schützen , wird anstelle der vorherigen Befehle Folgendes verwendet:
./build-key-pass laptop ./build-key-pass smartphone ./build-key-pass tablet ?
Die Erstellung von Zertifikaten und Schlüsseln endet mit dem Befehl zum Erstellen des DH-Schlüssels (Diffie-Hellman), den der Server für den Austausch von Schlüsseln verwendet:
./build-dh
Sobald dieser Vorgang abgeschlossen ist, der einige Minuten dauern kann, melden Sie sich als Benutzer mit Root-Berechtigung ab mit:
exit
Generieren der Konfigurationsdatei für den OpenVPN-Server
Es wurden Schlüssel erstellt, damit sich Server und Clients gegenseitig erkennen können. Dies wurde von der Zertifizierungsstelle bestätigt. Nun gehen wir zur Konfiguration des VPN-Servers.
Öffnen Sie die OpenVPN-Konfigurationsdatei :
sudo nano /etc/openvpn/openvpn.conf
Diese leere Datei muss mit den folgenden Befehlen vervollständigt werden:
dev tun proto udp port 1194
Im nächsten Schritt werden im easy-rsa- Verzeichnis ein SSL / TLS ( ca ) -Stammzertifikat , ein digitales Zertifikat ( cert ) und ein digitaler Schlüssel ( key ) erstellt . Vergessen Sie nicht, die richtige Bitverschlüsselung einzugeben (1024, 2048 usw.).
ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh2048.pem
Geben Sie nun an, dass der Raspberry Pi als VPN-Server verwendet wird. Benennen Sie dazu die IP-Adresse sowie die dem VPN zuzuweisende Netzwerkmaske:
server 10.8.0.0 255.255.255.0
Der Befehl redirect-gateway def1 bypass-dhcp teilt den Clients mit, dass der gesamte Datenverkehr über den VPN-Tunnel umgeleitet wird. Sie können diese Einstellung ausprobieren, wenn Ihnen die Sicherheit sehr wichtig ist. Wenn Sie jedoch auf Schwierigkeiten stoßen oder die Navigation langsamer wird, brechen Sie sie ab. Die unten aufgeführten Anweisungen müssen jedoch in jedem Fall verwendet werden, da Sie mit ihnen die öffentlichen DNS-Server benennen, mit denen der VPN-Server arbeiten wird. In den folgenden Zeilen werden als Beispiel ein IONOS-Server (217.237.150.188) und ein Google-Server (8.8.8.8) verwendet, die jedoch durch einen anderen DNS-Server ersetzt werden können, der die IPv4-Adresse angibt. Mit log-append / var / log / openvpn arrangieren Sie , dass die Serverereignisse in die Datei / var / log / openvpn geschrieben werden.
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 217.237.150.188" push "dhcp-option DNS 8.8.8.8" log-append /var/log/openvpn
Sobald der Server konfiguriert ist, können wir mit der Konfiguration der VPN-Clients fortfahren. Dazu erstellen wir eine Konfigurationsdatei, in die folgende Informationen eingegeben werden müssen:
persist-key persist-tun user nobody group nogroup status /var/log/openvpn-status.log verb 3 client-to-client comp-lzo
Schließlich stellen wir mit dem Client-zu-Client- Befehl fest, dass die VPN-Clients nicht nur den Server, sondern auch andere VPN-Clients erkennen und mit comp-lzo die LZO-Komprimierung aktiviert ist (was auch in der Konfigurationsdatei des angegeben werden muss Klient).
Wir speichern die Änderungen mit Strg + 0 und schließen den Editor mit Strg + X.
Erstellen eines Skripts für den Zugriff auf das Internet mit einem Client
Um über den VPN-Tunnel auf die Internetverbindung Ihres lokalen Netzwerks zuzugreifen , erstellen wir eine Umleitung. Dazu wird die Datei /etc/init.d/rpivpn erstellt :
Sudo nano /etc/init.d/rpivpn
Durch Kopieren der folgenden Kommentare in die Datei wird ein Header für eine Linux-Init-Datei erstellt:
#! /bin/sh ### BEGIN INIT INFO # Provides: rpivpn # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: VPN initialization script ### END INIT INFO
Als nächstes aktivieren wir das ip_forward-Umleitungsschreiben in der Datei a 1 auf folgende Weise:
echo 'echo "1" > /proc/sys/net/ipv4/ip_forward' | sudo -s
Sobald dies erledigt ist, erstellen wir eine Umleitung für VPN-Pakete mit dem iptables- Paketfilter :
iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT
Jetzt müssen wir nur noch die erforderlichen Befehle erstellen, mit denen VPN-Clients auf das LAN und das Internet zugreifen können. Dies wird mit folgenden Zeilen erreicht:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Wir speichern und schließen die Datei erneut.
Damit die Umleitung jedoch effektiv ist, müssen Sie dem Skript die entsprechenden Rechte zuweisen und es als Init-Datei installieren:
sudo chmod +x /etc/init.d/rpivpn sudo update-rc.d rpivpn defaults
Wir führen das Skript aus und starten den OpenVPN-Server neu:
sudo /etc/init.d/rpivpn sudo /etc/init.d/openvpn restart
Clients-Konfiguration schließen
Im letzten Schritt sammeln wir die Zertifikate und Schlüssel jedes Clients in einem eigenen Paket . Dafür brauchen wir wieder Superuser-Rechte. Nach der Zuweisung öffnen wir den Ordner / etc / openvpn / easy-rsa / keys / und legen die Konfigurationsdatei der Clients darin ab. Mit dem folgenden Befehl öffnen wir die Laptop- Client-Datei . Alle Clients sind auf die gleiche Weise konfiguriert. Das einzige, was geändert werden muss, ist der Gerätename:
sudo su cd /etc/openvpn/easy-rsa/keys nano laptop.ovpn
In der .ovpn-Datei des Clients wird Folgendes hinzugefügt:
dev tun client proto udp remote x.x.x.x 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert laptop.crt key laptop.key comp-lzo verb 3
Dieser Inhalt muss jedoch angepasst werden. In der vierten Zeile ersetzen wir die IP-Adresse des DDNS-Anbieters durch xxxx. Sie können hier jedoch auch eine statische öffentliche IP-Adresse angeben, falls Sie eine haben. Es folgt der Port, an dem der VPN-Server verfügbar sein soll.
Im dritten und vierten am Ende schreiben wir den Namen des Kunden (hier? Laptop?). Die Änderungen vorgenommen, speichern und schließen wir mit den bekannten Befehlen.
Schließlich komprimiert es die Konfigurationsdatei zusammen mit ihren Zertifikaten und Schlüsseln in eine Zip-Datei. Falls Sie noch kein Komprimierungspaket auf Ihrem Raspberry Pi installiert haben , können Sie dies mit dem folgenden Befehl tun:
apt-get install zip
Um die komprimierte Datei zu erstellen, verwenden wir den folgenden Befehl (achten Sie darauf, immer den richtigen Client-Namen zu verwenden ):
zip /home/pi/raspberry_laptop.zip ca.crt laptop.crt laptop.key laptop.ovpn
Jetzt müssen wir nur noch die Rechte der Dateien konfigurieren und beenden mit exit :
chown pi:pi /home/pi/raspberry_laptop.zip exit
Diese komprimierte Datei wird mit einem SCP- oder SFTP-Programm vom Raspberry Pi auf den Client übertragen und der Client wird auf dem Gerät konfiguriert. Dies wäre nun bereit, von jedem externen Zugriffspunkt aus auf das mit dem Client verbundene lokale Netzwerk und dessen Internetverbindung zuzugreifen.
Warum lohnt es sich, einen VPN-Server auf einem Raspberry Pi zu haben?
Das Erstellen eines eigenen VPN ist nicht so unerschwinglich, wie oft angenommen wird, da der geringe Stromverbrauch des Raspberry Pi die Kosten erheblich in Schach hält, ebenso wie der Preis für Serverkomponenten (Raspberry Pi, Micro-SD-Karte usw.) Sehr günstig. Hinzu kommen die vielen Vorteile der Installation eines VPN-Servers auf dem Minicomputer des 21. Jahrhunderts: Mit diesem Server können Sie von überall auf der Welt über eine verschlüsselte Verbindung auf Ihr lokales Netzwerk zugreifen, sodass Sie auch bei WiFi-Verbindungen sicher im Netzwerk navigieren können von fragwürdiger Qualität oder unter Verwendung von Mobiltelefondaten. Wenig mehr Sicherheit könnte eine mobile Internetverbindung bieten.