Retour aux mises à jour
New releaseSep 2, 2026

gotatun v0.9.2

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 licence publique Mozilla, version 2.0, sauf indication contraire. Une copie de cette licence se trouve 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-clause. Une copie de cette licence se trouve dans le fichier « LICENSE-CLOUDFLARE ».

Contribution

Sauf mention explicite contraire, toute contribution que vous soumettez intentionnellement pour inclusion dans l'œuvre, au sens de la licence MPL-2.0, sera soumise à la licence ci-dessus, sans conditions ni termes supplémentaires.

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 avec 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 à la spécification, pour démarrer un tunnel, utilisez :

gotatun [-f/--foreground] INTERFACE-NAME

Le tunnel peut ensuite être configuré à l'aide de wg, comme un tunnel WireGuard classique, ou avec tout autre outil.

Il est également possible de l'utiliser avec wg-quick en définissant la variable d'environnement WG_QUICK_USERSPACE_IMPLEMENTATION sur 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 sous Linux si le module noyau wireguard est 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 sous Ubuntu/Debian, vous pouvez exécuter apt-get install docker.io.

Plateformes prises en charge

Target tripleBinaryLibrary
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✓

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

Linux

Les architectures x86-64 et aarch64 sont prises en charge. Le comportement devrait être identique à celui de wireguard-go, à la différence suivante près :

gotatun abandonnera ses privilèges au démarrage. Lorsque les privilèges sont abandonnés, il n'est pas possible de définir fwmark. Si fwmark est requis, par exemple 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 accorder à l'exécutable la capacité CAP_NET_ADMIN à l'aide de : 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 le plus petit 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 ni sponsorisé ni approuvé par Jason A. Donenfeld.

Catégories