Wireguard mit Pivpn und Speedport

Laribum

New member
Hallo,
ich möchte mit dem Handy per Wireguard auf mein Heimnetz zugreifen.
Da mein Speedport-Router zu alt für Wireguard ist, habe ich mir einen RaspberryPi mit Pivpn dran gebastelt.
Portweiterleitung und DynDNS ist eingerichtet, PaspberryPI hat eine statische IP.
Folgendes ist in der App eingestellt:

Interface
Name
BlaBla

Öffentlicher Schlüssel
XXXX

Adressen
10.202.197.2/24

DNS-Server
192.168.2.1, 9.9.9.9

Peer
Öffentlicher Schlüssel
XXX

Vorab geteilter Schlüssel
aktiviert

Erlaubte IPs
0.0.0.0/0, ::/0

Endpunkt
selfhost-ip:51820

Dauerhaftes Keepalive
alle 25 Sekunden

ich kann mich nun mit dem Handy per WG verbinden, das funktioniert.
Wenn ich nun einen LAN-Scan mache, sehe ich nur 2 IPs:
10.202.197.1 das ist der PaspberryPi
10.202.197.2 das ist mein Handy
Internet geht auch nicht.

Nun meine Fragen?
  • Müsste statt 10.202.197.XX nicht eine Adresse aus dem Heimnetz stehen?
  • Sind die DNS-Server-Einträge richtig?
  • Brauchen alle Netzwerkgeräte statische IP-Adressen?
Würde mich über paar Tipps freuen.
Danke und Gruß
 
Hi,
Müsste statt 10.202.197.XX nicht eine Adresse aus dem Heimnetz stehen?
nein, stell es Dir einfach vor wie ein Zwischennetz, welches es nur zwischen Client und VPN-Server gibt. Die Pakete durchlaufen auf dem Weg in Dein eigentliches Netzwerk dieses Zwischennetzwerk:

Client <Zwischennetzwerk> VPN-Server <LAN>

habe ich mir einen RaspberryPi mit Pivpn dran gebastelt
Die Frage ist hier eher "wie"? Der Punkt ist jetzt folgender:

Du hast nun 2 Netzwerke:

1) Dein LAN (192.168.2.0/24)
2) Das VPN-Netzwerk (10.202.197.0/24)

Dein Client rückt nun mit einer IP aus dem VPN-Netzwerk an (10.202.197.2). Kommt am Wireguard-Server an. Soweit kein Problem. Nun wird dieses Paket weitergeleitet an z.B. Deinen Router (192.168.2.1). Hier stellt sich sofort die Frage: Weiss Dein Router denn überhaupt wie er das Netzwerk 10.202.197.0/24 erreichen kann? Anders formuliert: Ich schicke Dir einen Brief ohne Absender und möchte von Dir eine Antwort erhalten. Du wüsstest ja auch nicht, wohin Du die Antwort schicken solltest.

Der VPN-Client schickt also eine Anfrage an z.B. den Router, dieser kennt den Absender aber nicht und folgt seinem normalen Verhalten, indem er die Antwort einfach an sein Standardgateway (und somit ins Internet) schickt. Die Antwort müsste aber zum Wireguard-Server gehen, damit dieser entsprechend an den Client weiterleitet.

Die Frage nach dem "wie" bzgl. der Einrichtung zielt nun auf folgendes ab: Oben beschriebenes (Variante 1) wäre reines Routing ohne irgendwas extra. In diesem Fall müsstest Du Deinem Router vermutlich einfach nur mitteilen (sofern möglich), dass dieser das VPN-Netz über die LAN-IP vom Wireguard-Server erreichen kann.

Bzgl. Variante 2 gibt es etwas namens "NAT" (Network Address Translation). Das kennst Du schon, macht Dein Router für Deine Geräte im LAN ebenfalls. Beim NAT (bzw. konkreter SNAT (Source-NAT/Quell-NAT) wird die Absender-Adresse bei einem Paket überschrieben. In Deinem LAN ist es z.B. so, dass wenn Du eine Anfrage ins Internet stellst, die Anfrage erstmal von der "privaten LAN-IP" des Endgerätes kommt. Erreicht dieses Paket nun den Router, überschreibt der Router die Quell-IP (interne LAN-IP des Clients) mit seiner eigenen öffentlichen WAN-IP. Die private LAN-IP kann von aussen nicht erreicht werden, die öffentliche WAN-IP des Routers allerdings schon. Somit ist es einem Server im Internet auch möglich, eine Antwort an die öffentliche WAN-IP Deines Routers zu schicken. Dieser hat sich die vorherige Umschreibung gemerkt, bekommt das Antwort-Paket zurück und tauscht nun die Ziel-IP (seine öffentliche WAN-IP) wieder gegen die LAN-IP des Clients aus, welcher die Anfrage zuvor gestellt hatte.

Bei PiVPN (bzw. generell) würde es nun wie folgt laufen: Es müsste auf dem PiVPN ein SNAT erstellt werden, welches besagt: Alles was vom VPN-Netz "raus" geht, wird mit der LAN-IP (die IP des Wireguard-Servers im LAN) überschrieben/maskiert. Das hat allerdings den Nachteil, dass Zugriffe im internen Netz (von einem VPN-Client) immer mit der IP des Wireguard-Servers erscheinen. Meldest Du Dich z.B. am Webinterface des Speedport an, kommt der Login dort von der LAN-IP des Wireguard-Servers.

Sind die DNS-Server-Einträge richtig?
Je nachdem, wie Du es gerne hättest. Ich würde auf auf "intern+extern" verzichten und mich entweder nur auf intern beschränken, oder einfach nur auf extern.

Brauchen alle Netzwerkgeräte statische IP-Adressen?
Was genau meinst Du mit Netzwerkgeräte? Im Sinne von PiVPN und statischen Routen dorthin (statische Route auf Speedport für VPN-Netz über Wireguard-Server-IP) wäre alles andere ziemlich sinnfrei. Grundsätzlich "sollten" (nicht "müssen") aber alle Geräte, welche in irgendeiner Form Dienste für andere Netzteilnehmer anbieten, schon feste IP-Adresse haben.

EDIT: Wenn es nicht möglich sein sollte, dass Du statische Routen auf dem Speedport konfigurieren kannst, dann "musst" Du NAT nutzen. Kann aber sein, dass es ggf. sowieso schon genutzt wird. Teste doch erstmal etwas einfaches, z.B. den Zugriff von - via VPN eingewählten Client - auf die 192.168.2.1.
 
Zuletzt bearbeitet:
Hallo @Laribum,
da Du den Raspberry erreichen kannst hört es sich für mich an als wäre im Raspberry IPTABLES nicht richtig eingerichtet und Du kannst deshalb Deine Geräte nicht erreichen. Wireguard kenne ich nicht, ich verwende OpenVPN. Für OpenVPN wären die Einstellungen:
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Info:
-t nat => Tabelle "nat" benutzen
-A Postrouting => eine Regel in die Postrouting Tabelle einfügen
-s 10.8.0.0/24 => Source IP (Deine IP-verwenden)
-o eth0 => Pakete die die Schnittstelle eth0 verlassen ...
-j MASQUERADE => maskieren (eigene Adresse als Quelladresse setzen)
 
Danke für eure schnellen und ausführlichen Antworten.

Ich habe nun mal die erlaubten IPs auf 192.168.2.0/24 und da funktioniert es....

Aber wie kann ich denn nun z.B. die Oberfläche vom Router aifrufen?
Mit die IP 192.168.2.1 geht es nicht.
 
Warum sollte er das tun?
Na ja das Problem hatte ich auch mit OpenVPN. Wenn die Firewall nicht richtig eingestellt ist kannst Du zwar den Raspberry erreichen, aber nicht Dein LAN. Deswegen komme ich zu dieser Meinung, aber ich kann natürlich auch falsch liegen.
Von alleine lässt IPTABLES den Datenverkehr nicht zu und wenn das bei der Programminstallation nicht automatisch erfolgt ist gibt es damit ein Problem.
Nimm doch einfach mal Deine ursprüngliche Einrichtung mit (10.202.197.0/24) und probiere es aus die 10.202.197.0/24 wäre Deine Sourceadresse (also -s 10.202.197.0/24). Wäre mal einen Versuch wert. Die Befehle kannst Du einfach in der Konsole eingeben. Wenn es funktioniert musst Du die Einstellungen noch permanent machen sonst gehen Sie bei einem Neustart des Raspberry's verloren.
(In Crontab eintragen.)
Berichte mal - falls es nicht funktioniert ist ja auch nichts schlimmes passiert, Einfach einmal neu starten und gut.
 
Kannst ja auch erst einmal die Einstellung von IPTABLES abfragen (sudo iptables -L). "sudo" damit das Programm als Administrator ausgeführt wird.
 
Dann müsstest Du mir genau sagen,
Was ich da eingeben soll.
Bin wie gesagt Linux-Embryo.

Übrigens kann ich mit Putty mit der IP-Adresse über Wireguard auf den Raspberry zugreifen.
 
Zuletzt bearbeitet:
Genau nimm Putty und melde Dich am Raspberry an. In der Konsole gibst Du dann die Befehle ein. Oder kopieren und mit rechter Maustaste in die Konsole einfügen, Wenn das klappt dann helfe ich Dir weiter mit der permanenten Installation
 
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Also diese und denk daran Deine IP anzupassen (siehe oben).
 
@Laribum,
jetzt musst Du nur noch die Befehle in der Crontab eintragen. Beim nächsten start soll es ja auch noch funktionieren.
Rufe den Crontab mit "crontab -e" auf:
füge die 5 Zeilen (siehe oben) ein. Vor jede Zeile schreibst Du @reboot damit es direkt nach dem Start ausgeführt wird.
Also:
@reboot iptables -A INPUT -i tun+ -j ACCEPT
@reboot iptables -A FORWARD -i tun+ -j ACCEPT
@reboot iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
@reboot iptables -t nat -F POSTROUTING
@reboot iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

An Deine IP-Adresse denken.
Anschließend beendest Du den Editor mit [strg] + [x] und beantwortest die Frage nach dem speichern mit ja.
Den Dateinamen einfach lassen und die Eingabetaste drücken. Das war's - viel Spaß.

Und bevor die Linux-Fans jetzt "Schnappatmung" bekommen: Ja man kann es elegant in ein Startscript packen oder, oder, oder. Aber das ginge jetzt zu weit.:cool:
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.742
Beiträge
64.788
Mitglieder
7.026
Neuestes Mitglied
Telefisch
Zurück
Oben