
gotatun v0.9.2
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 den Bedingungen der Mozilla Public License, Version 2.0, sofern nicht anders angegeben. Eine Kopie dieser Lizenz befindet sich in der Datei „LICENSE" oder unter https://www.mozilla.org/MPL/2.0/.
Beiträge, die vor dem 5. März 2026 geleistet wurden, sind unter der alten BSD-3-Clause-Lizenz lizenziert. Eine Kopie dieser Lizenz befindet sich in der Datei „LICENSE-CLOUDFLARE".
Beiträge
Sofern Sie nicht ausdrücklich etwas anderes angeben, werden alle Beiträge, die Sie absichtlich zur Aufnahme in das Werk einreichen, im Sinne der MPL-2.0-Lizenz wie oben 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 mit cargo install --bin gotatun --path . installieren.
Nix
Um die ausführbare Datei zu erstellen, führen Sie einfach nix build .#gotatun aus. Das fertige Binary befindet sich anschließend in result/bin/gotatun.
Ausführen
Gemäß der Spezifikation starten Sie einen Tunnel mit:
gotatun [-f/--foreground] INTERFACE-NAME
Der Tunnel kann anschließend mit wg wie ein regulärer WireGuard-Tunnel oder mit jedem anderen Tool konfiguriert werden.
Es ist auch möglich, ihn mit wg-quick zu verwenden, indem Sie die Umgebungsvariable WG_QUICK_USERSPACE_IMPLEMENTATION auf gotatun setzen. Zum 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
Das Testen dieses Projekts hat einige Voraussetzungen:
sudo: erforderlich zum Erstellen von Tunneln. 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 | ✓ | ✓ |
| riscv64gc-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 identisch mit dem von wireguard-go sein, mit folgendem Unterschied:
gotatun gibt beim Start seine Privilegien ab. Nach dem Ablegen der Privilegien ist es nicht möglich, fwmark zu setzen. Wenn fwmark erforderlich ist, etwa bei der Verwendung von wg-quick, führen Sie es mit --disable-drop-privileges aus oder setzen Sie die Umgebungsvariable WG_SUDO=1.
Sie müssen der ausführbaren Datei die Fähigkeit CAP_NET_ADMIN mit folgendem Befehl zuweisen: sudo setcap cap_net_admin+epi gotatun. sudo ist nicht erforderlich.
macOS
Das Verhalten ähnelt dem von wireguard-go. Insbesondere muss der Interface-Name utun[0-9]+ lauten, wenn ein expliziter Interface-Name angegeben wird, oder utun, damit der Kernel das niedrigste verfügbare auswählt. Wenn Sie utun als Interface-Namen wählen und die Umgebungsvariable WG_TUN_NAME_FILE definiert ist, wird der tatsächliche Name des vom Kernel gewählten Interfaces in die durch diese Variable angegebene Datei geschrieben.
UAPI-Erweiterungen
Siehe UAPI für Erweiterungen des wg-Konfigurationsprotokolls.
Audits
Es wurden unabhängige Sicherheitsaudits für das Projekt durchgeführt. Siehe das Verzeichnis audit.
WireGuard ist eine eingetragene Marke von Jason A. Donenfeld. GotaTun wird nicht von Jason A. Donenfeld gesponsert oder unterstützt.