Retour aux mises à jour
New releaseAug 18, 2026

gotatun v0.9.0

Implémentation de WireGuard® en espace utilisateur en Rust

Partager

GotaTun

Une implémentation de WireGuard® en espace utilisateur, et un fork de BoringTun.

Licence

Tout le code source de ce dépôt est soumis aux termes de la Mozilla Public License, version 2.0, sauf indication contraire. Une copie de cette licence peut être trouvée dans le fichier « LICENSE » ou à l'adresse https://www.mozilla.org/MPL/2.0/.

Les contributions effectuées avant le 5 mars 2026 sont sous licence BSD 3-clauses ancienne. Une copie de cette licence se trouve dans le fichier « LICENSE-CLOUDFLARE ».

Contribution

Sauf indication contraire de votre part, toute contribution intentionnellement soumise pour inclusion dans le travail par vous, telle que définie par la licence MPL-2.0, sera concédée sous licence comme ci-dessus, sans aucune condition ou clause supplémentaire.

Compilation

  • Bibliothèque uniquement : cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)]
  • Exécutable : cargo build --bin gotatun --release [--target $(TARGET_TRIPLE)]

Installation

Par défaut, l'exécutable est placé dans le dossier ./target/release. Vous pouvez le copier manuellement à l'emplacement souhaité, ou l'installer en utilisant cargo install --bin gotatun --path ..

Nix

Pour compiler l'exécutable, exécutez simplement nix build .#gotatun. Le binaire final se trouvera dans result/bin/gotatun.

Exécution

Conformément aux spécifications, pour démarrer un tunnel, utilisez :

gotatun [-f/--foreground] NOM-DE-L'INTERFACE

Le tunnel peut ensuite être configuré en utilisant wg, comme un tunnel WireGuard classique, ou tout autre outil.

Il est également possible de l'utiliser avec wg-quick en définissant la variable d'environnement WG_QUICK_USERSPACE_IMPLEMENTATION à gotatun. Par exemple :

sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION

Veuillez noter que wg-quick ignorera WG_QUICK_USERSPACE_IMPLEMENTATION sur Linux si vous avez le module noyau wireguard installé.

Tests

Tester ce projet nécessite quelques prérequis :

  • sudo : requis pour créer des tunnels. Lorsque vous exécutez cargo test, votre mot de passe vous sera demandé.
  • Docker : vous pouvez l'installer ici. Si vous êtes sur Ubuntu/Debian, vous pouvez exécuter apt-get install docker.io.

Plates-formes supportées

Triplet cibleBinaireBibliothèque
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

D'autres cibles peuvent fonctionner, mais nous ne testons que celles-ci

Linux

Les architectures x86-64 et aarch64 sont supportées. Le comportement doit être identique à celui de wireguard-go, avec la différence suivante :

gotatun abandonne les privilèges lorsqu'il est démarré. Lorsque les privilèges sont abandonnés, il n'est pas possible de définir fwmark. Si fwmark est requis, comme lors de l'utilisation de wg-quick, exécutez avec --disable-drop-privileges ou définissez la variable d'environnement WG_SUDO=1.

Vous devrez donner à l'exécutable la capacité CAP_NET_ADMIN en utilisant : sudo setcap cap_net_admin+epi gotatun. sudo n'est pas nécessaire.

macOS

Le comportement est similaire à celui de wireguard-go. Plus précisément, le nom de l'interface doit être utun[0-9]+ pour un nom d'interface explicite, ou utun pour que le noyau sélectionne la plus basse disponible. Si vous choisissez utun comme nom d'interface et que la variable d'environnement WG_TUN_NAME_FILE est définie, alors le nom réel de l'interface choisi par le noyau est écrit dans le fichier spécifié par cette variable.

Extensions UAPI

Voir UAPI pour les extensions du protocole de configuration wg.


Audits

Des audits de sécurité indépendants ont été menés sur le projet. Voir le répertoire audit.


WireGuard est une marque déposée de Jason A. Donenfeld. GotaTun n'est pas sponsorisé ou approuvé par Jason A. Donenfeld.

Catégories