
gotatun v0.9.0
WireGuard®-Implementierung im Userspace in Rust
GotaTun
Eine Userspace-Implementierung von WireGuard® und ein Fork von BoringTun.
Lizenz
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".
Beitrag
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.
Erstellen
- Nur Bibliothek:
cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)] - Ausführbare Datei:
cargo build --bin gotatun --release [--target $(TARGET_TRIPLE)]
Installation
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.
Nix
Um die ausführbare Datei zu erstellen, führen Sie einfach nix build .#gotatun aus. Das finale Binary befindet sich in result/bin/gotatun.
Ausführen
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.
Testen
Für das Testen dieses Projekts gibt es einige Voraussetzungen:
sudo: erforderlich, um Tunnel zu erstellen. Wenn Siecargo testausführen, werden Sie zur Eingabe Ihres Passworts aufgefordert.- Docker: Sie können es hier installieren. Wenn Sie Ubuntu/Debian verwenden, können Sie
apt-get install docker.ioausführen.
Unterstützte Plattformen
| 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 | ✓ |
Andere Targets funktionieren möglicherweise, aber wir testen nur diese
Linux
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.
macOS
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.
UAPI-Erweiterungen
Siehe UAPI für Erweiterungen des wg-Konfigurationsprotokolls.
Audits
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.