- GotaTun é uma implementação do WireGuard escrita em Rust, com o objetivo de oferecer conexões VPN rápidas, eficientes e estáveis
- Foi desenvolvida a partir de um fork do projeto BoringTun, da Cloudflare, e integra recursos de privacidade da Mullvad como DAITA e Multihop
- Foi aplicada primeiro na versão para Android para resolver problemas de travamento que ocorriam no wireguard-go, reduzindo a taxa de travamentos de 0,40% para 0,01%
- Com a migração para Rust, foram eliminados os problemas de complexidade de FFI e instabilidade do runtime do Go, melhorando a manutenção e a eficiência na depuração
- A Mullvad planeja expandir o GotaTun para todas as plataformas em 2026, além de realizar auditoria de segurança e melhorias de desempenho
Visão geral do GotaTun
- GotaTun é uma implementação do WireGuard® baseada em Rust desenvolvida pela Mullvad VPN, com foco em velocidade, estabilidade e eficiência
- Desenvolvida a partir de um fork do BoringTun, da Cloudflare
- O nome combina BoringTun com o túnel Götatunneln, em Gotemburgo, na Suécia
- Integra recursos de reforço de privacidade da Mullvad, como DAITA e Multihop
- Otimiza o desempenho com multithreading seguro do Rust e uma estratégia de memória zero-copy
- Foi lançada na versão para Android no fim de novembro de 2024, e as outras plataformas estão previstas para 2026
Limitações do wireguard-go anterior
- O app móvel da Mullvad usou por anos o wireguard-go, baseado em Go
- Vários provedores de VPN usam a mesma implementação
- Desde meados de 2024, a Mullvad vinha mantendo um fork do wireguard-go para dar suporte a DAITA e Multihop
- No entanto, mais de 85% dos travamentos relatados no Google Play Console ocorriam no wireguard-go
- Alguns problemas foram resolvidos, mas muitos ainda permaneciam
- Havia complexidade e instabilidade causadas pelo uso de FFI (interface de função externa) entre Rust e Go
- O comportamento do runtime do Go era opaco a partir do código Rust, e em caso de travamento era difícil recuperar o stack trace
- Isso dificultava a depuração e a manutenção de longo prazo
Resultados no Android
- Após a adoção do GotaTun, não houve um único travamento
- Todos os travamentos que ocorriam no wireguard-go foram eliminados
- Desde a versão 2025.10 do app Android (lançada no fim de novembro), a taxa de travamentos percebida pelos usuários caiu de 0,40% para 0,01%
- O feedback dos usuários também relatou melhora de velocidade e menor consumo de bateria
Próximos planos
- Uma auditoria de segurança por terceiros está prevista para o início de 2026
- O wireguard-go será substituído pelo GotaTun em todas as plataformas (incluindo desktop e iOS)
- Os trabalhos de melhoria de desempenho continuarão
- A Mullvad definiu 2026 como o principal ponto de virada para a expansão do GotaTun
1 comentários
Comentários do Hacker News
No Pixel 8, a melhora de desempenho foi claramente perceptível
Antes, o wireguard-go não conseguia nem 100 Mbps, mas com a versão GotaTun passa de 500 Mbps
Porém, por causa de um novo bug, ele não consegue entrar em modo de sono profundo, e a bateria acaba de repente 10 vezes mais rápido
O Pixel 8 é muito mais potente, então se esse problema existe, é bem provável que seja um bug do Android
Eu gosto tanto do WireGuard que criei pessoalmente um projeto chamado WrapGuard
Escrevi em Go para poder rodar o app sem privilégios de root
Não conheço bem Rust, então fico curioso se Rust é mais adequado para firmware ou software de rede
Link do GitHub do WrapGuard
Rust oferece temporização previsível e alta confiabilidade graças ao seu forte sistema de tipos
Mas, para software de rede, Go também é bom o bastante, e no fim a conclusão é que “é melhor usar a linguagem com a qual você já está acostumado”
Pretendo testar a nova container tool da Apple
Por exemplo, a airVPN permite 5 conexões simultâneas, então seria interessante poder agregá-las e combinar o tráfego
Seria ótimo se o GotaTun também fosse aplicado ao app Android do Tailscale. Eu uso o Tailscale para acessar a Mullvad
A equipe do Tailscale é muito boa em otimizar bibliotecas baseadas em Go,
e em abril de 2023 alcançou desempenho de 10 Gbps com o wireguard-go
Post de blog relacionado
Achei interessantes os problemas de paginação de memória no Go e de prevenção de stack overflow em goroutines
Fico curioso por que o GoString pagina tanta memória
Veja a issue #6727 e a issue #7728
Seria bom se o próprio protocolo WireGuard também melhorasse
Hoje ele tem a limitação de ser difícil furar bloqueios de governos ou ISPs
O WireGuard foi projetado como um túnel UDP L3 simples
mas seria melhor se isso estivesse embutido no próprio protocolo
Se houvesse alguém da equipe de implementação aqui, eu perguntaria — por que essas mudanças não foram enviadas para upstream no BoringTun?
Quanto mais implementações existirem, maior será a estabilidade e confiabilidade do protocolo
Pessoalmente, confio mais na Mullvad do que na Cloudflare
A Obscura VPN migrou para o fork NepTUN
Link do GitHub do NepTUN
Fico curioso para saber por que a Mullvad criou um novo fork e se há planos de integrá-lo com forks existentes
Acho que a Mullvad é a opção mais confiável entre as VPNs
Mas as pessoas se sentem mais atraídas pelos códigos de desconto de youtubers
A NordVPN contorna isso bem. Por exemplo, em sites como Imgur ou em acessos dentro do Reino Unido, a Mullvad é bloqueada
Eu achava que o WireGuard rodava dentro do kernel no Android
Gostaria de ver mais dados da análise das causas de crash do wireguard-go
Fico curioso se é bug da própria biblioteca ou problema de FFI
No app MintFlow eu não uso código de proxy baseado em Go
Em vez disso, implemento alguns protocolos de proxy em Rust
Para o WireGuard, uso uma implementação em C baseada no plugin fdio vpp
Eu mesmo trabalhei com vpp por uns 6 meses no passado e achei bem interessante