.titleBar { margin-bottom: 5px!important; }

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

Dieses Thema im Forum "Freetz" wurde erstellt von Casturdy, 8 Aug. 2018.

Schlagworte:
  1. Casturdy

    Casturdy Neuer User

    Registriert seit:
    8 Aug. 2018
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    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?
     
  2. Shirocco88

    Shirocco88 Mitglied

    Registriert seit:
    4 Jan. 2016
    Beiträge:
    604
    Zustimmungen:
    28
    Punkte für Erfolge:
    28
    Wie sieht denn die Routing-Table aus ?
    einfach "netstat -rn" eingeben und Output posten
     
  3. Casturdy

    Casturdy Neuer User

    Registriert seit:
    8 Aug. 2018
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    #3 Casturdy, 8 Aug. 2018
    Zuletzt bearbeitet: 8 Aug. 2018
    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
     
  4. Casturdy

    Casturdy Neuer User

    Registriert seit:
    8 Aug. 2018
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    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?
     
  5. Whoopie

    Whoopie Aktives Mitglied

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    812
    Zustimmungen:
    3
    Punkte für Erfolge:
    18
    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
     
  6. Casturdy

    Casturdy Neuer User

    Registriert seit:
    8 Aug. 2018
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    #6 Casturdy, 9 Aug. 2018
    Zuletzt von einem Moderator bearbeitet: 9 Aug. 2018
    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.
     
  7. Whoopie

    Whoopie Aktives Mitglied

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    812
    Zustimmungen:
    3
    Punkte für Erfolge:
    18
    #7 Whoopie, 10 Aug. 2018
    Zuletzt bearbeitet: 10 Aug. 2018
    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
     
  8. Casturdy

    Casturdy Neuer User

    Registriert seit:
    8 Aug. 2018
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    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.
     
  9. Shirocco88

    Shirocco88 Mitglied

    Registriert seit:
    4 Jan. 2016
    Beiträge:
    604
    Zustimmungen:
    28
    Punkte für Erfolge:
    28
    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.
     
  10. prisrak1

    prisrak1 Neuer User

    Registriert seit:
    14 Mai 2017
    Beiträge:
    72
    Zustimmungen:
    3
    Punkte für Erfolge:
    8
    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.
     
  11. Casturdy

    Casturdy Neuer User

    Registriert seit:
    8 Aug. 2018
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    #11 Casturdy, 10 Aug. 2018
    Zuletzt bearbeitet: 13 Aug. 2018 um 15:47 Uhr
    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.

    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:
    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:
    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.