Mullvad hat eine neue WireGuard-Implementierung namens GotaTun vorgestellt, die in Rust statt in Go geschrieben wurde. Ziel ist nicht ein neues VPN-Protokoll, sondern eine stabilere, schnellere und effizientere Userspace-Umsetzung von WireGuard mit modernen Techniken wie sicherem Multithreading und zero-copy-Speicherzugriff. Dabei werden Daten nicht unnötig im Speicher kopiert, sondern möglichst direkt dort verarbeitet, wo sie liegen. GotaTun ist ein Fork von Cloudflares BoringTun und der Name spielt auf den Götatunneln in Göteborg, dem Sitz von Mullvad, an.
Auf Mobilplattformen instabil
Der Grund für diesen Schritt liegt in der Praxis: Mullvads bisherige Userspace-Bibliothek wireguard-go war auf Mobilgeräten, insbesondere auf Android, sehr anfällig für Abstürze. Mullvad hat auf Android bereits auf GotaTun umgestellt und dort die Absturzrate dramatisch senken können. Das Feedback zu stabilerer Verbindung, besserer Leistung und geringerem Akkuverbrauch bestätigt die Entwicklung.
Rust+Go=NoGo
Technisch war die Kombination von Rust-basiertem VPN-Stack und Go-Code bislang schwer zu pflegen, weil Rust und Go unterschiedliche Laufzeitmodelle und Schnittstellen haben. Durch den Austausch gegen GotaTun entfallen diese Schwierigkeiten, was Debugging und Wartung deutlich vereinfacht.
Ausblick auf 2026
Wie es in der Ankündigung heißt, plant Mullvad, GotaTun 2026 auf weiteren Plattformen wie Desktop und iOS einzusetzen. Zum Jahresbeginn findet zudem eine weitere Sicherheitsprüfung durch einen Drittanbieter statt. Des Weiteren soll die Gesamtleistung weiter verbessert werden.

Mein vorheriger Kommentar war falsch. Ich habe Gotatun kompiliert, konnte es aber nicht zum Laufen bringen. wg-quick hat das Kernel-Modul verwendet.
Die Umgebungsvariable für wg-quick hast du gesetzt?
Ja, ich habe WG_QUICK_USERSPACE_IMPLEMENTATION angegeben. Zunächst hatte dies keine Wirkung, da das Kernelmodul Vorrang hat. Ich musste /usr/bin/wg-quick (aus dem Paket wireguard-tools) bearbeiten und die Zeilen löschen, die das Kernel-Modul starten. In diesem Fall wurde versucht, gotatun zu starten, es wurde eine Netzwerkschnittstelle erstellt, aber sie war nicht konfiguriert und hing sich auf. /usr/bin/wg konnte sie nicht konfigurieren.
Ich habe auch boringtun kompiliert. Das ist eine verlassene Wireguard-Implementierung in Rust von Cloudflare (Mullvad hat sie als Grundlage genommen). boringtun funktioniert bei mir. Aber ich habe die Leistung noch nicht bewertet.
Es gibt viele Forks von boringtun von verschiedenen Unternehmen. Ich bin mir nicht sicher, welches das beste ist.
boringtun ist sehr schlecht. Es verbraucht während des Downloads sehr viel CPU-Leistung.
Ich denke, du musst gotarun händisch konfigurieren, mit wg-quick wird das nicht zusammenarbeiten. Sowas wie
gotatun run /etc/gotatun/client.conf. Daraufhin sollteip link showsowas wietun0odergotarun0ausspucken. Dann den Tunnel mit sudo ip route add default dev tun0 erstellen (oder wie das device halt heißt) Dann fehlt immer noch DNS. Das ist alles Theorie, ich hatte noch keine Zeit, das selbst durchzuspielen.Ich habe es kompiliert und getestet. Die Leistung ist genauso gut wie beim Kernmodul.
Falls es Sie interessiert, hier sind meine Builds https://github.com/artenax/gotatun/releases