Wireguard funktioniert nicht (RPi Zuhause - mobiler Router unterwegs)

Cyda

Lieutenant
Registriert
Jan. 2011
Beiträge
951
Hallo

ich stehe gerade etwas auf dem Schlauch und bekomme Wireguard via PiVPN nicht zum laufen.

Zuhause steht ein Raspberry Pi 3b+ (Raspbian Buster Lite) der an meiner Fritzbox per Lan Kabel hängt.

Für Unterwegs habe ich mir einen mobilen Glinet Router gekauft der per Lan Kabel mit einem Internetanschluss verbunden und auf den ich dann per Wlan zugreifen möchte. Am Ende möchte ich über den mobilen Router meinen Raspberry mit PiVPN/meinen Anschluss Zuhause als VPN nutzen und ggf. auf mein Heimnetzwerk (Fileshare) zugreifen.

Ich bin nach mehreren Anleitungen aber zuletzt nach dieser Anleitung vorgegangen.
  • Der Pi hat eine feste IP in meinem Heimnetz.
  • Ich habe den Port 55380 ausgewählt den ich in der Fritzbox und im mobilen Router (UDP) freigegeben habe.
  • Als DNS Provider habe ich aufgrund der Geschwindigkeit Cloudflare ausgewählt.
  • Bei "Public IP or DNS" habe ich meine No-IP Domain eingetragen. Auf meiner Fritzbox ist No-IP auch eingerichtet. Somit sollte die Fritzbox die IP automatisch updaten, so dass sich der mobile Router verbinden kann?
  • Und ich habe einen Nutzer für den mobilen Router in PiVPN eingerichtet und den Inhalt der .conf Datei in den Router eingespeist.

Der mobile Router zeigt mir an, dass er eine VPN Verbindung hat. Allerdings bekomme ich keine Internetverbindung.

Auf dem Pi läuft nichs außer PiVPN.
Ich habe alles hier Zuhause aufgebaut und noch nicht außerhalb getestet. Das heißt sowohl der RPi als auch der mobile Router hängen direkt am Router. Das sollte doch kein Problem sein oder?

Was mach ich bloß falsch?
 
Was meinst du mit aktiven Paketweiterleitung des PIs? Solch einen Punkt finde ich in der Anleitung nicht.

Ping ist leider nicht möglich vom mobilen Router aus. Das Ding zeigt wie gesagt an, dass eine VPN Verbindung besteht aber das Internet ist tot.

In PiVPN ist der Port 55380 eingerichtet und in der Fritzbox habe ich für IPv4 und iPv6 den UDP Port 55380 freigegeben. Gleiches gilt auch für den mobilen Router, sicherheitshalber.
 
Cyda schrieb:
in der Fritzbox habe ich für IPv4 und iPv6 den UDP Port 55380 freigegeben
Also Port forwarding zum Pi?

Wie sehen die Wireguard configs aus? AllowedIPs korrekt gesetzt?

Löst der dynDNS richtig auf?

Iptables am Pi korrekt konfiguriert?

Ipforwarding am Pi aktiviert?

Welcher Internetanbieter? Verbindung über ipv4 oder V6? CGN?

Fragen über Fragen, aber keine Infos in deinem Post. Wie soll man helfen?
 
Kurz mal nachgehakt:

Die Verbindung kommt (bzw. soll) so zu Stande:

Fritzbox -> DynDNS -> Wireguard Peer1 (Raspberry) -> Wireguard-Tunnel -> Wireguard Peer2 (Glinet Router) - - - > Wired und Wi-Fi als Endgeräte.

Muss dann nicht zwingend auch in dem mobilen Router nicht auch ein DynDNS-Dienst hinterlegt werden oder ist das obsolet?

Wenn ich das richtig verstehe, handelt es sich dabei doch um eine Site-to-Site Verbindung, statt der geläufigeren Server-Client-Konfiguration.

Woher bekommt der Router die Internetverbindung?
 
Ich habe es nach dieser Anleitung gemacht.
Ist hald nicht per PiVPN.. Aber ggf. ein Versuch wert.
Ergänzung ()

XShocker22 schrieb:
Woher bekommt der Router die Internetverbindung?
Verstehe ich auch nicht. Er schreibt etwas von LAN.
 
Zuletzt bearbeitet:
XShocker22 schrieb:
Muss dann nicht zwingend auch in dem mobilen Router nicht auch ein DynDNS-Dienst hinterlegt werden oder ist das obsolet?
Nein muss nicht da der Weg folgendermaßen aussieht. FritzboxIP -> DynDns -> mobiler Router -> Fritzbox -> lokaler PI
 
Puh da habe ich mir das Ganze wohl zu einfach vorgestellt.

Furzmulle schrieb:
Also Port forwarding zum Pi?

Wie sehen die Wireguard configs aus? AllowedIPs korrekt gesetzt?

Löst der dynDNS richtig auf?

Iptables am Pi korrekt konfiguriert?

Ipforwarding am Pi aktiviert?

Welcher Internetanbieter? Verbindung über ipv4 oder V6? CGN?

Fragen über Fragen, aber keine Infos in deinem Post. Wie soll man helfen?
1. In der Fritzbox steht "Port extern vergeben IPv4" und "Port extern vergeben IPv6" und zugeordnet ist der RPi.

2. Die Config habe ich nicht angefasst. Ich bin nur der PiVPN Installationsroutine gefolgt in der Hoffnung, dass es möglichst schnell und einfach läuft. Der Client Configdatei entnehme ich, dass alle IPs zugelassen werden. -> "AllowedIPs = 0.0.0.0/0, ::0/0"

3. Ich denke ja. Bei No-IP kann ich ja nicht viel einstellen. Zumindest sehe ich in meinem No-IP Account, dass scheinbar die Fritz Box immer wieder ein Update sendet und mit meinem No-IP Hostnamen syncron ist.

4. und 5. Habe ich beides nicht eingerichtet.

6. Vodafone, ich meine es beides wird unterstützt aber ich habe eine IPv4 IP.

7. Sorry mir fehlen die ganzen Schritte, da mir diese PiVPN abgenommen haben sollte im Vergleich zur manuelle Wireguard Installation. Daher konnte ich im Eingangspost nur die mir verdächtigen Punkte aufzählen, die ich konfiguriert hatte.


ModellbahnerTT schrieb:
In dieser Anleitung wo man alles per Hand macht und daher sieht was man macht den Punkt Ipforwarding sowohl wie beschrieben für IPv4 als auch für IPv6.
Die Anleitung kommt mir sehr bekannt vor und ist knapp 2 Jahre alt. Ich meine irgendwo gelesen zu haben (wo die Anleitung empfohlen wurde) dass diese nicht mehr aktuell ist bzw. nicht mehr funktioniert.


Brati23 schrieb:
...

Verstehe ich auch nicht. Er schreibt etwas von LAN.
RPi (Wireguard Server) = Lan
Glinet mobiler Router (Wireguard Client) = Lan


ModellbahnerTT schrieb:
Nein muss nicht da der Weg folgendermaßen aussieht. FritzboxIP -> DynDns -> mobiler Router -> Fritzbox -> lokaler PI
Ich hätte den Weg eher so beschrieben:

Smartphone -> mobiler Router (Wirguard Client) -> Router mit Internetzugang -> No-IP Dyn -> meine Fritzbox Zuhause -> RPi Server (Wireguard Server)



Ich denke auch, es wäre besser alles nochmal manuell einzurichten auch wenn es nervt und wieder Problematisch wird eine einfach verständliche Anleitung zu finden, die sich einigermaßen nachvollziehen lässt.
 
Cyda schrieb:
4. und 5. Habe ich beides nicht eingerichtet.
Die einzurichtenden IPTables-Regeln sind aber in der von dir geposteten Anleitung ebenfalls aufgeführt.

Wenn du nach der Anleitung vorgegangen bist, dann hättest du die IPTables-Regeln also
direkt in die WireGuard-Config des Clients eingeben müssen.

Das sind folgende Zeilen:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Folgende Zeile habe ich in der Anleitung nicht finden können, wird aber auch benötigt:
echo 1 > /proc/sys/net/ipv4/ip_forward

Kann aber auch sein, dass dieses PiVPN-Installationsscript diesen Befehl im Hintergrund bereits ausführt und man das nicht selbst machen muss. Dieser Befehl aktiviert das Routing bzw. die IP-Forward-Funktion des Linux-Betriebssystems. Damit machst du also aus dem "RasPi" einen Linux-Router.

Diese Zeilen aktivieren bzw. deaktivieren das Weiterleiten/Routen von eingehendem IP-Traffic,
der über die WireGuard-Schnittstelle (wg0) des WireGuard-Servers rein kommt. Außerdem wird der eingehende IP-Traffic maskiert, wenn er durch den WireGuard-Server weiter über "eth0" (in Richtung FritzBox) rausgeroutet wird.

Schau' dir dir Anleitung nochmal genau an und überprüfe, ob du alles richtig konfiguriert hast.

Außerdem ist ein Test von außen (z.B. über eine Mobilfunkverbindung) deutlich aussagekräftiger.

Installier' dir doch mal den WireGuard-Client auf einem Notebook oder PC und gehe über einen (WLAN)-Hotspot ins Internet. Dann importiere einfach mal die WireGuard-Config, die du für deinen mobilen Router erstellt hast im WireGuard-Client und teste am PC/Notebook, ob von dort dann die Einwahl sowie der Internetzugang über den VPN-Tunnel funktioniert.
 
  • Gefällt mir
Reaktionen: Cyda
Furzmulle schrieb:
Siehst du am Pi den Handshake?
In PiVPN lässt sich nachvollziehen welche Clients wann zuletzt verbunden waren. Demnach war der mobile Router nie verbunden mit dem Raspberry. Das kann ja nicht sein, wenn der mobile Router anzeigt, dass er eine VPN Verbindung hat.

@Datax
Danke für die Tipps. Ich musste erst einmal nachforschen und herumprobieren. Die Schritte hatte ich am Ende der Anleitung wohl ignoriert oder mich doch anhand einer anderen Anleitung entlang gehangelt. Im Vergleich geht gefühlt jeder anders vor und ich hatte mir die einfachste Variante herausgesucht.

Die von dir genannten Zeilen hatten in meiner Wireguard Server Config gefehlt. Die Datei sieht nun so aus:
[Interface]
PrivateKey = xxxxxxxxxxxx
Address = 10.6.0.1/24
MTU = 1420
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j AC$
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j $
echo 1 > /proc/sys/net/ipv4/ip_forward
ListenPort = 55380

### begin mobilerRouter ###
[Peer]
PublicKey = xxxx
PresharedKey = xxxxxx
AllowedIPs = 10.6.0.2/32
PersistentKeepalive=25
### end mobilerRouter ###

### begin Wireguard-FT ###
[Peer]
PublicKey = xxxxxx
PresharedKey = xxxxxxxxxxxx
AllowedIPs = 10.6.0.3/32
PersistentKeepalive=25
### end Wireguard-FT ###

"mobileRouter" ist das alte Client Profil.
"WireGuard-FT" ist das neue Full-Tunnel Client Profil welches ich dann auch nutzen werde.


Testen konnte ich die neuen Configs bisher noch nicht. Mein Notebook möchte sich nicht mit dem Smartphone Hotspot verbinden. Morgen geht es weiter und hoffentlich ist das Problem dann gelöst.
 
Hat Cyda eine echte IPv4 oder nur eine DS-Lite/CGN Zuhause ? Das sollte man vielleicht mal als erstes klären bevor man im Nebel seiner Config stochert.
 
Cyda schrieb:
Die von dir genannten Zeilen hatten in meiner Wireguard Server Config gefehlt. Die Datei sieht nun so aus:

Deine Änderung an der Config ist nicht richtig. Warum kopierst du nicht einfach die Zeilen 1:1 von #11 in deine Config?

Deine Änderung laut Post #12 sieht so aus:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j AC$
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j $

Aussehen muss es aber so:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
 
Der TE hat es wohl schon geschafft und lässt uns nicht mehr teilhaben ;)

Hier mal eine IPv6 Konfig:

Code:
[Interface]
Address = 192.168.99.1/24, fd08::1/64
ListenPort = 51820
PrivateKey = xxx
MTU = 1412

PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -A FORWARD -i %i -j ACCEPT
PostUp = ip6tables -A FORWARD -o %i -j ACCEPT
PostUp = ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = ip6tables -D FORWARD -i %i -j ACCEPT
PostDown = ip6tables -D FORWARD -o %i -j ACCEPT
PostDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE


[Peer] <-- Mobilgerät
PublicKey = yyy
AllowedIPs = 192.168.99.2/32, fd08::2/128

...

[Peer] <-- Dauerverbindung zweier Netzwerke
PublicKey = zzz
AllowedIPs = 192.168.99.6/32, 192.168.74.0/24, fd08::6/128, fd00:bbbb::/32
Endpoint = meins.dynv6.net:51821
PersistentKeepalive = 25

Hinweis: das entfernte Netzwerk hat den IP Bereich 192.168.74.xx und fd00:bbbb::

vorher muss man noch ein paar Sachen einmalig einrichten
 
Hallo, entschuldigt das lange warten. Ich sitze seit Freitag an dem Ding und bekomme nicht die Krise bei den ganzen Fehlern. Vorweg: Der Server läuft, der mobile Router nicht.

@Avenger84: Ich denke ich habe keinen DS-Lite Anschluss da mir eine richtige IPv6 und eine richtige IPv4 bei wieistmeineip angezeigt werden.

@Datax: Der Fehler ist mir auch aufgefallen. Deswegen kann ich Linux und die Bedienung über Putty nicht leiden. Warum auch immer wurde nicht alles 1:1 eingefügt, so dass am ende Der Zeilen der Code abgeschnitten wurde und ein $ eingefügt wurde.


Danach ging es weiter. Ich bin auf die debug Funktion pivpn -d gestoßen die mir sehr schlecht erklärt hat, dass Wireguard gar nicht läuft auf dem Server. Nach zich Seiten von Reddit Threads konnte ich das Problem lösen. Scheinbar hatte es Wireguard irgendwann mal zerschossen.
sudo dpkg-reconfigure wireguard-dkms
Hatte das Paket (?) neu erstellt. Nach einem Reboot und der Konfiguration des Autostarts des Dienstes, lief dann endlich der Server richtig.

Dann hatte ich den Wireguard Client unter Windows 10 ausprobiert. Hierfür hatte ich, wie empfohlen, den Windows 10 Rechner mit dem Smartphone (Hotspot) verbunden. Ich konnte über die Mobilfunkverbindung auf den Router zugreifen (192.168.xxx.xxx und nicht fritz.box) und im Internet mit der öffentlichen IP Adresse meines Routers surfen.

Ich dachte, jetzt habe ich es endlich geschafft und hatte die Client Konfig in den mobilen Router kopiert. Ging natürlich nicht. Und natürlich gab es wieder keine aussagekräftige Fehlermeldung seitens des mobilen Routers. Nur irgendwas in Richtung Fehlerhafte IP-Adresse. Also hatte ich den mobilen Router nochmal platt gemacht (keine statische IP und keine Portweiterleitung konfigurert) und wie in der offiziellen Anleitung die Config eingefügt.

Irgendwann kam mir die Idee eine neue Client Config in PiVPN erstellen zu lassen und diese wurde dann auch angenommen. Aber ich kam trotzdem nicht in das Internet obwohl mir der mobile Router über PiVPN als aktiv angezeigt wurde. Ob es daran lag, dass Server und mobiler Router ja direkt am Router hingen wusste ich nicht. So hatte ich meinen Notfallrouter geholt, OpenWRT installiert und somit daraus einen VPN Router gemacht an den ich den mobilen Router angeschlossen hatte aber es ging immer noch nicht.

Der mobile Router wurde bzw. wird immer noch als aktiver Client in PiVPN angezeigt. Ich komme aber nicht mit dem mobilen Router in das Internet und auch nicht auf meine Fritzbox. Ich komme lediglich auf die Oberfläche des VPN Router und des mobilen Routers. Woran es liegt, keine Ahnung. Der mobile Router protokolliert nichts. Ich kann per Putty auf den mobilen Router drauf, finde aber keine passende Log Datei.

Ich bin mit meinen Lateien am Ende. Aus Verzweifelung hatte ich jetzt noch den Port des Wireguard Servers und den Listen Port des mobilen Routers geöffnet, mehr Möglichkeiten sehe ich nicht in dem Menü des GL Inet.
 
Cyda schrieb:
Dann hatte ich den Wireguard Client unter Windows 10 ausprobiert. Hierfür hatte ich, wie empfohlen, den Windows 10 Rechner mit dem Smartphone (Hotspot) verbunden. Ich konnte über die Mobilfunkverbindung auf den Router zugreifen (192.168.xxx.xxx und nicht fritz.box) und im Internet mit der öffentlichen IP Adresse meines Routers surfen.

Dann hast du ja schon mal sichergestellt, dass die Client-Config inkl. der Config des WireGuard-Servers inkl. des Routings in deinem Netzwerk in Ordnung ist.

Verbinde doch deinen mobilen Router mal genauso wie du es mit dem "Windows 10"-Gerät gemacht hast mit dem (WLAN)-Hotspot deins Smartphones. Also mit dem mobilen Router einfach mal genau den gleichen Test machen (Einwahl über das Mobilfunknetz) wie mit dem "Windows 10"-Gerät. Als Client-Config, die du in deinem mobilen Router verwendest, kannst du am Besten die bereits mit dem "Windows 10"-Gerät getestete Config nehmen. Bei dieser weißt du ja, dass sie funktioniert.

Cyda schrieb:
Und natürlich gab es wieder keine aussagekräftige Fehlermeldung seitens des mobilen Routers. Nur irgendwas in Richtung Fehlerhafte IP-Adresse.
Schade, dass du hier nicht die genaue Fehlermeldung nennen kannst. Das hätte bei der Fehlersuche ggf. weiterhelfen können.

Wenn du am mobilen Router die WireGuard-Einwahl über das Mobilfunknetz gemacht hast, dann wie gesagt mal testen, ob du über ein am mobilen Router angeschlossenes Endgerät ins Internet kommst. Falls nicht, dann wäre mal interessant, ob der Internet-Traffic des Endgeräts überhaupt beim WireGuard-Server ankommt.

Das kannst du überprüfen, indem du dich per "SSH" auf deinem "RaspberryPi" einloggst und dort als Benutzer "root" folgenden Befehl eingibst:
tcpdump -i wg0 -n

Die Ausgabe des obigen Befehls bitte mal hier posten.

Und bitte auch noch die Ausgabe von "wg show" (ohne Anführungszeichen).

Wie heißt eigentlich dein mobiler Router (Hersteller + Modellbezeichnung)? Ggf. maskiert dein mobiler Router die IP-Adressen der Endgeräte aus seinem eigenen LAN-Netz nicht mit seiner WireGuard-VPN-IP, so dass dein WireGuard-Server auf dem "RasPi" den Antwort-Traffic aus dem Internet nicht zurück über den WireGuard-Tunnel an die Endgeräte senden kann. Falls dem so sein sollte, musst du entweder schauen, dass du das Maskieren (Masquerading) der IP-Adressen der Endgeräte auf deinem mobilen Router aktiviert bekommst oder du bringst dem Linux-System deines "RasPi" (wo der WireGuard-Server läuft) bei, dass er das LAN-Netz des mobilen Routers über die VPN-IP deines mobilen Routers erreichen kann.

Du kannst dem Linux-System deines "RasPi" wie folgt eine neue Router beibringen:
route add -net Netzwerkadresse/Netzmaske gw VPN-IP-mobiler-Router

Beispiel:
LAN-Netz des mobilen Routers = 172.16.1.0/24
VPN-IP-mobiler-Router = 10.0.1.2/24

route add -net 172.16.1.0/24 gw 10.0.1.2

Auch deinem Router zu Hause musst du dann sagen, wie er das LAN-Netz deines mobilen Routers erreichen kann. Auf deinem Router, der am Internetanschluss hängt, musst du also eine Router einrichten, die das LAN-Netz deines mobilen Routers zur IP-Adresse deines "RasPi" routet.

Das wäre dann folgende Route: 172.16.1.0, Netzmaske 255.255.255.0 --> IP-Adresse-RasPi

Die IP-Adressen, Routen musst du natürlich an deine Gegebenheiten anpassen. Obige Angaben waren nur Beispiele.
 
Zuletzt bearbeitet:
Cyda schrieb:
Für Unterwegs habe ich mir einen mobilen Glinet Router gekauft der per Lan Kabel mit einem Internetanschluss verbunden
Und was sind das für I-Net Anschlüsse?

Bei fremden/öffentlichen Netzen kannst Du Dich nicht drauf verlassen, dass UDP Traffic funktioniert.
Will man es zuverlässig, ist OpenVPN (über TCP 443) das Mittel der Wahl.
 
Jetzt hängt das Ding an meinem Anschluss Zuhause. Wenn der mobile Router dann irgendwann mal läuft soll er an normalen Privatanschlüssen, auf Arbeit und an öffentlichen Anschlüssen wie in Hotels hängen.
 
Zurück
Oben