
WireGuard®-Implementierung im Userspace in Rust
Eine Userspace-Implementierung von WireGuard® und ein Fork von BoringTun.
Der gesamte Quellcode in diesem Repository unterliegt, sofern nicht anders angegeben, den Bedingungen der Mozilla Public License, Version 2.0. Eine Kopie dieser Lizenz finden Sie in der Datei "LICENSE" oder unter https://www.mozilla.org/MPL/2.0/.
Beiträge, die vor dem 5. März 2026 eingereicht wurden, sind unter der alten BSD-3-Klausel-Lizenz lizenziert. Eine Kopie dieser Lizenz finden Sie in der Datei "LICENSE-CLOUDFLARE".
Sofern Sie nicht ausdrücklich anders angeben, wird jeder von Ihnen absichtlich zur Aufnahme in das Werk eingereichte Beitrag, wie in der MPL-2.0-Lizenz definiert, wie oben beschrieben lizenziert, ohne zusätzliche Bedingungen.
cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)]cargo build --bin gotatun --release [--target $(TARGET_TRIPLE)]Standardmäßig wird die ausführbare Datei im Ordner ./target/release abgelegt. Sie können sie manuell an einen gewünschten Ort kopieren oder sie mit cargo install --bin gotatun --path . installieren.
Um die ausführbare Datei zu erstellen, führen Sie einfach nix build .#gotatun aus. Das finale Binary befindet sich in result/bin/gotatun.
Gemäß der Spezifikation verwenden Sie zum Starten eines Tunnels:
gotatun [-f/--foreground] INTERFACE-NAME
Der Tunnel kann anschließend wie ein regulärer WireGuard-Tunnel mit wg oder einem beliebigen anderen Tool konfiguriert werden.
Es ist auch möglich, wg-quick zu verwenden, indem Sie die Umgebungsvariable WG_QUICK_USERSPACE_IMPLEMENTATION auf gotatun setzen. Beispiel:
sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION
Bitte beachten Sie, dass wg-quick unter Linux WG_QUICK_USERSPACE_IMPLEMENTATION ignoriert, wenn das WireGuard-Kernelmodul installiert ist.
Für das Testen dieses Projekts gibt es einige Voraussetzungen:
sudo: erforderlich, um Tunnel zu erstellen. Wenn Sie cargo test ausführen, werden Sie zur Eingabe Ihres Passworts aufgefordert.apt-get install docker.io ausführen.Andere Targets funktionieren möglicherweise, aber wir testen nur diese
Die Architekturen x86-64 und aarch64 werden unterstützt. Das Verhalten sollte mit dem von wireguard-go identisch sein, mit dem folgenden Unterschied:
gotatun gibt beim Start Privilegien ab. Wenn die Privilegien abgegeben wurden, ist es nicht möglich, fwmark zu setzen. Wenn fwmark erforderlich ist, z. B. bei Verwendung von wg-quick, führen Sie das Programm mit --disable-drop-privileges aus oder setzen Sie die Umgebungsvariable WG_SUDO=1.
Sie müssen der ausführbaren Datei die Capability CAP_NET_ADMIN erteilen, indem Sie sudo setcap cap_net_admin+epi gotatun ausführen. sudo wird nicht benötigt.
Das Verhalten ähnelt dem von wireguard-go. Insbesondere muss der Schnittstellenname utun[0-9]+ lauten, wenn ein expliziter Schnittstellenname verwendet wird, oder utun, damit der Kernel die niedrigste verfügbare Schnittstelle auswählt. Wenn Sie utun als Schnittstellennamen wählen und die Umgebungsvariable WG_TUN_NAME_FILE definiert ist, wird der tatsächliche, vom Kernel gewählte Name der Schnittstelle in die durch diese Variable angegebene Datei geschrieben.
Siehe UAPI für Erweiterungen des wg-Konfigurationsprotokolls.
Für das Projekt wurden unabhängige Sicherheitsaudits durchgeführt. Siehe das Verzeichnis audit.
WireGuard ist eine eingetragene Marke von Jason A. Donenfeld. GotaTun wird von Jason A. Donenfeld weder gesponsert noch unterstützt.
| Target-Triple | Binary | Bibliothek |
|---|
| x86_64-unknown-linux-gnu | ✓ | ✓ |
| aarch64-unknown-linux-gnu | ✓ | ✓ |
| aarch64-apple-darwin | ✓ | ✓ |
| x86_64-pc-windows-msvc | ✓ | ✓ |
| x86_64-pc-windows-gnullvm | ✓ | ✓ |
| aarch64-pc-windows-msvc | ✓ | ✓ |
| aarch64-pc-windows-gnullvm | ✓ | ✓ |
| x86_64-linux-android | ✓ | |
| aarch64-linux-android | ✓ | |
| aarch64-apple-ios | ✓ |