4 Punkte von GN⁺ 2025-12-20 | 1 Kommentare | Auf WhatsApp teilen
  • GotaTun ist eine WireGuard-Implementierung, die in Rust geschrieben wurde und auf schnelle, effiziente und stabile VPN-Verbindungen abzielt
  • Sie wurde als Fork von Cloudflares BoringTun-Projekt entwickelt und integriert Mullvads Datenschutzfunktionen wie DAITA und Multihop
  • Um die in wireguard-go auftretenden Absturzprobleme zu beheben, wurde sie zunächst in der Android-Version eingeführt; die Absturzrate sank von 0,40 % auf 0,01 %
  • Mit dem Wechsel auf Rust wurden Probleme durch FFI-Komplexität und Instabilität der Go-Runtime beseitigt, wodurch Wartbarkeit und Debugging-Effizienz verbessert wurden
  • Mullvad plant für 2026 die Ausweitung von GotaTun auf alle Plattformen sowie Sicherheitsaudits und Performance-Verbesserungen

Überblick über GotaTun

  • GotaTun ist eine von Mullvad VPN entwickelte Rust-basierte WireGuard®-Implementierung, die auf hohe Geschwindigkeit, Stabilität und Effizienz ausgelegt ist
    • Entwickelt als Fork von Cloudflares BoringTun
    • Der Name kombiniert BoringTun mit dem Tunnel Götatunneln in Göteborg, Schweden
  • Integriert Mullvads datenschutzverstärkende Funktionen wie DAITA und Multihop
  • Nutzt sicheres Multithreading in Rust und eine Zero-Copy-Speicherstrategie, um die Performance zu optimieren
  • Ende November 2024 für Android ausgerollt, andere Plattformen sollen 2026 folgen

Grenzen des bisherigen wireguard-go

  • Mullvads Mobile-Apps verwenden seit Jahren das Go-basierte wireguard-go
    • Mehrere VPN-Anbieter nutzen dieselbe Implementierung
  • Seit Mitte 2024 pflegt Mullvad einen Fork von wireguard-go, um DAITA- und Multihop-Unterstützung bereitzustellen
  • Allerdings traten mehr als 85 % der im Google Play Developer Console gemeldeten Abstürze in wireguard-go auf
    • Einige Probleme wurden behoben, viele bestehen jedoch weiterhin
  • Es gab Komplexität und Instabilität durch die Nutzung von FFI (Foreign Function Interface) zwischen Rust und Go
    • Das Verhalten der Go-Runtime ist aus Rust-Code heraus intransparent, und bei Abstürzen ist die Wiederherstellung von Stack-Traces schwierig
    • Dadurch wurden Debugging und langfristige Wartung erschwert

Ergebnisse unter Android

  • Nach der Einführung von GotaTun trat kein einziger Absturz mehr auf
    • Alle zuvor in wireguard-go auftretenden Abstürze wurden beseitigt
  • Seit Android-App-Version 2025.10 (Veröffentlichung Ende November) sank die von Nutzern wahrgenommene Absturzrate von 0,40 % auf 0,01 %
  • Auch im Nutzerfeedback wurden höhere Geschwindigkeit und geringerer Akkuverbrauch gemeldet

Ausblick

  • Anfang 2026 ist ein Sicherheitsaudit durch Dritte geplant
  • Auf allen Plattformen (einschließlich Desktop und iOS) soll wireguard-go durch GotaTun ersetzt werden
  • Performance-Verbesserungen sollen kontinuierlich vorangetrieben werden
  • Mullvad betrachtet 2026 als wichtigen Wendepunkt für den Ausbau von GotaTun

1 Kommentare

 
GN⁺ 2025-12-20
Hacker-News-Kommentare
  • Auf dem Pixel 8 war die Leistungssteigerung deutlich spürbar
    Früher schaffte wireguard-go nicht einmal 100 Mbps, mit der GotaTun-Version sind es über 500 Mbps
    Allerdings gibt es durch einen neuen Bug das Problem, dass es nicht in den Deep-Sleep-Modus geht und der Akku plötzlich 10-mal schneller leer wird

    • Auf meinem alten Samsung A5 hält der Akku lange, selbst wenn wireguard 24/7 eingeschaltet ist
      Das Pixel 8 ist viel leistungsstärker, daher ist es wahrscheinlich eher ein Bug auf der Android-Seite
    • Ich habe ein ähnliches Phänomen auch bei ZeroTier oder MizuDroid gesehen. Sieht nach einem Problem im Android-Netzwerk-Stack aus
    • Auf dem Raspberry Pi 5 gab es das gleiche Phänomen. Vielleicht liegt es an fehlender ARM-Optimierung
    • Es könnte am MTU-1320-Problem liegen
    • Deshalb begann die Mullvad-App auf dem Pixel 6a plötzlich in nur 1 Sekunde zu verbinden. Früher dauerte es 5–10 Sekunden
  • Ich mag WireGuard wirklich sehr und habe deshalb selbst ein Projekt namens WrapGuard gebaut
    Ich habe es in Go geschrieben, damit Apps ohne Root-Rechte laufen können
    Ich kenne mich mit Rust nicht gut aus und frage mich, ob Rust für Firmware oder Netzwerksoftware besser geeignet ist
    WrapGuard GitHub-Link

    • Firmware muss in einer GC-freien Umgebung laufen, daher ist Rust besser geeignet
      Rust ist dank vorhersagbarem Timing und einem starken Typsystem sehr zuverlässig
      Aber für Netzwerksoftware ist Go ebenfalls völlig ausreichend, und am Ende lautet das Fazit: „Es ist besser, eine vertraute Sprache zu verwenden
    • Letztlich ist es wie bei dem Spruch „Nimm den Teufel, den du kennst“: In der Praxis ist es vernünftiger, eine Sprache zu verwenden, die man kennt
    • Go hat es mit FFI schwer, daher ist Rust als eingebettete Bibliothek vorteilhafter
    • Ich überlege, was für lokales Container-Networking ohne notwendige Verschlüsselung besser wäre
      Ich möchte Apples neues container tool ausprobieren
    • Es wäre gut, wenn es eine Funktion gäbe, mehrere VPN-Tunnel zu einem zu bündeln
      AirVPN erlaubt zum Beispiel 5 gleichzeitige Verbindungen; es wäre schön, wenn man sie zusammenführen und den Traffic bündeln könnte
  • Es wäre gut, wenn GotaTun auch in der Tailscale-Android-App eingesetzt würde. Ich nutze Tailscale für die Verbindung zu Mullvad

    • GotaTun ist eine Mullvad-spezifische Funktion, daher ist es unwahrscheinlich, dass Tailscale sie übernimmt
      Das Tailscale-Team ist sehr gut darin, Go-basierte Bibliotheken zu optimieren,
      und erreichte im April 2023 mit wireguard-go eine 10-Gbps-Leistung
      Zugehöriger Blogbeitrag
  • Ich fand die Probleme mit dem Memory Paging von Go und dem Schutz vor Stack Overflow bei Goroutines interessant
    Ich frage mich, warum GoString so viel Speicher paged
    Siehe Issue #6727, Issue #7728

  • Es wäre gut, wenn auch das WireGuard-Protokoll selbst verbessert würde
    Derzeit gibt es die Einschränkung, dass es schwierig ist, Sperren durch Regierungen oder ISPs zu umgehen

    • Das ist nicht die Aufgabe von WireGuard, sondern sollte von Kapselungsprotokollen wie shadowsocks übernommen werden
      WireGuard ist als einfacher L3-UDP-Tunnel konzipiert
    • Deshalb gibt es Forks wie amnezia-wg
    • In der Mullvad-App gibt es bereits Umgehungsoptionen wie shadowsocks,
      aber es wäre besser, wenn so etwas direkt im Protokoll eingebaut wäre
    • Wenn man mehr darüber lesen möchte, kann man im Abschnitt Known Limitations der offiziellen Dokumentation nachsehen
  • Wenn es ein Implementierungsteam gibt, würde ich gern fragen — warum wurden die Änderungen nicht upstream in BoringTun eingebracht?

    • BoringTun befindet sich seit 3 Jahren in einem strukturellen Umbau, daher ist es nachvollziehbar, dass Mullvad unabhängig vorgegangen ist
      Je mehr Implementierungen es gibt, desto höher sind Stabilität und Vertrauenswürdigkeit des Protokolls
      Persönlich vertraue ich Mullvad mehr als Cloudflare
    • BoringTun ist faktisch in einem Zustand von eingestellter Wartung
      Obscura VPN ist auf den Fork NepTUN umgestiegen
      NepTUN GitHub-Link
      Ich frage mich, warum Mullvad erneut geforkt hat und ob geplant ist, sich mit bestehenden Forks zusammenzutun
  • Ich halte Mullvad für die vertrauenswürdigste Wahl unter den VPNs
    Aber die Leute fühlen sich stärker von Rabattcodes von YouTubern angezogen

    • In Sachen Privatsphäre ist Mullvad top, landet aber auf den meisten VPN-Sperrlisten
      NordVPN umgeht das gut. Zum Beispiel wird Mullvad bei Imgur oder bei Zugriffen innerhalb Großbritanniens blockiert
    • Für normale Nutzer geht es meist um das Entsperren von Geoblocking, daher ist Mullvad nicht besonders attraktiv
    • Seit dem Ende von Port Forwarding haben es auch viele aus ihrer Auswahl gestrichen
    • Die IPs von Mullvad werden von Streaming-Diensten oft blockiert, sodass man am Ende doch Nord nutzen muss
    • Außerdem werden viele VPN-Marken von einem Unternehmen aufgekauft und umgelabelt
  • Ich dachte, WireGuard würde auf Android im Kernel laufen

    • Tatsächlich muss es als Modul aktiviert werden, im Android-Kernel ist es aber deaktiviert
  • Ich würde gern mehr Daten zur Analyse der Absturzursachen von wireguard-go sehen
    Ich frage mich, ob es ein Bug in der Bibliothek selbst ist oder ein FFI-Problem

    • Dass es bei WireGuard, das auf einfachem UDP basiert, Abstürze gibt, hat mich überrascht
  • Ich verwende in der MintFlow-App keinen Go-basierten Proxy-Code
    Stattdessen implementiere ich einige Proxy-Protokolle in Rust
    Für WireGuard verwende ich eine C-Implementierung auf Basis des fdio-vpp-Plugins

    • Dass eine vpp-basierte Implementierung auf iOS möglich ist, überrascht mich
      Ich habe früher selbst etwa 6 Monate mit vpp gearbeitet und fand es ziemlich interessant