PiVPN

Aus SatriaWiki
Wechseln zu: Navigation, Suche

Der vielseitige Raspberry PI 3 kann auch in einen VPN Server verwandelt werden. Basis ist z.B. das Linux OS "Raspbian stretch".

Inhaltsverzeichnis

Vorbereitung

s. Raspberry PI

Installation von PiVPN

PiVPN stellt ein Installationsskript zur Verfügung, das direkt aus dem Internet geladen und ausgeführt werden kann. Hier ist grundsätzlich Vorsicht geboten, und man sollte so einem Skript absolut vertrauen!

 curl -L https://install.pivpn.io | bash

Von hier an läuft alles automatisch ab, bis zum GUI, mit dem man seine PiVPN Installtion an seine Gegebenheiten anpasst.

Verwendung von PiVPN

Zugang erstellen

 pivpn add

Zugang nutzen

Mit einem SFTP Client (z.B. Filezilla) wird die .ovpn Zugangsdatei auf das Gerät heruntergeladen, das später den Zugang nutzen soll und anschließend in einen OpenVPN Client importiert. Diese befindet sich in

 /home/pi/ovpns

Nachträgliche Anpassungen

Nachträglich lassen sich Anpassungen an den PiVPN Dienst über die verschiedenen Konfigurationsdateien vornehmen:

 /etc/openvpn/server.conf (Hauptkonfiguration)
 /etc/openvpn/easy-rsa/pki/Default.txt (z.B. Ziel-Hostname, der in die .ovpn Dateien geschrieben wird)
 /etc/iptables/rules.v4 (Netzwerk-Interface, wenn z.B. von Wifi zu LAN gewechselt wird)

Ggf. müssen diese Anpassungen auch in

 /etc/pivpn/openvpn/setupVars.conf

vorgenommen werden.

Danach muss der PiVPN Dienst neu gestartet werden.

Neustart des PiVPN Dienstes

 /etc/init.d/openvpn restart


FreeDNS

Es bietet sich an, den Raspberry auch gleich das dynamic DNS übernehmen zu lassen, falls man das nicht schon anderweitig betreibt. Ein DNS update client für Raspbian ist ddclient, der sich über apt-get installieren lässt. Stand 22.01.2021 funktioniert die derzeit aktuelle Version 3.8.3 aber nicht (mehr) mit dem Dienst von FreeDNS ([freedns.afraid.org]).

Als Alternative kann ein cronjob eingerichtet werden, der periodisch die Direct URL des jeweiligen Hostnames aufruft und ihn so auf die neue IP Adresse (von der der Aufruf kommt) aktualisiert. In dieser Direct URL steckt ein Token, das eine Authentifizierung erübrigt. Diese URLs sehen in etwa so aus:

 https://freedns.afraid.org/dynamic/update.php?xxxxY0NXUzxxxxJCOFdocThlbkxxxxxkOjE5NTQ5xxxx

Wir packen also einen entsprechenden Aufruf in ein beliebiges neues shell-Skript z.B. in /home/pi/freedns.sh:

 #!/bin/bash
 wget --no-check-certificate -O - https://freedns.afraid.org/dynamic/update.php?xxxxY0NXUzxxxxJCOFdocThlbkxxxxxkOjE5NTQ5xxxx > /tmp/freedns.output.log

Dieser Befehl mit seinen Parametern, ignoriert SSL-Zertifikatsfehler und speichert immer das letzte Resultat des Aufrufs in die Datei /tmp/freedns.output.log. Dieses Skript soll z.B. alle 15 Minuten aufgerufen werden. Um einen solchen cronjob anzulegen, ruft man zunächst

 crontab -e

auf. Beim ersten Mal wird man nach dem gewünschen Editor gefragt. vi geht auch, nano ist besser. crontab erzeugt hierbei eine temporäre Datei, die man editiert, die nach dem Speichern wieder ausgelesen wird, woraufhin die entsprechenden cronjobs im System angelegt werden. Also nicht über die temporäre Datei wundern.

Ein geeigneter cronjob wäre also:

 */15 * * * * /home/pi/freedns.sh

Nach dem Speichern und Beenden kann man prüfen, ob der cronjob korrekt angelegt wurde:

 crontab -l
Meine Werkzeuge