Torna agli aggiornamenti
New releaseSep 2, 2026

gotatun v0.9.2

Implementazione userspace di WireGuard® in Rust

Condividi

GotaTun

Un'implementazione userspace di WireGuard®, 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 è disponibile nel file "LICENSE" o all'indirizzo https://www.mozilla.org/MPL/2.0/.

I contributi effettuati prima del 5 marzo 2026 sono concessi in licenza secondo la vecchia licenza BSD 3-clause. Una copia di questa licenza è disponibile nel file "LICENSE-CLOUDFLARE".

Contributi

Salvo che tu dichiari esplicitamente il contrario, qualsiasi contributo da te intenzionalmente inviato per l'inclusione nell'opera, come definito nella Licenza MPL-2.0, sarà concesso in licenza come sopra, senza termini o condizioni aggiuntivi.

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 collocato nella cartella ./target/release. Puoi copiarlo manualmente nella posizione desiderata, oppure installarlo usando cargo install --bin gotatun --path ..

Nix

Per compilare l'eseguibile, è sufficiente eseguire nix build .#gotatun. Il binario finale sarà collocato 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. Ad esempio:

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

Tieni presente che wg-quick ignorerà WG_QUICK_USERSPACE_IMPLEMENTATION su Linux se hai installato il modulo kernel wireguard.

Test

Il test di questo progetto richiede alcuni requisiti:

  • sudo: necessario per creare i 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

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

Altri target potrebbero funzionare, ma testiamo solo questi

Linux

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

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

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

macOS

Il comportamento è simile a quello di wireguard-go. In particolare il nome dell'interfaccia deve essere utun[0-9]+ per un nome di interfaccia esplicito, oppure utun per far selezionare al kernel quello con il numero più basso disponibile. Se scegli utun come nome dell'interfaccia e la variabile d'ambiente WG_TUN_NAME_FILE è definita, 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 né approvato da Jason A. Donenfeld.

Categorie