Aus SatriaWiki
Wechseln zu: Navigation, Suche
K
K (FreeDNS)
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Der vielseitige Raspberry PI 3 kann auch in einen VPN Server verwandelt werden. Basis ist z.B. das Linux OS "Raspbian stretch".
 
Der vielseitige Raspberry PI 3 kann auch in einen VPN Server verwandelt werden. Basis ist z.B. das Linux OS "Raspbian stretch".
 
 
== Vorbereitung ==
 
== Vorbereitung ==
Nach dem Schreiben des Images auf die microSD Karte kann in der boot Partition
+
s. [[Raspberry PI]]
# eine Datei "ssh" erstellt werden, um den SSH Zugang gleich zu Beginn zu aktivieren.
 
# eine Datei "wpa_supplicant.conf" erstellt werden, damit sich der Raspi gleich zu Beginn mit dem darin eingetragenen WLAN verbindet. Der Inhalt ist in etwa so:
 
  country=DE
 
  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 
  update_config=1
 
  network={
 
    ssid="name"
 
    scan_ssid=1
 
    psk="passwort"
 
    key_mgmt=WPA-PSK
 
  }
 
 
 
Nach dem Login per SSH mit dem Standardzugang "pi:raspberry" sollte wie immer
 
  sudo raspi-config
 
ausgeführt werden, um die Basiskonfiguration des Raspi vorzunehmen und '''das Kennwort des "pi" Benutzers zu ändern!'''
 
  
 
== Installation von PiVPN ==
 
== Installation von PiVPN ==
Zeile 37: Zeile 21:
 
   /etc/openvpn/server.conf (Hauptkonfiguration)
 
   /etc/openvpn/server.conf (Hauptkonfiguration)
 
   /etc/openvpn/easy-rsa/pki/Default.txt (z.B. Ziel-Hostname, der in die .ovpn Dateien geschrieben wird)
 
   /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.
 
Danach muss der PiVPN Dienst neu gestartet werden.
  
 
=== Neustart des PiVPN Dienstes ===
 
=== Neustart des PiVPN Dienstes ===
 
   /etc/init.d/openvpn restart
 
   /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 ([[https://freedns.afraid.org 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:
 +
  <nowiki>https://freedns.afraid.org/dynamic/update.php?xxxxY0NXUzxxxxJCOFdocThlbkxxxxxkOjE5NTQ5xxxx</nowiki>
 +
 +
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 - <nowiki>https://freedns.afraid.org/dynamic/update.php?xxxxY0NXUzxxxxJCOFdocThlbkxxxxxkOjE5NTQ5xxxx</nowiki> > /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

Version vom 23. Januar 2021, 14:39 Uhr

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

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