Wireguard Durchsatz instabil

  • Hallo zusammen,


    ich bin mit meinem Latein am Ende und hoffe jemand von euch kann mir helfen.


    Ich habe bei mir Zuhause ein NAS wo ich z.B. immich als Google Fotos alternative hoste. Da ich hinter einem CGNAT hänge kann ich es leider nicht einfach so freigeben/nutzen, da mir eine eindeutige öffentliche IPv4 fehlt. Meine Idee war daher ich erstelle auf meinem Root Server einen Wireguard Server und lasse das NAS zu diesem connecten.


    Auf Seite des Root Servers läuft caddy und dient als reverse proxy der entsprechenden Wireguard IP+Port. Das ganze funktioniert auch soweit und meine Dienste sind erreichbar, jetzt kommt allerdings mein Problem. Der Durchsatz ist für 1-2 Sekunden entsprechend meines Uploads, danach kollabiert er und pendelt dann immer hin und her. An der MTU hab ich schon rumgeschraubt, kommt aber zum identischen Problem. Ich konnte das Problem bereits auf den Wireguard Tunnel beschränken, IPerf zeigt hier das identische verhalten sowie Paketverlust. Hat jemand eine Idee?


    Danke für jede Form der Hilfe.

  • Da ich hinter einem CGNAT hänge kann ich es leider nicht einfach so freigeben/nutzen, da mir eine eindeutige öffentliche IPv4 fehlt.

    Warum nicht per IPv6?


    Auf Seite des Root Servers läuft caddy und dient als reverse proxy der entsprechenden Wireguard IP+Port.

    Warum das? Warum keine direkte Portfreigabe?


    IPerf zeigt hier das identische verhalten sowie Paketverlust.

    Paketverluste wären eine sehr zuverlässige Erklärung für dein Problem. Hast du iperf mit UDP oder mit TCP getestet? Was für einen Internetanschluss hast du und gibt es UDP Paketverluste auch zu anderen Zielen? Es gibt ja einige öffentliche iperf Server im Netz, gegen die man testen kann.

  • Ich hatte mal ein ganz ähnliches Problem mit schwankendem Durchsatz über Wireguard. Bei mir war’s am Ende die MTU. Ich hab mit ping -M do -s rumgetestet, bis ich die größte Paketgröße ohne Fragmentierung gefunden hab, und dann die MTU in der Wireguard-Config entsprechend angepasst auf beiden Seiten. Seitdem läuft’s stabil.

    Falls du das schon probiert hast, check mal auch die Congestion Control auf dem Server. bbr hat bei mir nochmal einen Schub gebracht im Vergleich zu cubic.

    https://nc.forum-statistik.de/

  • Warum nicht per IPv6?

    Je nach öffentlichem Netz etc. konnte ich über mein Handy das System via IPv6 nicht erreichen.


    Warum das? Warum keine direkte Portfreigabe?

    Wollte etwas sprechendes für meine Eltern.


    Paketverluste wären eine sehr zuverlässige Erklärung für dein Problem. Hast du iperf mit UDP oder mit TCP getestet? Was für einen Internetanschluss hast du und gibt es UDP Paketverluste auch zu anderen Zielen? Es gibt ja einige öffentliche iperf Server im Netz, gegen die man testen kann.

    Ich habe via TCP getestet. Ich hab einen Glasfaseranschluss mit 200Mbit Upload. Danke für den Tipp, ich hab mal gegen einen öffentlichen gestestet, auch hier retries aber die volle Bandbreite geht durch.

  • Ich vermute mal, dass du einen dsl Anschluss hat. Rein rechnerisch wären es 1432 (IPv4). kannst es ja mal auf beiden Geräten testen

    Glasfaser um genau zu sein, Deutsche Glasfaser ist mein Provider. Teste ich sofort, danke dir. :)

    EDIT: Pendelt auch mit derm MTU leider weiter.

  • Ich hatte mal ein ganz ähnliches Problem mit schwankendem Durchsatz über Wireguard. Bei mir war’s am Ende die MTU. Ich hab mit ping -M do -s rumgetestet, bis ich die größte Paketgröße ohne Fragmentierung gefunden hab, und dann die MTU in der Wireguard-Config entsprechend angepasst auf beiden Seiten. Seitdem läuft’s stabil.

    Falls du das schon probiert hast, check mal auch die Congestion Control auf dem Server. bbr hat bei mir nochmal einen Schub gebracht im Vergleich zu cubic.

    Bei mir stehen reno und cubic zur Verfügung, gibts davon eine die zu bevorzugen ist?

  • Bei mir stehen reno und cubic zur Verfügung, gibts davon eine die zu bevorzugen ist?

    Ja, auf jeden Fall. Von den beiden ist cubic die bessere Wahl, gerade bei Verbindungen mit höherer Latenz oder Paketverlust (was bei VPNs öfter vorkommt).
    reno ist ziemlich alt und konservativ, bremst den Durchsatz schneller runter.
    Wenn du also nicht gerade einen Spezialfall hast, würde ich klar auf cubic setzen.

  • Da Wireguard mit UDP und nicht mit TCP arbeitet, werden die Congestion Control Algorithmen gar nichts ändern.


    Du musst mit UDP testen, ob es Paketverluste gibt, ob sie von der Paketgröße oder der Paketfrequenz abhängen, usw. Alles andere bringt dich nicht weiter. Immer dran denken: UDP. Nicht TCP. Die klassischen Tipps für Internetzugänge oder langsame Downloads gehen am Ziel vorbei.

  • Da Wireguard mit UDP und nicht mit TCP arbeitet, werden die Congestion Control Algorithmen gar nichts ändern.


    Du musst mit UDP testen, ob es Paketverluste gibt, ob sie von der Paketgröße oder der Paketfrequenz abhängen, usw. Alles andere bringt dich nicht weiter. Immer dran denken: UDP. Nicht TCP. Die klassischen Tipps für Internetzugänge oder langsame Downloads gehen am Ziel vorbei.

    Verstehe, darüber hatte ich nicht nachgedacht. Kannst du mir hier eine Vorgehensweise empfehlen, damit hatte ich bisher wenig Berührung.

  • iperf3 Tests hast du zu deinem Server ja schon gemacht. Auf Client Seite kannst du durch ein einfaches "-u" UDP Tests durchführen. Bedenke, dass du dabei eine Geschwindigkeit mit angeben musst, sonst findet der Test nur mit 1 MBit/s statt. Ich würde mit 100 MBit/s anfangen und mich dann nach oben unten vortasten, bis die Paketfehlerrate in der Schlussstatistik bei maximal 2% ist. Das ist dann die etwa zu erwartende UDP Datenrate zwischen deinen Systemen.


    iperf3 -c <server> -u -b 100M

  • Unabhängig von den Paketverlustproblemen zum Setup: genau beim geschilderten Problem (bevor mans selbst strickt) kann Pangolin helfen. Pangolin wird auf dem Internet Server installiert, die zugehörige Plug-and-Play Komponente Newt kommt auf den CGNAT Server. Supersimpel und schnell einzurichten, zudem kann Pangolin Zugangsrechte verwalten und auch an andere ID Provider angeschlossen werden. SSO kanns auch.

    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

    Edited once, last by TBT ().