Benutzer-Werkzeuge

Webseiten-Werkzeuge


howtos:pivpn

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
howtos:pivpn [2017/09/14 12:58] – [Clients anlegen und verwalten] morquaihowtos:pivpn [2022/02/18 08:09] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 107: Zeile 107:
   ========================================================   ========================================================
      
-Damit haben wir jetzt unseren ersten Client angelegt und müssen die so entstandende Konfigurationsdatei auf den Client übertragen. Wo sie zu finden ist, sehen wir im Output des "pivpn -a" Commands+Damit haben wir jetzt unseren ersten Client angelegt und müssen die so entstandende Konfigurationsdatei auf den Client übertragen. Wo sie zu finden ist, sehen wir im letzten Absatz des Output
 + 
 +====== Für Experten ====== 
 +Über die gängige Nutzung hinaus, Nutzung der Heimnetzes von außerhalb, habe ich folgendes Setup implementiert. Der OpenVPN Server ist auf einem KVM Server meines WebHosters mit Debian 9 installiert, also außerhalb des Heimnetzes. Die Installation von PiVPN klappt auch problemlos unter Debian, da ja die Standardpakete aus dem Repository des Servers installiert werden und Raspbian auf Debian basiert. 
 +Das Ziel soll sein folgende Verbindung zu ermöglichen:\\  
 +  Heimnetz <- Raspberry Pi <-> OpenVPN Server <-> OpenVPN Client 
 +zu realisieren. Beachte, das zwischen Heimnetz und Raspberry Pi der Pfeil nur in eine Richtung zeigt. 
 +===== Vorbereitung ===== 
 +Mein Server im Internet hat also erstmal keinen Zugriff auf andere, private Netze. In meinem Heimnetz habe ich nun einen Raspberry Pi als Client implementiert, der sich von zu Hause mit dem Internetserver verbindet. Auch der Client ist in der Lage Routen zu propagieren, also habe ich auf dem Raspberry Pi dafür gesorgt, das Datenpakete von einem Adapter (das Tunnel Device des OpenVPN) zu einem anderen weitergeleitet werden dürfen. In der Datei /etc/sysctl.conf macht dies der Eintrag 
 +  net.ipv4.ip_forward=1 
 +Um dies ohne reboot zu aktivieren muss der Befehl 
 +  sudo sysctl -w net.ipv4.ip_forward=1 
 +abgesetzt werden. Der Eintrag in der sysctl.conf dient nur dazu das diese Einstellung nach dem reboot wieder aktiviert ist. Um uns das Leben schwer zu machen (und den Server sicher) mischt sich nun die Firewall auf dem Raspberry Pi ein, die den technisch möglichen Traffic wieder unterbindet. Die Befehle 
 +  /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 
 +  /sbin/iptables -A FORWARD -i wlan0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
 +  /sbin/iptables -A FORWARD -i tun0 -o wlan0 -j ACCEPT 
 +sorgen dafür, das die Firewall den Traffic akzeptiert. Diese Einstellungen überleben keinen Reboot, also muss unter /etc/init.d ein Script hinterlegt werden, das diese Einstellungen nach dem Netzwerk Start wieder aktiviert. Besser (und empfohlen) ist die Methode über das Paket [[https://packages.debian.org/iptables-persistent|iptables-persistent]] dafür zu sorgen, das nach dem Netzwerk Start auch die Firewall Regeln aktiv sind. 
 +  sudo apt-get install iptables-persistent netfilter-persistent 
 +Die Frage, ob die aktuellen Regeln übernommen werden sollen, kann man getrost mit "Yes" beantworten. In den Dateien /etc/iptables/rules.v4 und /etc/iptables/rules.v6 findet man nun die aktuell gültigen Einstellungen, die beim Reboot aktiviert werden. Die Befehle 
 +  sudo iptables-save >dateiname 
 +  sudo iptables-restore <dateiname 
 +dienen dazu die aktuellen Regeln zu sicher oder wiederherzustellen. Um geänderte Regeln für den Reboot zu speichern muss die Datei /etc/iptables/rules.v4 mit den Befehlen 
 +  sudo iptables-save >/etc/iptables/rules.v4 
 +geändert werden. Wie das Ganze mit IPv6 funktioniert überlasse ich den man-pages. =) 
 +===== Konfiguration ===== 
 +Jetzt ist der Moment gekommen, die Verbindung zu ermöglichen. Der OpenVPN Client auf dem Raspberry Pi muss dem OpenVPN Server nun mitteilen, das er eine Route in ein Netzwerk zur Verfügung stellt. Dazu muss auf dem OpenVPN Server eine neue Datei unter /etc/openvpn/client-config angelegt werden. Der Dateiname MUSS mit dem Namen der beim "pivpn -a" Befehl vergeben wird übereinstimmen. Der Inhalt ist wie folgt: 
 +  ifconfig-push 10.8.0.250 255.255.255.0 
 +  iroute 192.168.178.0 255.255.255.0 
 +Sobald sich der Raspberry Pi am VPN anmeldet werden die entsprechenden Route an alle Clients, die sich DANACH am VPN anmelden, mitgeteilt. Auch der OpenVPN Server nimmt die Routen sofort zur Kenntnis.\\ 
 +Stellt sich die Frage, wie man sicherstellt, das der Raspberry Pi immer die oben genannte Adresse 10.8.0.250 erhält. Gute Frage, hier die Antwort. Eine weitere Konfigurationsdatei wird auf dem Server benötigt, die ihn anweist dem Raspberry Pi immer die gleiche IP zuzuweisen. Die Datei heißt \\  
 +/etc/openvpn/client-config/dhcp-persist und muss im ersten, durch Komma getrennten, Feld den korrekten Namen den man bei "pivpn -a" vergeben hat, enthalten. 
 +  client_name,10.8.0.250 
 +"client_name" ist also durch diesen Namen zu ersetzen. \\ 
 +Wenn ich nichts vergessen habe und alles richtig installiert und konfiguriert wurde funktioniert jetzt alles. Ein weiteres "Heimnetz" einzubinden, z.B. das der Freundin, ist jetzt nicht mehr weiter schwierig, oder? 
 + 
 + 
howtos/pivpn.1505393923.txt.gz · Zuletzt geändert: 2017/09/14 12:58 von morquai