Torna agli aggiornamenti
New releaseAug 18, 2026

gotatun v0.9.0

Implementazione userspace di WireGuard® in Rust

Condividi

GotaTun

Un'implementazione di WireGuard® in userspace, e un fork di BoringTun.

Licenza

Tutto il codice sorgente in questo repository è soggetto ai termini della Mozilla Public License, versione 2.0, salvo diversa indicazione. Una copia di questa licenza può essere trovata nel file "LICENSE" o su https://www.mozilla.org/MPL/2.0/.

I contributi effettuati prima del 5 marzo 2026 sono concessi in licenza secondo la vecchia licenza BSD a 3 clausole. Una copia di questa licenza può essere trovata nel file "LICENSE-CLOUDFLARE".

Contributo

Salvo dichiarazione contraria esplicita, qualsiasi contributo presentato intenzionalmente per l'inclusione nel lavoro da parte tua, come definito nella licenza MPL-2.0, sarà concesso in licenza come sopra, senza ulteriori termini o condizioni.

Compilazione

  • Solo libreria: cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)]
  • Eseguibile: cargo build --bin gotatun --release [--target $(TARGET_TRIPLE)]

Installazione

Per impostazione predefinita, l'eseguibile viene posizionato nella cartella ./target/release. Puoi copiarlo manualmente in una posizione desiderata, o installarlo usando cargo install --bin gotatun --path ..

Nix

Per compilare l'eseguibile, esegui semplicemente nix build .#gotatun. Il binario finale si troverà in result/bin/gotatun.

Esecuzione

Come da specifica, per avviare un tunnel usa:

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

Il tunnel può quindi essere configurato usando wg, come un normale tunnel WireGuard, o qualsiasi altro strumento.

È anche possibile utilizzarlo con wg-quick impostando la variabile d'ambiente WG_QUICK_USERSPACE_IMPLEMENTATION su gotatun. Per esempio:

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

Nota: wg-quick ignorerà WG_QUICK_USERSPACE_IMPLEMENTATION su Linux se hai installato il modulo kernel wireguard.

Test

Testare questo progetto ha alcuni requisiti:

  • sudo: necessario per creare tunnel. Quando esegui cargo test ti verrà chiesta la password.
  • Docker: puoi installarlo qui. Se sei su Ubuntu/Debian puoi eseguire apt-get install docker.io.

Piattaforme supportate

Tripletta di destinazioneBinarioLibreria
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

Altre triplette potrebbero funzionare, ma testiamo solo queste.

Linux

Le architetture x86-64 e aarch64 sono supportate. Il comportamento dovrebbe essere identico a quello di wireguard-go, con la seguente differenza:

gotatun abbasserà i privilegi all'avvio. Quando i privilegi vengono abbassati non è possibile impostare fwmark. Se fwmark è necessario, come quando si usa wg-quick, esegui con --disable-drop-privileges o imposta la variabile d'ambiente WG_SUDO=1.

Dovrai concedere all'eseguibile la capacità CAP_NET_ADMIN usando: sudo setcap cap_net_admin+epi gotatun. sudo non è necessario.

macOS

Il comportamento è simile a quello di wireguard-go. Nello specifico, il nome dell'interfaccia deve essere utun[0-9]+ per un nome esplicito o utun per far selezionare al kernel la prima disponibile. Se scegli utun come nome dell'interfaccia, e la variabile d'ambiente WG_TUN_NAME_FILE è definita, allora il nome effettivo dell'interfaccia scelto dal kernel viene scritto nel file specificato da quella variabile.

Estensioni UAPI

Vedi UAPI per le estensioni al protocollo di configurazione wg.


Audit

Sono stati condotti audit di sicurezza indipendenti sul progetto. Vedi la directory audit.


WireGuard è un marchio registrato di Jason A. Donenfeld. GotaTun non è sponsorizzato o approvato da Jason A. Donenfeld.

Categorie