- Werbung -

Zur Zeit nutzen wohl nur wenige Internet-Nutzer in Deutschland privat ein VPN (Virtual Private Network). Im Firmenumfeld oder im Uni-Bereich sieht das anders aus. Da ist der Zugriff auf das interne Netzwerk für Mitarbeiter oder Studenten über VPN weiter verbreitet.

Dabei gibt es auch für Privatpersonen gute Gründe für den Einsatz. Wer häufiger in öffentlichen WLANs unterwegs ist, z.B. im Café oder im Zug, verhindert mit einem VPN, dass unbefugte die eigenen Zugriffe auf das Internet mitlesen können. Daneben kann mit einem VPN Geo-Blocking (d.h. die Blockade von IP-Adressen, die bestimmten geografischen Regionen zugeordnet sind) umgehen. Aber auch der Zugriff auf die Ressourcen im heimischen Netzwerk, wie z.B. Drucker oder Fileserver, ist mit Hilfe eines VPN deutlich sicherer. Es gibt mittlerweile diverse kommerzielle Anbieter, die zum Teil sogar im Fernsehen für ihr Angebot werben, z.B. NordVPN mit Preisen ab 2,99 USD/Monat bei einem 3-Jahres-Paket. Oder man vertraut nicht auf Anbieter, deren Firmensitz in Panama ist, und baut sich sein eigenes VPN.

Was ist ein VPN?

Ein Virtual Private Network ist ein verschlüsselter Verbindungstunnel zwischen zwei Netzwerken oder Teilen eines Netzwerks. Dabei wird der gesamte Datenverkehr, der durch diesen Tunnel geführt wird, verschlüsselt und ist für Dritte nicht einsehbar, kann also nicht mitgelesen werden. Was man mit einem VPN übrigens nicht erreicht: Dass man anonym im Internet unterwegs ist. Das gehört in den Bereich der Werbe-Märchen.

Dieser Artikel zeigt, wie man mit Hilfe eines Raspberry Pis und der Software OpenVPN zum einen den Zugriff auf das eigene Heimnetz realisiert und darüber hinaus den Dienst für den Internet-Zugriff einrichtet. Im zweiten Teil des Artikels erweitern wir unser VPN dann um einen Ad-Blocker mit Hilfe der Software Pi-Hole.

1. Was brauchen wir?

Die Anforderungen an die Hardware sind gering. Schon ein alter Raspberry Pi 1B genügt, um unseren VPN-Server aufzusetzen und mit Pi-Hole zu erweitern. Solche Teile bekommt man für weniger als 10 € gebraucht zu kaufen. Der Raspberry Pi Zero ist dagegen ungeeignet, weil er keine Ethernet-Schnittstelle besitzt. Wer einen leistungsstärkeren Raspi nimmt kann dann noch weitere Dienste darauf laufen lassen, wie z.B. Seafile oder Owncloud. Ich bevorzuge es allerdings, diese Dienste auf eigenen Raspis laufen zu lassen.

Hardware

  • 1 Raspberry Pi (Raspi) 1B, 1B+, 2B, 3B oder 3B+
  • 1 SD- oder Micro-SD-Karte (mind. 4 GB), je nach Raspi-Modell
  • 1 SD Kartenleser
  • 1 Standard-Handyladekabel und –netzteil (wichtig: Stabile 5 Volt und am besten 2 Ampere Strom sollte es liefern, damit es keine Stabilitätsprobleme gibt)
  • 1 Netzwerkkabel

Software

Sonstiges

  • Dynamischen DNS-Eintrag, z.B. von Selfhost.eu oder einem anderen DynDNS-Anbieter

Weiterhin benötigen wir noch die (interne) IP-Adresse unseres Routers. Teilweise ist das in den Einstellungen des Routers etwas versteckt. Bei einer Fritzbox findet man den Eintrag unter „Heimnetz >> Heimnetzübersicht >> IPv4-Adresse“ . In unserem Beispiel gehen wir davon aus, dass die Adresse 192.168.200.5 lautet. Achtung: Viele Router benutzen standardmäßig Adressen aus dem Raum 192.168.0.x oder 192.168.1.x. In unserem heimischen LAN sollten wir einen weniger gebräuchlichen Adressraum wählen, da ein Zugriff über VPN nur funktioniert, wenn sich das LAN, aus dem heraus wir uns via VPN verbinden wollen, einen anderen Adressraum verwendet als unser heimisches LAN! Gut wäre z.B. wenn unser Heimnetz den Bereich 192.168.200.x verwendet. Dann ist die Gefahr einer Kollision deutlich geringer.

Der Zusammenbau des Raspis und die Basisinstallation des Betriebssystems sind hier ausführlich beschrieben weshalb ich im Folgenden von einem lauffähigen Raspi ausgehe, der im lokalen Netz via Putty und SSH erreichbar ist.

Wichtig: Die interne IP-Adresse unseres VPN-Rapis muss immer gleich sein. Wenn man die IP-Adressen von seinem Router dynamisch per DHCP vergeben lässt, muss man unbedingt dafür sorgen, dass der Raspi immer die gleiche Adresse erhält. Dazu gibt es in den Geräte-Einstellungen im Router in der Regel Optionen wie „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen“. Alternativ kann man dem Raspi natürlich auch eine statische IP-Adresse geben.

Da sich die externe IP-Adresse bei den meisten Providern täglich ändert (nach der nächtlichen Zwangstrennung), besorgen wir uns auch noch einen  Account bei einem Anbieter von dynamischen DNS (DDNS).

2. Einmal VPN bitte

Ist der Raspi montiert und das Betriebssystem installiert, können wir OpenVPN einrichten. Dazu loggen wir uns via putty auf dem Raspi ein und wechseln zum Root-User mittels

sudo su

Die Installation ist ganz einfach und mit einem Einzeiler über die Shell erledigt

curl –L https://raw.githubusercontent.com/pivpn/pivpn/master/auto_install/instal... | bash

Als erstes wird das Skript die APT Paketquellen aktualisieren, dann installierte Pakete upgraden und anschließend OpenVPN installieren.

2.1 Konfiguration

Anschließend führt uns das Skript durch die Konfiguration von OpenVPN. Das mühsame und fehlerträchtige Bearbeiten von Config-Dateien entfällt dadurch.

Die IP-Adresse des VPN-Raspis sollte unbedingt statisch sein, da wir ihn später aus dem Internet für die VPN-Clients erreichbar machen wollen. Die Gateway-Adresse ist in der Regel die IP-Adresse eures Routers. Damit können wir die Abfrage des Skriptes mit „Ja“ bestätigen.

Bei der Abfrage nach dem lokalen User, unter dem OpenVPN laufen, soll bestätigen wir den Standard.

Im nächsten Schritt bestätigen wir die automatischen Upgrades, damit Sicherheits-Patches automatisch eingespielt werden. So müssen wir uns nach dem Installieren nur noch selten darum kümmern. Selten heißt allerdings nicht „niemals darum kümmern“. Die automatischen Security Updates nehmen uns lediglich etwas Arbeit ab.

Als Protokoll wählen wir UDP und lassen den vorgeschlagenen Port unverändert bei 1194.

 

 

Grundsätzlich sollte man immer mit der aktuellsten OpenVPN arbeiten. Ab Version 2.4 bietet diese stärkere Verschlüsselung an. Entsprechend bestätigen wir die nächste Abfrage mit „Ja“:

Die nächste Abfrage bezieht sich auf die Stärke der Verschlüsselung. Empfohlen werden 256 Bit und das nehmen wir auch. Wer es sicherer mag, kann natürlich auch einen höheren Wert wählen und kann dann erstmal eine Kaffeepause für die Schlüsselgenerierung einlegen. ;-)

Damit die VPN-Clients eine Verbindung zu unserem VPN-Raspi aufbauen können benötigen sie dessen öffentliche IP-Adresse. Die meisten von euch werden wohl von ihrem Internet-Provider eine dynamische IP-Adresse zugewiesen bekommen, die sich einmal am Tag nach der Zwangstrennung von Providerseite ändert. Daher wählen wir den Eintrag „Use a public DNS“

und tragen dann im nächsten Schritt den DNS-Namen ein, den wir bei einem DynDNS-Anbieter registriert haben. Der DynDNS Eintrag wird den Domainnamen (im Beispiel mydomain.dyndns.org) in die öffentliche IP-Adresse von eurem Internetanschluss umwandeln. So können die VPN-Clients immer die aktuell gültige öffentliche IP-Adresse eures Anschlusses erreichen. Ach ja, ganz wichtig: die Zugangsdaten zu dem DynDNS-Account müssen in eurem Router eingetragen werden, denn dieser soll künftig nach jeder Trennung die Aktualisierung des DynDNS-Eintrags automatisch vornehmen. Wie das genau geht, steht in der Bedienungsanleitung des Gerätes.

 

Im nächsten Schritt müssen wir DNS-Server für OpenVPN festlegen. Dazu kann man entweder die vorgegebenen nehmen oder – was ich bevorzuge – eigene eintragen. Daher wählen wir den Eintrag „Custom“ und bestätigen mit „Ok“.

Der Vorschlag „8.8.8.8“ ist übrigens der DNS-Server von Google, den sollte man vielleicht nicht gerade nehmen. ;-) Entweder trägt man dort den DNS-Servers seines Providers ein oder nimmt einen, bei dem man darauf vertrauen kann, dass er nicht zensiert oder neugierig mit protokolliert. Beispiele wären die DNS-Server der Digitalcourage (46.182.19.48), dem Chaos Computer Club (194.150.168.168) oder DNS-Watch (84.200.69.80, 84.200.70.40).

In dem obigen Screenshot habe ich übrigens die IP-Adresse von meinem PiHole-Raspi eingetragen, der das Ausfiltern von Werbung übernimmt. Dazu später mehr.

Die Installation von OpenVPN ist damit abgeschlossen. Wir booten unseren VPN Raspberry Pi einmal neu, bevor wir uns mit dem Anlegen von Profilen befassen.

2.2 Profile anlegen

Für die VPN-Einwahl auf dem VP-Raspi legen wir jetzt Profile an. Diese Profildateien werden dann auf den Geräten installiert, die sich per OpenVPN-Client einwählen sollen.

Dazu melden wir uns wieder in der Kommandozeile auf dem VPN-Raspi an und tippen das Kommando

pivpn add

ein.

Dann geben wir einen Namen für den Client ein, z.B. Nexus7, und ein sicheres Passwort (also bitte nicht „EuerPasswort“ ;-) ).

Enter a Name for the Client: Nexus7
Enter the password for the client: EuerPasswort

========================================================
Done! Nexus7.ovpn successfully created!
Nexus7.ovpn was copied to:
  /home/pi/ovpns
for easy transfer. Please use this profile only on one
device and create additional profiles for other devices.
========================================================


Anschließend wird das Profil namens „Nexus7.ovpn“ mit allen notwendigen Informationen (Zertifikat, Gegenstelle, Verschlüsselungsdetails, etc.) erzeugt und im Verzeichnis „/home/pi/ovpns“ abgelegt. Diese Datei müssen wir jetzt noch auf dem Client importieren. Dazu können wir die Datei z.B. auf einen USB-Stick kopieren oder ein lokales Netzlaufwerk vorübergehend verbinden, um die Datei zu übertragen. Aber auch ein Seafile- oder Dropbox-Ordner kann hilfreich sein. Sobald die Datei auf dem Client von OpenVPN importiert wurde können wir uns mit dem VPN-Raspi verbinden und surfen ab dem Moment über unser eigenes VPN im Internet.

Mit dem Befehl

pivpn list

können wir prüfen, ob sich der Client erfolgreich angemeldet hat. Der Befehl

pivpn help

gibt alle Optionen aus, die PiVPN bzw. das Kommando pipvpn unterstützt.

3. PiVPN aus dem Internet erreichbar machen

Damit die Datenpakete von außen beim PiVPN ankommen, muss am Router eine Portweiterleitung für den UDP-Port 1194 eingerichtet werden. Je nach Routermodell unterscheidet sich die Einrichtung. Die folgende Beschreibung bezieht sich auf FRITZ!Box.

Zunächst rufen wir die GUI der Fritzbox auf. Dazu geben wir in der Adresszeile des Browsers „fritz.box“ ein und loggen uns im Startbildschirm der Fritzbox mit dem Passwort für die Box ein und navigieren zu Internet -> Freigaben -> Portfreigaben -> Neue Portfreigabe

Portfreigabe für OpenVPN auf Fritzbox einrichten

Die IP-Adresse ist jene, die ihr dem PiVPN während der Installation fest zugewiesen habt. Möchte sich ein Client per OpenVPN anmelden, wird das UDP-Paket zunächst auf dem Port 1194 des Routers ankommen. Anhand der Portweiterleitung wird das Paket auf diesem Port anschließend an den PiVPN mit der internen IP-Adresse 192.168.200.5 weitergeleitet – die Verbindung zwischen Client und Server (PiVPN) kann initiiert werden.

Jetzt kann man auch auf weitere Dienste im Netzwerk, ohne diese explizit nach außen über Port-Forwarding zu öffnen bzw. erreichbar zu machen. Stattdessen greifen wir nach erfolgreicher Einwahl auf den PiVPN so auf diese Dienste zu, als säßen wir an unserem heimischen PC.

4. Verbinden mit dem VPN

Damit wir uns z.B. mit dem Smartphone mit unserem eigenen VPN verbinden können, brauchen wir noch eine Client-App. Ich verwende OpenVPN Connect aus dem Google App-Store. Wenn man dort nach „OpenVPN“ sucht, ist das einer der ersten Einträge.

Die App ist schnell installiert. Nach der Installation klicken wir auf dem Startbildschirm auf „OVPN Profile“ und importieren das bei Punkt 2.2 erstellte Profil für das Gerät.

Das war’s auch schon. Ein Klick auf das Profil startet die VPN-Verbindung und ab sofort ist unser Smartphone über unser eigenes VPN mit dem Internet verbunden.

Im zweiten Teil dieses Artikel erweitern wir unser VPN um einen DNS-basierten Werbeblocker: Pi-Hole. Der unterdrückt Werbung dadurch, dass er die Verbindung zu den einschlägigen Ad-Servern verhindert. Damit wird unerwünschte Werbung auch auf Mobilgeräten ausgefiltert – ohne, dass man einen zusätzlichen Werbeblocker installieren muss.

Einkaufshilfe und weiterführende Links

Homepage des RaspberryPi-Projektes: https://www.raspberrypi.org/
OpenVPN: https://openvpn.net/
Pi-Hole: https://pi-hole.net/