Mullvad VPN

Mullvad bringt WireGuard in Rust

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.

Teilt den Beitrag, falls ihr mögt

6 Kommentare

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

        0
          1. Ich denke, du musst gotarun händisch konfigurieren, mit wg-quick wird das nicht zusammenarbeiten. Sowas wie gotatun run /etc/gotatun/client.conf. Daraufhin sollte ip link show sowas wie tun0 oder gotarun0 ausspucken. 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.

            0

Kommentar hinterlassen