[Erledigt] Freetz LAN-LAN-Kopplung über WireGuard

Casturdy

Neuer User
Mitglied seit
8 Aug 2018
Beiträge
6
Punkte für Reaktionen
0
Punkte
1
Hallo,

hat hier schon jemand Freetz mit dem WireGuard Patch zum Laufen bekommen?
Ich habe den Freetz trunk, FRITZ!OS Version 06.93, auf zwei 7490er Fritzboxen installiert und versuche gerade eine LAN-LAN-Kopplung einzurichten.
Leider komme ich nur so weit, dass sich der Tunnel zwischen den beiden Boxen aufbaut, also 10.0.0.1 und 10.0.0.2, nicht zwischen 192.168.1.X und 192.168.2.X.

Die Konfiguration sieht so aus:

Box 1:
Netz: 192.168.1.0/24
WG-IP-Adresse: 10.0.0.1/24

Code:
[Interface]
PrivateKey = uKjthUdw/in2HOdkMK2UP6qFSvUy9SH7GUor7pqKVHE=
ListenPort = 51820

[Peer]
PublicKey = xb+DdwDUKIBaOsVRnoI4/cQEpc07cwrbF1MhClp87Q0=
Endpoint = test1.xyz.de:51820
AllowedIPs = 10.0.0.0/24, 192.168.2.0/24

Box 2:
Netz: 192.168.2.0/24
WG-IP-Adresse: 10.0.0.2/24

Code:
[Interface]
PrivateKey = eLdQZPe3GHXmr0v7DPGlqUCTOff3LgsDzGu9zdZP0kE=
ListenPort = 51820

[Peer]
PublicKey = doMqPQcm69mZappJ32XolmOy++U/eQm4ANMdDgac4hc=
Endpoint = test2.xyz.de:51820
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
Bei beiden ist dazu auch noch internet_forwardrules = "udp 0.0.0.0:51820 0.0.0.0:51820"; in die ar7.cfg eingetragen.
Ich habe hier im Forum schon gelesen, dass man statt der internet_forwardrules die voip_forwardrules benutzen soll, allerdings funktioniert damit nicht einmal der Tunnel zwischen den beiden Boxen.

Das sich die beiden Netze nicht sehen liegt bestimmt an der Firewall, ich weiß bloß nicht, wo ich da noch was einstellen kann.
In der vpn.cfg gibt es einen accesslist-Eintrag, aber dieser wird ja auch nur beim aktiven VPN-Zugang benutzt.
Weiß zufällig jemand, wo man sonst einen ähnlichen Eintrag vornehmen kann, der für WireGuard funktionieren würde?
 
Leider komme ich nur so weit, dass sich der Tunnel zwischen den beiden Boxen aufbaut, also 10.0.0.1 und 10.0.0.2, nicht zwischen 192.168.1.X und 192.168.2.X.

Wie sieht denn die Routing-Table aus ?
einfach "netstat -rn" eingeben und Output posten
 
Box 1:
Code:
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 dsl
2.200.XXX.XX    0.0.0.0         255.255.255.255 UH        0 0          0 dsl
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 wg0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 lan
176.95.16.210   0.0.0.0         255.255.255.255 UH        0 0          0 dsl
176.95.16.251   0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 lan
192.168.179.0   0.0.0.0         255.255.255.0   U         0 0          0 guest
192.168.180.1   0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.180.2   0.0.0.0         255.255.255.255 UH        0 0          0 dsl

Box 2:
Code:
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 dsl
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 wg0
91.106.128.141  0.0.0.0         255.255.255.255 UH        0 0          0 dsl
91.106.XXX.X    0.0.0.0         255.255.254.0   U         0 0          0 dsl
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 lan
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 lan
192.168.180.1   0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.180.2   0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.189.0   0.0.0.0         255.255.255.0   U         0 0          0 guest

Die eine Box ist direkt hinter einer CPE, die andere ist direkt als VDSL2 Modem/Router an der Dose.

EDIT:
Also ich habe gerade testweise die normale LAN-LAN-Kopplung (Internet -> Freigaben -> VPN) eingerichtet.
An der Ausgabe von netstat ändert sich da, nach erfolgreicher Kopplung, überhaupt nichts.
Einzig wg0 ist weg, was aber daran liegt, dass ich WireGuard ausgeschaltet habe.
Das Ganze scheint über eine ganz andere Schiene zu laufen.

//edit by stoney: Vollzitat von darüber entfernt
 
Zuletzt bearbeitet:
Also, ich habe WireGuard mal mit gleicher Konfiguration zwischen VMs laufen lassen, es funktioniert einwandfrei.
Dort wird, zusätzlich zu der 10.0.0.0 wg0 Route, automatisch auch noch eine 192.168.X.0 wg0 Route gesetzt.

VM1:
Code:
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 wg0
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 wg0

VM2:
Code:
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 wg0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wg0

Warum setzt Freetz nur die erste 10.0.0.0 Route und ignoriert die zweite?
Bug?

Kann ich die fehlende Route irgendwo nachtragen, sodass sie reboots überlebt?
 
Hi,

als ich das damals in Freetz eingebaut habe, habe ich an eine LAN-LAN-Kopplung nicht gedacht, sondern eher an Roadwarrior-Szenarien.

Da nicht das wg-quick Skript verwendet wird (da es bash-basiert ist), um Wireguard zu konfigurieren, werden die Routen für die Netze unter "AllowedIPs" nicht automatisch hinzugefügt.

Du kannst die Routen aber m.E. in der rc.custom (unter 'Freetz' im Webinterface) eintragen, damit sie nach einem Reboot vorhanden sind.

Gruß,
Whoopie
 
Alles klar, und danke, dass du es eingebaut hast.


Bei der rc.custom steht jetzt aber:
Warnung: Konfiguration in der aktuellen Sicherheitsstufe nicht verfügbar!

Ist die Methode mit echo 0 > /tmp/flash/mod/security && modsave nicht mehr aktuell?
Nach dem Ausführen dieser kriege ich da immer noch die gleiche Meldung angezeigt.


EDIT:
Geht doch, ich habe bloß bei der falschen Box geschaut.

Naja, ich habe es mal testweise manuell eingegeben:

Box1:
Code:
ip route add 192.168.1.0/24 via 10.0.0.2 dev wg0

Box2:
Code:
ip route add 192.168.2.0/24 via 10.0.0.1 dev wg0

Jetzt läuft es.

Der Durchsatz hat sich im Vergleich zur Fritzbox eigenen LAN-LAN-Kopplung gleich verfünffacht.
Wenn das jetzt noch einigermaßen stabil läuft, dann war es den Aufwand auf jeden Fall wert.

EDIT2:

Ich habe das gerade eingetragen und neu gestartet.
Der Tunnel wurde nach dem Booten gleich aufgebaut.
Damit ist das Thema erledigt.

Vielen Dank!

### Zusammenführung Doppelpost by stoney ###

Einen Hacken hat die Sache:
Die in rc.custom gesetzte Route überlebt den Neustart von WireGuard nicht.
Wenn man also die WireGuard Konfiguration ändert und übernehmen klickt, dann muss man die Route auch wieder manuell setzen, oder die Box neu starten.
Es ist also nicht die beste Lösung, aber zum Testen reicht es erst mal.

Außerdem habe ich noch PersistentKeepalive = 25 in die Konfiguration eingetragen, damit der Tunnel nicht gleich wieder zusammenbricht, sonst hat man wieder das o.g. Problem.
 
Zuletzt bearbeitet von einem Moderator:
Kannst du mal folgenden Patch testen?

Code:
Index: files/root/etc/init.d/rc.wireguard
===================================================================
--- files/root/etc/init.d/rc.wireguard    (Revision 14785)
+++ files/root/etc/init.d/rc.wireguard    (Arbeitskopie)
@@ -13,6 +13,9 @@
     ip address add $WIREGUARD_IP dev wg0
     wg setconf wg0 /tmp/flash/wireguard/wireguard.conf
     ip link set wg0 up
+    wg show wg0 allowed-ips | while read peer ip; do
+        for i in $ip; do ip route add $i dev wg0; done
+    done
     echo 'done.'
 }

Es fehlt allerdings noch die Überprüfung, ob eine "more specific route" schon von einer "less specific route" abgedeckt wird, z.B. wenn in AllowedIPs 10.0.0.3/32 steht und das Subnetz 10.0.0.0/24 ist, dann wird trotzdem eine Route für 10.0.0.3 hinzugefügt. Ausserdem muss noch 0.0.0.0/0 rausgefiltert werden.

Danke und Gruß,
Whoopie
 
Zuletzt bearbeitet:
Klar kann ich das, aber wahrscheinlich erst am Montag, vorher komme ich nicht dazu.

Ich wollte Freetz sowieso noch mal mit dem aktuellen WireGuard snapshot bauen.
Die Performance soll ja schon mit dem letzten gestiegen sein: Link
Und den 0.0.20180809 gibt es seit einigen Stunden auch schon.

Außerdem wollte ich noch die MTU anpassen, nachdem ich das hier gelesen habe: Link

Ich klatsche hier dann einen EDIT ran, wenn ich alles getestet habe.
 
Der Durchsatz hat sich im Vergleich zur Fritzbox eigenen LAN-LAN-Kopplung gleich verfünffacht.
verwendet WireGuard-VPN keine Compression ?
Hinweis: bei AVM-VPN kann man dies in vpn.cfg per phase2ss= comp-no bzw. comp-all aus- bzw. einschalten.
 
wäre super, wenn eine richtige Anleitung jemand zur Verfügung stellen könnte. Was man zum Beispiel überall eingeben müsste. Konfiguration etc. zum Beispiel wie bei Oppen VPN. Vielen Dank im Voraus. Würde auch gerne testen.
 
verwendet WireGuard-VPN keine Compression ?
Nein, soweit ich weiß nicht: Link
Klingt auch so als wäre es nicht geplant: Link

Aber danke für den Hinweis, ich werde auch das noch mal testen.

Würde auch gerne testen.
Also wenn du es jetzt testen willst, dann brauchst du eigentlich nur den Thread lesen.
Alles, was dieses Setup betrifft, ist hier schon drin.

Eine Schritt für Schritt Anleitung kann ich auch schreiben, wird aber warten müssen.

EDIT:
Kannst du mal folgenden Patch testen?
Ich habe den Patch gerade ausprobiert.
Nach dem Start der Box wird keine 192.168.X.0 Route angelegt.

Wenn ich den Dienst neu starte, wird Folgendes angezeigt:
Code:
ip: RTNETLINK answers: File exists
Liegt wahrscheinlich an dem 10.0.0.0 Eintrag, der ja zuvor ohne Weiteres zutun bereits angelegt wurde.
Außerdem dauert der Neustart des Dienstes geschätzt 20 Sekunden, die 192.168.X.0 Route ist dann aber auch angelegt.

Wenn man das mit dem rc.custom Eintrag kombiniert, dann hätte man eine fast funktionierende Lösung, wenn da nicht Folgendes wäre:
Manchmal wird beim Neustart die WireGuard-Konfiguration überhaupt nicht geladen.
WireGuard hört dann auf einen zufälligen Port, weder IPs noch Schlüssel sind bei der wg Ausgabe zu sehen.
Die /tmp/flash/wireguard/wireguard.conf ist zu dem Zeitpunk von wg setconf wohl noch nicht lesbar.


Ich habe es mir jetz einfach gemacht und die benötigten Routen an Stelle des Patches direkt in die rc.wireguard eingetragen:
Code:
ip route add 192.168.2.0/24 via 10.0.0.1 dev wg0
Das funktioniert bisher am besten.
Die Route wird sowohl beim Start der Box als auch beim Neustart von WireGuard angelegt.
Außerdem dauert der Neustart des WireGuard Dienstes nicht mehr als eine Sekunde.

EDIT2:
Ich habe die Boxen jetzt noch einige Male neu gestartet.
Das Problem der nicht eingelesen Konfiguration scheint immer dann aufzutreten, wenn keine Internetverbindung besteht.
Da der Verbindungsaufbau beim DSL-Anschluss recht langsam ist, tritt das Problem hier besonders häufig auf.

EDIT3:
Hinweis: bei AVM-VPN kann man dies in vpn.cfg per phase2ss= comp-no bzw. comp-all aus- bzw. einschalten.
Ich habe das eben mal versucht.
Wenn ich comp-no setze, speichere und die Box neu starte, wird, warum auch immer, keine Verbindung mehr aufgebaut.
Deswegen kann ich dazu auch keine Übertragungsraten posten.

Aber hier mal ein paar Vergleiche mit dem default comp-all.
Code:
        ipsec       wireguard
curl:   0,97 MB/s    2,77 MB/s
smb:    0,66 MB/s    2,54 MB/s
scp:    0,98 MB/s    2,68 MB/s

Das sind durchschnittliche Maximalwerte bei jeweils 5 Durchläufen.
Maximaler Upload der Leitung sind 3,1 MB/s.
Da es eine DSL-Leitung ist, schwanken die Werte ordentlich hin und her, ipsec kommt aber nie über 1,0 MB/s.

Also, fünffacher Durchsatz ist es nicht, dreifacher trifft es schon eher.
 
Zuletzt bearbeitet:
Ich buddel das Teil mal aus hier:eek:

Hat hier jemand aktuelle Erkenntnisse, ob eine LAN-LAN-Kopplung zwischen 2 FritzBoxen mittels WireGuard mittlerweile problemlos funktioniert?
 
Hast du schonmal ans "onlinechanged" gedacht? .. hier das "ip route" ausführen lassen, immer wenn die Box online geht?
 
An was? Was soll "onlinechanged" sein?
 
So ich konnte zumindest den Tunnel einmal kurz aufbauen, und nach Hinzufügen der Route waren die entfernten Netze auch erreichbar.

Leider ist seitdem Neustart der 7490 keine Verbindung mehr möglich...
 
Zuletzt bearbeitet:
"onlinechanged" ist das Event, welches durchgeführt wird, wenn einmal die Box offline geht (hier können Skripte ausgeführt werden) und wenn dann die Box wieder online ist (auch dann werden wieder Skripte ausgeführt).
 
Oh sorry, ich hatte nen Typo drin - meinte die 7490 von AVM...
Trotzdem danke :)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.