Satria (Diskussion | Beiträge) K |
Satria (Diskussion | Beiträge) (→Nachträgliche Anpassungen) |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 22: | Zeile 22: | ||
/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) | /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. | ||
+ | === Wenn der Internetzugriff des Clients durch das VPN geleitet wird === | ||
+ | Falls Internetzugriffe durch das VPN geroutet werden und deshalb ggf. nicht mehr funktionieren, muss die <code>/etc/openvpn/server.conf</code> angepasst werden: | ||
+ | <pre> | ||
+ | #push "redirect-gateway def1" | ||
+ | push "route 192.168.x.0 255.255.255.0" | ||
+ | </pre> | ||
+ | wobei x für das Subnet steht, um das es geht. Nur Anfragen an dieses Subnet sollen durch das VPN geschickt werden, nicht alle. | ||
=== 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 |
Aktuelle Version vom 9. Februar 2022, 13:59 Uhr
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.
Wenn der Internetzugriff des Clients durch das VPN geleitet wird
Falls Internetzugriffe durch das VPN geroutet werden und deshalb ggf. nicht mehr funktionieren, muss die /etc/openvpn/server.conf
angepasst werden:
#push "redirect-gateway def1" push "route 192.168.x.0 255.255.255.0"
wobei x für das Subnet steht, um das es geht. Nur Anfragen an dieses Subnet sollen durch das VPN geschickt werden, nicht alle.
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