WireGuard auf OpenWRT - Keine Verbindung

Xiaolong

Lieutenant
Registriert
Sep. 2008
Beiträge
761
Moin Forumianer,

ich habe da so ein Problem mit meinem WireGuard Server auf dem OpenWRT. Habe alle Tutorials durch, es will einfach nicht und ich weiß nicht ob ich etwas banales übersehe, oder wir hier vor einem größeren Problemberg stehen.

Ich habe hier im Netzwerk einen Linksys WRT3200ACM Router mit der OpenWrt 19.07.3 r11063-85e04e9f46 / LuCI openwrt-19.07 Firmware am Laufen. Kernel Version ist 4.14.180. Mein internes Netz ist die 172.16.1.0/24. Als DynDNS Dienst habe ich ddns.net eingerichtet. Auf dem Router habe ich dazu ddns-scripts in der Version 2.7.8-13 inkl. ddns-scripts_no-ip_com in der Version 2.7.8-13 laufen. Die Verbindung von außen funktioniert auch. Habe den Port 80 Testweise mal freigegeben und von der Außenwelt darauf zugegriffen, es erscheint die Weboberfläche zum Anmelden, also ist die Funktion gegeben.

Ich habe ein Interface WG0 mit den folgenden Einstellungen angelegt:
2021-09-30 21_04_09-OpenWrt - Interfaces - LuCI und 6 weitere Seiten - Xiaolong – Microsoft E...png

2021-09-30 21_05_35-OpenWrt - Interfaces - LuCI und 6 weitere Seiten - Xiaolong – Microsoft E...png

2021-09-30 21_06_04-OpenWrt - Interfaces - LuCI und 6 weitere Seiten - Xiaolong – Microsoft E...png

Das KeyPair, bzw. beide KeyPairs habe ich angelegt und in die dafür vorgesehenen Felder eingetragen. Zumindest bin ich der Meinung, das getan zu haben bin mir da nicht sicher. Ich kriege ja folgende KeyPairs:
ServerPublic und ServerPrivate
ClientPublic
und ClientPrivate
Nun trage ich beim Server den ServerPrivte_Key ein (im Bild 1 das mit den Sternchen) und bei der Wireguard Software unter [Interface] "PrivateKey =" den ServerPublic-Key. Dann trage ich bei dem Tab mit den Peers im OpenWRT den PublicClient-Key ein und bei [Peer] in der Software unter "PublicKey =" den ClientPrivate ein, richtig? (Ich habe es auch andersherum probiert, funktioniert genausowenig). Anschließend habe ich folgende Firewall und Traffic-Rules eingerichtet:

2021-09-30 21_00_31-OpenWrt - General Settings - LuCI und 6 weitere Seiten - Xiaolong – Micros...png


2021-09-30 21_16_45-OpenWrt - Port Forwards - LuCI und 5 weitere Seiten - Xiaolong – Microsoft...png

2021-09-30 21_13_55-OpenWrt - Traffic Rules - LuCI und 6 weitere Seiten - Xiaolong – Microsoft...png

Jetzt habe ich in der Software die AllowedIPs, DNS und Endpoint eingetragen und es passiert... gar nichts :(
Sieht dann so aus:
2021-09-30 21_24_27-Tunnel bearbeiten.png

Weiß jemand Rat? Habe sämtliche Tutorials durch und weiß nun nicht wie das funktioniert :/ Ich weiß auch nicht ob ich das mit den Keys richtig verstanden habe und wie und was genau, aber ich bin langsam mit meinem Latein am Ende...

Beste Grüße,
Xiao
 

Anhänge

  • 2021-09-30 21_02_47-OpenWrt - Interfaces - LuCI und 6 weitere Seiten - Xiaolong – Microsoft​ E...png
    2021-09-30 21_02_47-OpenWrt - Interfaces - LuCI und 6 weitere Seiten - Xiaolong – Microsoft​ E...png
    31,6 KB · Aufrufe: 263
  • 2021-09-30 21_15_54-OpenWrt - Port Forwards - LuCI und 5 weitere Seiten - Xiaolong – Microsoft...png
    2021-09-30 21_15_54-OpenWrt - Port Forwards - LuCI und 5 weitere Seiten - Xiaolong – Microsoft...png
    24,9 KB · Aufrufe: 271
Firewall mal komplett ausschalten bis VPN funktioniert

Und wenn Du dabei wirklich was lernen willst, versuche bei OpenWRT komplett aufs Webinterface zu verzichten.
 
Wie mache ich das genau, gibt ja keinen "Deactivate" button. Ich hab einmal den Service bei System -> Startup deaktiviert, da ich mal die Selber Idee hatte, konnte dann aber gar nicht mehr auf das Teil drauf und musste es reflashen. Oder setze ich irgendeine Rule, die schlichtweg alles auf ALLOW setzt?

Und wenn Du dabei wirklich was lernen willst, versuche bei OpenWRT komplett aufs Webinterface zu verzichten.

Wenn ich ein Werkzeug habe, welches mir die Arbeit erleichtert, weil es Sachen übersichtlich darstellt ist das für mich nur von Vorteil, sofern mir der Selbe Funktionsumfang geboten wird. Davon gehe ich hier erst einmal aus. Sollte mich die GUI irgendwo beschränken, gucke ich mir gerne Kommandozeile an, sehe aber erstmal keine Notwendigkeit dafür.
 
Zuletzt bearbeitet:
Temporär:
Code:
service firewall stop
Dauerhaft:
Code:
service firewall disable

Über LAN solltest Du immer Zugriff haben.
 
Okay danke.
Noch eine Frage: Ist an meiner Vorgehensweise irgendetwas grundsätzlich verkehrt gewesen und habe ich irgendwo was falsch aufgesammelt?

Geht mir um diesen Part hauptsächlich, da er mir nicht richtig vorkommt.
Nun trage ich beim Server den ServerPrivte_Key ein (im Bild 1 das mit den Sternchen) und bei der Wireguard Software unter [Interface] "PrivateKey =" den ServerPublic-Key. Dann trage ich bei dem Tab mit den Peers im OpenWRT den PublicClient-Key ein und bei [Peer] in der Software unter "PublicKey =" den ClientPrivate ein, richtig? (Ich habe es auch andersherum probiert, funktioniert genausowenig). Anschließend habe ich folgende Firewall und Traffic-Rules eingerichtet:
 
Genau das habe ich durch, deswegen bin ich dann in die GUI gegangen, aber da funktioniert es genausowenig und ich weiß jetzt nicht wie ich das Troubleshooten kann, bzw. wie ich den Fehler finde. Es muss irgenwas im Router sein, da die Verbindung von außen ja gegeben ist. Nur damit bin ich für den Moment überfragt, da ich keine "Werkzeuge" habe um dem Problem auf die Spur zu kommen.
 
vertausche mal die IP-adressen bei deiner Software-konfiguration HOME
also bei Interface die .2 und bei peer die .1
aus sicht deines Sofware-Clients HOME ist der openWRT der peer

Und bei deiner Portfreigabe hast du ein zahlendreher drin ;) 51280 >51820
 
Zuletzt bearbeitet:
Habe mal die Ports auf 50000 geändert, damit man keine Zahlendreher bekommt. Soo,
aus sicht deines Sofware-Clients HOME ist der openWRT der peer
habe somit auch die Keys getauscht. Also der Server PublicKey bei Peer eingetragen und den Client PrivateKey bei Interface. Damit bin ich schonmal einen Schritt weiter, danke!

Nun wird's eigenartig. Sobald ich das mit meinem Rechner lokal (also im lokalen Netz 172.16.1.0/24) teste, scheints zu funktionieren. Ich kriege eine Response für den Handshake und das Keepalive packet wird gesendet.

2021-10-01 23_54_16-Window.png

Probiere ich das nun mit exakt dem gleichen Rechner aus beispielsweise dem Mobilfunknetz heraus bekomme ich kein Handshake. Das Interface im OpenWRT empfängt Pakete (bei jeder Anfrage für Handshake kommen 2 Pakete bei RX dazu, dazu kommt dann ein weiteres Paket bei TX), zeigt mir diese an und zeigt mir auch an, dass eines gesendet wird, allerdings kommt das irgendwie nicht beim Gerät an, das die Verbindung initiiert an. Ich habe testweise mal die Firewall ausgeschaltet, funktioniert auch nicht :/ Ich kriege nur ein
Code:
Handshake for peer 1 (1.2.3.4:50000) did not complete after 5 seconds, retrying (try X)

Jetzt frage ich mich:
a) Das passiert unabhängig vom Status der Firewall also hat die damit nichts zu tun?
b) Blockt der Betreiber des Mobilfunknetzes vielleicht das? Was nicht sein kann, da wir in der Firma auch WireGuard für unsere Firmenlaptops nutzen und es dort auch über das Mobilfunknetz geht :(
c) Wo kann denn der Fehler liegen?

Gruß und Danke,
Xiao
 
Wie schaut es den aus dem Mobilfunknetz aus, wenn du die Android/IOS Apps benutzt ?
grundsätzlich funzt das über das Mobilfunknetz, nutze ich auch.

Die haben beim Windows Clienten den Tunnel auf Kernel ebene geändert.
Dort hatte ich dann das Problem das ich per IPV6 nicht mehr zu meinem Wireguard Server connecten konnte, auch mit Hanshake problemen.
Evtl ist hier über das Handynetz ein ähnliches Problem.

Per Linux könnte man das auch nochmal prüfen
 
Zuletzt bearbeitet:
Hi,

also auch mit der Android App geht's nicht. Nehme ich einen anderen Rechner geht's auch nicht aus einem normalen Netzwerk also kein Mobilfunk. Firewall wird ausgeschaltet für die Tests, auch das ändert nichts, also liegt es für mich erstmal nicht daran. Das WG0 Interface empfängt Pakete und sendet auch ein Paket raus (zumindest zeigt es in der GUI an), dieses kommt aber beim Client enweder nicht an, oder da steht was falsches drin. Letzteres kann nicht sein, da wenn ich den Tunnel aus dem lokalen Netzwerk starte, dann ist der handshake OK, also muss das so richtig sein :/

Muss ich wohl WireShark anschmeißen bei Gelegenheit.

EDIT: Dazu muss noch gesagt werden, dass von besagten Rechnern und Hand App eine Verbindung per WireGuard in das Firmennetzwerk funktioniert, also liegt es nicht am Gerät oder Software darauf.
 
Zuletzt bearbeitet:
till69 schrieb:
Firewall mal komplett ausschalten bis VPN funktioniert
Niemals falls der Router direkt am Internet hängt!

@Xiaolong Welchen Internetanbieter hast du und bekommst du eine "echte" öffentliche IPv4 oder eine mit Carrier Grade NAT?

Das Setup bei mir ist etwas erweitert da am Internetzugang eine Fritzbox hängt und dahinter mein OpenWRT Router welcher bei IPv4 von der Fritzbox ein Port Forwarding bekommt und bei IPv6 von der Firewall der Fritzbox komplett ausgenommen ist. Ist damit direkt vergleichbar mit einem Setup wo der OpenWRT Router die Internetverbindung herstellt.

Zu meiner Konfiguration, in der Firewall benötigst du kein Port Forwarding (wird dein Setup eher stören), nur eine Ausnahme dass der Port von Außen erreichbar ist:

1659877563167.png


Xiaolong schrieb:
Jetzt habe ich in der Software die AllowedIPs, DNS und Endpoint eingetragen und es passiert... gar nichts :(
Sieht dann so aus:
Beim Client ist die Logik zum Eintragen natürlich anders herum:
1659878571797.png


Die IPv6 von deinem Client ist geraten, aber dem Server hast du ja hier die ::1 gegeben, DNS vom IPv6 muss natürlich die interne Lokale IPv6 des Routers sein.

AllowedIPs 0.0.0.0/0 und ::/0 leitet den gesamten Netzwerkverkehr über Wireguard, aber das ist in den Tutorials schön erklärt, ein PresharedKey ist nicht erforderlich und optional.
 
Hi und danke für die Antwort.

I'm unknown schrieb:
Beim Client ist die Logik zum Eintragen natürlich anders herum:
Also ich schnall das noch nicht ganz, die Logik ist ja umgedreht, d.h. hilf mir mal bitte auf die Sprünge:

Öffentlicher Schlüssel (Zeile ganz oben) = PrivateKey des Servers

[Interface]
PrivateKey = PublicKey des Servers (PrivateKey wird ja im WebInterface von OpenWRT eingetragen und stimmt mit dem oberen überein)
Address = Adresse des WG Interfaces
DNS = Adresse vom Router

[Peer]
PublicKey = PrivateKey des Clients (PublicKey wird ja im WebInterface von OpenWRT eingetragen)
AllowedIPs = IPs welche durch den Tunnel gerouted werden sollen, also hier alles demnach 0.0.0.0/0
Endpoint = dyndns Adresse unter der der Router erreichbar ist.

Korrekt?

Edit: Wenn ich die FW so einstelle wie du das sagst, dann kommen keine Pakete am Interface an (Ja ich habe mittlerweile die IP geändert zu dem Anfangspost und auch den Port:
2022-08-11 22_14_48-OpenWrt - Interfaces - LuCI.png
 
Zuletzt bearbeitet:
Nein, die Basics von Private und Public Key Austausch sollten die Tutorials eigentlich passend abbilden.

Der Private Key ist immer Geheim und nur der Public Key wird ausgetauscht. Der Public Key wird auch vom Private Key abgeleitet (anders herum geht das nicht), daher muss auch jeweils der Public Key von der Gegenseite eingetragen werden.
 
  • Gefällt mir
Reaktionen: kieleich
I'm unknown schrieb:
Sondern?
I'm unknown schrieb:
[...] die Basics von Private und Public Key Austausch sollten die Tutorials eigentlich passend abbilden.

Der Private Key ist immer Geheim und nur der Public Key wird ausgetauscht.
Ja, richtig. Warum muss man dann private Key in der Datei die ich mit mir auf anderen Geräten herumtragen eingetragen werden? Damit ist er ja nicht mehr Private. Im Gegenzug möchte der Router auch den Public Key eingetragen haben. Wenn die Logik vertauscht ist in der Config Datei, dann ist doch Private = Public und vice versa?

Was auch verwirrend ist, welcher Key soll wo hin? Server Key bei Interface und Client bei Peer. Welche Keys sollen wo genau hin, das ist das was in jedem Tutorial explizit fehlt und nirgends eindeutig beschrieben wird.
 
Moin,

ich versuche es mal so ...

server.conf

[Interface]
Address = 10.7.2.1/24
ListenPort = 64897
PrivateKey = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ==> server-key

[Peer]
PublicKey = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ==> client1.key
PresharedKey = zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
AllowedIPs = 10.7.2.2/32

[Peer]
PublicKey = ddddddddddddddddddddddddddddddddddddddddd ==> client2.key
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 10.7.2.3/32

[Peer]
PublicKey = eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ==> client3.key
PresharedKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
AllowedIPs = 10.7.2.4/32


hier die jeweilige client.conf (wg0) hier client 2

[Interface]
Address = 10.7.2.3/24
ListenPort = 64897
PrivateKey = ffffffffffffffffffffffffffffffffffffff ==> client2.key

[Peer]
PublicKey = gggggggggggggggggggggggggggggggggggggg ==> server.key
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = example.com:64897
PersistentKeepalive = 25

vielleicht hilft ja die darstellung zum verstaendnis.

gruss nase765
 
  • Gefällt mir
Reaktionen: Xiaolong
Hallo Nase,

ja, danke dafür, genau diese Darstellung habe ich gebraucht zum Verständnis!
 
So, jetzt nochmal Tabula Rasa und von vorne.

Router auf Factory Reset und nochmal:
Angelegt sind folgende Interfaces:
2022-08-12 22_19_25-OpenWrt - Interfaces - LuCI.png

Wovon WG0 die folgenden Einstellungen hat:
2022-08-12 22_19_45-OpenWrt - Interfaces - LuCI.png

Und hier die Settings für den Peer im WG0:
2022-08-12 22_20_18-OpenWrt - Interfaces - LuCI.png

Das sind die normalen Firewallregeln:
2022-08-12 22_20_46-OpenWrt - General Settings - LuCI.png

Und das ist die Inbound Rule für den WG0:
2022-08-12 22_20_59-OpenWrt - Traffic Rules - LuCI.png

Dazu habe ich folgende Config beim Client:
2022-08-12 22_21_57-Tunnel bearbeiten.png

Und solange ich im LAN bin, scheint er die Verbindung erfolgreich aufzubauen (s. unterste Zeilen)
2022-08-12 22_22_41-WireGuard.png

So weit so gut. Nehme ich jetzt exakt die selbe conf Datei und versuche ich das aus dem WAN heraus, geht das nicht. Es kommen keine Pakete am Interface an. Was übersehe ich? Der dyndns kann es nicht sein, da ich darüber in das Adminpanel reinkomme.
 

Anhänge

  • 2022-08-12 22_20_18-OpenWrt - Interfaces - LuCI.png
    2022-08-12 22_20_18-OpenWrt - Interfaces - LuCI.png
    70,6 KB · Aufrufe: 179
Zurück
Oben