Volver a actualizaciones
Nuevo releaseAug 18, 2026

gotatun v0.9.0

Implementación de WireGuard® en espacio de usuario en Rust

Compartir

GotaTun

Una implementación de WireGuard® en espacio de usuario, y un fork de BoringTun.

Licencia

Todo el código fuente en este repositorio está sujeto a los términos de la Mozilla Public License, versión 2.0 a menos que se indique lo contrario. Se puede encontrar una copia de esta licencia en el archivo "LICENSE" o en https://www.mozilla.org/MPL/2.0/.

Las contribuciones realizadas antes del 5 de marzo de 2026 están licenciadas bajo la antigua licencia BSD de 3 cláusulas. Se puede encontrar una copia de esta licencia en el archivo "LICENSE-CLOUDFLARE".

Contribución

A menos que indiques explícitamente lo contrario, cualquier contribución enviada intencionadamente para su inclusión en el trabajo por tu parte, según se define en la Licencia MPL-2.0, se licenciará como se indica arriba, sin términos ni condiciones adicionales.

Compilación

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

Instalación

Por defecto, el ejecutable se coloca en la carpeta ./target/release. Puedes copiarlo manualmente a la ubicación deseada, o instalarlo usando cargo install --bin gotatun --path ..

Nix

Para compilar el ejecutable, simplemente ejecuta nix build .#gotatun. El binario final se ubicará en result/bin/gotatun.

Ejecución

Según la especificación, para iniciar un túnel usa:

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

El túnel puede configurarse entonces usando wg, como un túnel WireGuard normal, o cualquier otra herramienta.

También es posible usarlo con wg-quick estableciendo la variable de entorno WG_QUICK_USERSPACE_IMPLEMENTATION a gotatun. Por ejemplo:

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

Ten en cuenta que wg-quick ignorará WG_QUICK_USERSPACE_IMPLEMENTATION en Linux si tienes el módulo del kernel de wireguard instalado.

Pruebas

Probar este proyecto tiene algunos requisitos:

  • sudo: necesario para crear túneles. Cuando ejecutes cargo test se te solicitará tu contraseña.
  • Docker: puedes instalarlo aquí. Si estás en Ubuntu/Debian puedes ejecutar apt-get install docker.io.

Plataformas compatibles

Triple destinoBinarioBiblioteca
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

Otros destinos pueden funcionar, pero solo probamos estos

Linux

Se admiten las arquitecturas x86-64 y aarch64. El comportamiento debería ser idéntico al de wireguard-go, con la siguiente diferencia:

gotatun reducirá privilegios al iniciarse. Cuando se reducen los privilegios no es posible establecer fwmark. Si se requiere fwmark, como al usar wg-quick, ejecuta con --disable-drop-privileges o establece la variable de entorno WG_SUDO=1.

Necesitarás dar al ejecutable la capacidad CAP_NET_ADMIN usando: sudo setcap cap_net_admin+epi gotatun. No se necesita sudo.

macOS

El comportamiento es similar al de wireguard-go. Específicamente, el nombre de la interfaz debe ser utun[0-9]+ para un nombre de interfaz explícito o utun para que el kernel seleccione la más baja disponible. Si eliges utun como nombre de interfaz, y la variable de entorno WG_TUN_NAME_FILE está definida, entonces el nombre real de la interfaz seleccionada por el kernel se escribe en el archivo especificado por esa variable.

Extensiones UAPI

Consulta UAPI para extensiones al protocolo de configuración wg.


Auditorías

Se han realizado auditorías de seguridad independientes en el proyecto. Consulta el directorio audit.


WireGuard es una marca registrada de Jason A. Donenfeld. GotaTun no está patrocinado ni respaldado por Jason A. Donenfeld.

Categorías