So führen Sie Ihren eigenen OpenVPN-Server auf einem Raspberry PI aus

Hallo zusammen!

In diesem kurzen Artikel werde ich erklären, wie Sie Ihren eigenen VPN-Server (Virtual Private Network) auf einem Raspberry PI mit OpenVPN einrichten. Nachdem wir den Server eingerichtet haben, richten wir einen Verschleierungsserver ein, um unseren Datenverkehr zu verschleiern und anzuzeigen, dass wir ein VPN verwenden. Dies wird uns helfen, einer Form der Zensur auszuweichen.

Warum ein VPN verwenden?

Lassen Sie uns zunächst darüber sprechen, warum Sie möglicherweise einen VPN-Server verwenden möchten:

  1. Vermeiden Sie Angriffe von Menschen in der Mitte. Wenn Sie einen böswilligen Benutzer in Ihrem lokalen Netzwerk haben - sogar Ihren Mitbewohner -, kann diese Person Ihren unverschlüsselten Datenverkehr überwachen und ihn manipulieren.
  2. Verstecken Sie Ihre Internetaktivität in meinem Fall vor Ihrem ISP (Internet Service Provider) oder Ihrer Universität.
  3. Entsperren Sie Dienste. Meine Universität blockiert alle UDP-Pakete (User Datagram Protocol). Dies bedeutet, dass ich keine Anwendung verwenden kann, die über UDP kommuniziert. Ich kann meinen E-Mail-Client nicht verwenden, keine Spiele spielen oder sogar Git verwenden!

Ich habe beschlossen, ein VPN in meinem Heim-Internet mit einem Raspberry Pi einzurichten. Auf diese Weise kann ich mich an der Universität mit meinem Heimnetzwerk verbinden. Wenn Sie einen VPN-Server in einem anderen Land benötigen, können Sie bei DigitalOcean einen virtuellen privaten Server für 5 USD / Monat kaufen. Sie können meinen Empfehlungslink verwenden, um 10 US-Dollar zu sparen - das sind zwei Monate kostenloses VPN. Aber Sie müssen es nicht verwenden, wenn Sie nicht wollen.

OpenVPN installieren

Dieser Schritt ist wirklich einfach, da wir ein Shell-Skript verwenden, um dies für Sie zu tun. Sie müssen also nur als nächstes „drücken“ und fertig sein.

Die Installation dauert abhängig von der von Ihnen gewählten Schlüsselgröße sehr lange. Bei meinem Raspberry Pi 3 Model B dauerte es ungefähr 3 Stunden.

Bitte gehen Sie in dieses Repository und folgen Sie den Anweisungen

Angristan / OpenVPN-Installation

OpenVPN-Installation - Richten Sie Ihren eigenen OpenVPN-Server unter Debian, Ubuntu, Fedora CentOS und Arch Linux github.com ein

Wenn Sie die IP-Adresse Ihres Servers nicht kennen, geben Sie einfach ein 0.0.0.0. Ich habe 443für den Port und TCP (Transmission Control Protocol) für das Protokoll gewählt.

Hinweis : Dies ist sehr wichtig, da meine Universität nur TCP / 80- und TCP / 443- Ports zulässt , der Rest ist so gut wie blockiert. Auch Obfsproxy funktioniert nur mit TCP, also stellen Sie sicher, dass Sie TCP gewählt haben !

Nach Abschluss des Skripts erhalten Sie eine .ovpn- Datei. Es kann in Ihren bevorzugten VPN-Client importiert werden, und alles sollte sofort funktionieren.

Verbindung testen

Importieren Sie die .ovpn-Datei in Ihren VPN-Client und ändern Sie die IP 0.0.0.0in die lokale IP Ihres Raspberry PI. Abhängig von Ihrer Netzwerkkonfiguration kann dies die Form haben 192.168.*.*.

Hinweis: Dies funktioniert nur, wenn Sie mit demselben WLAN verbunden sind wie der Pi.

Ich habe meinen Router so konfiguriert, dass der PI immer eine reservierte IP-Adresse erhält. Möglicherweise müssen Sie Ihre Router-Einstellungen überprüfen, wenn Sie etwas Ähnliches tun möchten.

Wenn die Verbindung erfolgreich ist, herzlichen Glückwunsch, Sie haben jetzt einen VPN-Server! Sie können jedoch noch nicht von außen darauf zugreifen.

Wenn Sie nur einen OpenVPN-Server ohne den Verschleierungs-Proxy möchten, können Sie zur Portweiterleitung springen .

Installation des Verschleierungsproxys

Obfs4 ist ein Scrambling-Proxy. Es verschleiert Ihren Internetverkehr so, dass er wie Lärm aussieht. Jemand, der Ihren Datenverkehr überwacht, weiß nicht genau, was Sie tun, und er schützt Sie vor aktiven Sondierungsangriffen, die von der Great Firewall of China verwendet werden.

Hinweis: Diese Methode funktioniert nicht, wenn Ihr Gegner nur Datenverkehr auf der Whitelist zulässt :(

Lassen Sie uns jetzt den Proxyserver installieren.

0. Installieren Sie das erforderliche Paket:

apt-get update && apt-get install obfs4proxy
  1. Erstellen Sie ein Verzeichnis, das die Konfiguration enthält.
sudo mkdir -p /var/lib/tor/pt_state/obfs4

2. Erstellen Sie die Konfigurationsdatei.

sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config

In die Konfigurationsdatei fügen Sie Folgendes ein:

TOR_PT_MANAGED_TRANSPORT_VER=1TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4TOR_PT_SERVER_TRANSPORTS=obfs4TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:444TOR_PT_ORPORT=127.0.0.1:443

TOR_PT_SERVER_BINDADDR ist die Adresse, an der der Proxy auf neue Verbindungen wartet . In meinem Fall ist es das 0.0.0.0:444- warum 444 und nicht 443? Nun, weil ich die OpenVPN-Serverkonfiguration, die derzeit 443 abhört, nicht ändern möchte. Außerdem werde ich diese Adresse später mithilfe der Portweiterleitung 443 zuordnen.

TOR_PT_ORPORT sollte auf den OpenVPN-Server verweisen. In meinem Fall läuft mein Server weiter127.0.0.1:443

3. Erstellen Sie eine SystemD-Servicedatei.

sudo nano /etc/systemd/system/obfs4proxy.service

Fügen Sie dann den folgenden Inhalt ein:

[Unit]Description=Obfsproxy Server[Service]EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.configExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO[Install]WantedBy=multi-user.target

4. Starten Sie den Verschleierungs-Proxy.

Stellen Sie nun sicher, dass OpenVPN ausgeführt wird, und führen Sie die folgenden Befehle aus, um den Proxy zu starten und ihn beim Booten zu starten.

sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy

5. Speichern Sie den Zertifikatsschlüssel

Führen Sie nach dem Start des Dienstes den folgenden Befehl aus und speichern Sie den Zertifikatschlüssel.

cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt

The key is of the form Bridge obfs4 : GERPRINT> cert=KEY iat-mode=0 . You will need it when you’re connecting to the VPN.

6. Testing the connections.

Open up your VPN client and change the ip from 443 to 444 in order to connect to the proxy instead of the OpenVPN server.

After that, find the Pluggable Transport option in your OpenVPN client and see if it supports obfs4.

If everything works, then you’re all set! Congratulations! Only a few more things to tweak before using this VPN from the outside world.

Port Forwarding

In order to access the OpenVPN server from the outside world we need to unblock the ports, because they are most likely blocked. As you remember, I have reserved my PI’s IP address on my router to always be 192.168.1.125 so it doesn’t change if the PI disconnects or if the router reboots.

This way I have defined the following rules in my Port Forwarding table:

The outside port 443 will point to the obfuscation’s server port 444. If you don’t have an obfuscation server, then leave 443->443.

The port 25 will point to the PI’s SSH port 22. This is only for my own convenience.

In case I want to access the OpenVPN server directly without the obfuscation proxy, I have created a rule 444->443

The service port is the OUTSIDE port that will be used with your PUBLIC IP address. To find your public IP, use a service like whatsmyip.com.

The internal port is the INSIDE port. It can be used only when you are connected to the network.

Note: The first rule is saying redirect all the connections from PUBLIC_IP:443 to 192.168.1.125:444

Testing

  1. Find your public IP and replace your old IP with the public IP in the .ovpn file or in the VPN client.
  2. Connect to the VPN.

That’s it.

Dynamic DNS

In most cases, your IP will change because it’s a dynamic IP. A way to overcome this is to create a small program on the PI that saves your IP and sends you an email every day or so. You may also store the IP in an online database such as Firebase.

My router has Dynamic DNS setting. This way I can use a service provider like NoIP and get a domain like example.no-ip.com that will always point to my public IP address.

Other Resources:

  • A Childs Garden Of Pluggable Transports
  • Viscosity-Obsfurcation/
  • //www.pluggabletransports.info/transports/

If you have any questions hit me up on Twitter.