
TrustTunnel v1.1.0
Protocolo VPN de código aberto que encapsula tráfego TCP, UDP e ICMP sobre HTTPS, contornando DPI e limitação de banda. Inclui split tunneling, proxy SOCKS5, DNS personalizado e clientes multiplataforma.
Clientes · App Store · Play Store
Índice
- Introdução
- Funcionalidades do Servidor
- Funcionalidades do Cliente
- Início rápido
- Clientes
- Veja também
- Roteiro
- Licença
Introdução
TrustTunnel é um protocolo VPN moderno e de código aberto originalmente desenvolvido pela AdGuard VPN e agora disponível para qualquer pessoa usar e auditar.
Ele oferece conexões VPN rápidas, seguras e confiáveis sem as trocas usuais. Por design, o tráfego do TrustTunnel é indistinguível do tráfego HTTPS regular, permitindo que ele ignore limitações de largura de banda e inspeção profunda de pacotes, mantendo ao mesmo tempo fortes proteções de privacidade.
O projeto TrustTunnel inclui o endpoint VPN (este repositório), a biblioteca e CLI para o cliente, e o aplicativo GUI.
Funcionalidades do Servidor
-
Protocolo VPN: A biblioteca implementa o protocolo VPN compatível com HTTP/1.1, HTTP/2 e QUIC. Ao imitar o tráfego de rede normal, torna-se impossível de detectar e bloquear.
-
Tunelamento Flexível de Tráfego: TrustTunnel pode tacular tráfego TCP, UDP e ICMP de e para o cliente.
-
Compatibilidade de Plataforma: O servidor é compatível com Linux e macOS. O cliente está disponível para Android, Apple, Windows e Linux.
Funcionalidades do Cliente
-
Tunelamento de Tráfego: A biblioteca é capaz de tacular tráfego TCP, UDP e ICMP do cliente para o endpoint e vice-versa.
-
Suporte Multiplataforma: Suporta plataformas Linux, macOS e Windows, proporcionando uma experiência consistente em diferentes sistemas operacionais.
-
Túnel de Sistema e Proxy SOCKS5: Pode ser configurado como um túnel de sistema, utilizando uma interface de rede virtual, bem como um proxy SOCKS5.
-
Tunelamento Dividido: A biblioteca suporta tunelamento dividido, permitindo que usuários excluam conexões a determinados domínios ou hosts do roteamento através do endpoint VPN, ou vice-versa, apenas roteando conexões para domínios ou hosts específicos através do endpoint com base em uma lista de exclusão.
-
DNS Upstream Personalizado: Os usuários podem especificar um DNS upstream personalizado, que é usado para consultas DNS roteadas através do endpoint VPN.
Início rápido
Configuração do endpoint
Instalar o endpoint
Um script de instalação está disponível e pode ser executado com o seguinte comando:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
O script de instalação baixará o pacote pré-compilado da versão
mais recente do GitHub para a arquitetura de sistema apropriada e o descompactará em
/opt/trusttunnel. O diretório de saída pode ser alterado especificando
-o DIR no final do comando acima.
Se você deseja instalar uma versão específica (em vez da mais recente), use -V <version>:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V <version>
[!NOTE] Pacotes pré-compilados estão disponíveis para as arquiteturas
linux-x86_64,linux-aarch64emacos-universal(Intel e Apple Silicon).
Atualizar o endpoint
O script de instalação sempre instala a versão mais recente disponível. Portanto, para atualizar sua instalação, execute o comando de instalação novamente:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Isso executa novamente o instalador e substitui os binários no diretório
de instalação (/opt/trusttunnel por padrão, ou o diretório que você especificou com -o DIR).
[!NOTE] Não se esqueça de parar o endpoint antes de atualizar:
sudo systemctl stop trusttunnelPara iniciar o endpoint novamente após a atualização:
sudo systemctl start trusttunnel
Assistente de configuração do endpoint
Consulte CONFIGURATION.md para uma documentação mais detalhada sobre como configurar o endpoint.
O diretório de instalação contém o binário setup_wizard que ajuda a gerar
os arquivos de configuração necessários para o endpoint executar:
cd /opt/trusttunnel/
./setup_wizard -h
O assistente de configuração suporta modo interativo, então você pode executá-lo e ele perguntará os dados necessários para a configuração do endpoint.
cd /opt/trusttunnel/
sudo ./setup_wizard
[!NOTE]
sudoé necessário para gerenciar certificados TLS adequadamente.
O assistente perguntará pelos seguintes campos, alguns dos quais possuem valores padrão que você pode usar com segurança:
-
Endereço de escuta - especifique o endereço para o endpoint escutar. Use
0.0.0.0:443para implantações nativas (HTTPS em todas as interfaces). Se você executar com mapeamento de porta Docker443:8443, defina como0.0.0.0:8443. -
Caminho para o arquivo de credenciais - caminho onde as credenciais do usuário para autorização serão armazenadas.
-
Nome de usuário - o nome de usuário que o usuário usará para autorização.
-
Senha - a senha do usuário.
-
Adicionar mais um usuário? - selecione
yesse desejar adicionar mais usuários, ounopara continuar o processo de configuração. -
Caminho para o arquivo de regras - caminho para armazenar as regras de filtragem.
-
Regras de filtragem de conexão - você pode adicionar regras que o endpoint usará para permitir ou negar conexões do usuário com base em:
- Endereço IP do cliente
- Prefixo aleatório TLS
- Aleatório TLS com máscara
Pressione
npara permitir todas as conexões. -
Caminho para um arquivo para armazenar as configurações da biblioteca - caminho para armazenar o arquivo principal de configuração do endpoint.
-
Seleção de certificado - escolha como obter um certificado TLS:
- Emitir um certificado Let's Encrypt (requer um domínio público) - o
assistente de configuração tem suporte ACME embutido e pode obter automaticamente um certificado
gratuito e publicamente confiável da Let's Encrypt. Você precisará de:
- Um domínio registrado apontando para o endereço IP do seu servidor
- Porta 80 acessível da internet (para desafio HTTP-01), ou
- Capacidade de adicionar registros DNS TXT (para desafio DNS-01)
- Gerar um certificado autoassinado - adequado para testes ou ao usar apenas o cliente CLI. Nota: O cliente Flutter ainda não suporta certificados autoassinados.
- Fornecer caminho para certificado existente - use seus próprios arquivos de certificado obtidos de outra AC ou ferramenta como certbot.
- Emitir um certificado Let's Encrypt (requer um domínio público) - o
assistente de configuração tem suporte ACME embutido e pode obter automaticamente um certificado
gratuito e publicamente confiável da Let's Encrypt. Você precisará de:
-
Caminho para um arquivo para armazenar as configurações de hosts TLS - caminho para armazenar o arquivo de configurações de hosts TLS.
Neste ponto, todos os arquivos de configuração necessários são criados e salvos no disco.
Ciclo de vida do certificado Let's Encrypt
O assistente de configuração pode obter um certificado Let's Encrypt durante a configuração inicial, mas você é responsável por garantir que ele permaneça válido ao longo do tempo (renovação e recarga/reinício do serviço).
Se você estiver usando o Certbot para gerenciar certificados e renová-los automaticamente, siga o guia em CERT_RENEWAL.md.
Executar o endpoint
O pacote instalado contém um template de serviço systemd, chamado
trusttunnel.service.template.
Este template pode ser usado para configurar o endpoint como um serviço systemd:
[!NOTE] O arquivo template assume que o binário do TrustTunnel Endpoint e todos os seus arquivos de configuração estão localizados em
/opt/trusttunnele possuem os nomes de arquivo padrão. Modifique o template se você usou caminhos diferentes.
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
Exportar configuração do cliente
O binário do endpoint pode gerar configurações do cliente em dois formatos:
Formato Deep-Link (Padrão)
Gere uma URI compacta tt://? adequada para códigos QR e aplicativos móveis:
# <client_name> - nome do cliente cujas credenciais serão incluídas na configuração
# <address> - `ip`, `ip:port`, `domain`, ou `domain:port` que o cliente usará para conectar
# Se apenas `ip` ou `domain` for especificado, a porta do campo `listen_address` será usada
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address>
# Ou especifique explicitamente o formato:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> --format deeplink
Isso gera uma URI deep-link tt://? que pode ser:
- Compartilhada diretamente com clientes móveis
- Usada com o cliente CLI ou TrustTunnel Flutter Client
Você também pode fornecer opções adicionais:
--name <display_name>: Defina um nome de exibição personalizado para o servidor no aplicativo cliente.--dns-upstream <dns_upstream>: Especifique um DNS upstream para o cliente. Pode ser um endereço IP ou uma URI DNS segura (ex.:tls://1.1.1.1,https://dns.google/dns-query). Esta flag pode ser usada várias vezes para fornecer uma lista de DNS upstreams.
Exemplo com nome personalizado e DNS upstreams:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> \
--name "My Secure VPN" \
--dns-upstream 1.1.1.1 --dns-upstream tls://8.8.8.8
Quando --generate-client-random-prefix é usado, o endpoint também anexa uma
regra de permissão para o valor gerado ao arquivo rules.toml referenciado em
vpn.toml.
Nota: Se seu certificado for assinado por uma AC confiável (ex.: Let's Encrypt), ele será automaticamente omitido do deep-link para mantê-lo compacto. Certificados autoassinados são incluídos automaticamente.
Formato TOML (Para Cliente CLI)
Gere um arquivo de configuração TOML tradicional:
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
Isso gera um arquivo de configuração TOML adequado para o cliente CLI.
Ambos os formatos contêm todas as informações necessárias para conectar ao endpoint. Consulte a documentação do TrustTunnel Flutter Client para instruções de configuração.
Parabéns! Você terminou a configuração do endpoint!
Configuração do cliente
Vários clientes estão disponíveis para conectar ao endpoint — veja a seção Clientes para a lista completa. As instruções abaixo cobrem a configuração do cliente CLI oficial.
Instalar o cliente
Linux / macOS
Um script de instalação está disponível:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
O script de instalação baixará o pacote pré-compilado da versão mais recente do GitHub para a arquitetura de sistema apropriada e o descompactará em /opt/trusttunnel_client. O diretório de saída pode ser alterado especificando -o DIR no final do comando acima.
[!NOTE] O script de instalação suporta as arquiteturas x86_64, aarch64, armv7, mips e mipsel para linux e arm64 e x86_64 para macos.
Windows
Baixe o arquivo da versão mais recente da página de releases do TrustTunnel Client.
Extraia o arquivo para um diretório de sua escolha, por exemplo C:\TrustTunnel\.
Configuração em roteador
Para implantações em roteadores, consulte os guias de instalação do cliente específicos para roteadores.
- Roteadores Keenetic: TrustTunnel-Keenetic (guia em russo)
Atualizar o cliente
Linux / macOS
O script de instalação sempre instala a versão mais recente disponível. Portanto, para atualizar sua instalação, execute o comando de instalação novamente:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Isso executa novamente o instalador e substitui os binários no diretório de instalação (/opt/trusttunnel_client por padrão, ou o diretório que você especificou com -o DIR).
[!NOTE] Não se esqueça de parar o cliente antes de atualizar (por exemplo, parando o processo em execução).
Windows
Baixe a versão mais recente da página de releases e substitua os arquivos no seu diretório de instalação.
Assistente de configuração do cliente
O diretório de instalação contém o binário setup_wizard que ajuda a gerar
os arquivos de configuração necessários para o cliente executar.
Linux / macOS
cd /opt/trusttunnel_client/
./setup_wizard -h
Para configurar o cliente para usar a configuração gerada pelo endpoint, execute o seguinte comando:
./setup_wizard --mode non-interactive \
--endpoint_config <endpoint_config> \
--settings trusttunnel_client.toml
Windows
setup_wizard.exe --mode non-interactive ^
--endpoint_config <endpoint_config> ^
--settings trusttunnel_client.toml
Em ambos os casos, <endpoint_config> é o caminho para o arquivo de configuração
gerado pelo endpoint.
trusttunnel_client.toml conterá toda a configuração necessária para o
cliente.
[!TIP] A configuração gerada contém configurações básicas para conectar ao endpoint. Para funcionalidades avançadas, edite
trusttunnel_client.tomldiretamente. Você pode configurar:
- Modo VPN: Roteie todo o tráfego (
general) ou apenas destinos específicos (selective)- Kill switch: Bloqueie o tráfego quando a VPN desconectar
- DNS upstreams: Resolvedores DNS personalizados (DoH, DoT, DoQ suportados)
- Exclusões: Domínios/IPs para ignorar ou rotear através da VPN
- Tipo de listener: Dispositivo TUN ou proxy SOCKS5
Consulte o README do TrustTunnel CLI Client para todas as opções disponíveis.
[!NOTE] Após editar a configuração, reinicie o cliente para que as alterações tenham efeito.
Executar o cliente
Linux / macOS
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
sudo é necessário para configurar as rotas e a interface tun.
Windows
Abra um terminal como Administrador e execute:
trusttunnel_client.exe -c trusttunnel_client.toml
Privilégios de administrador são necessários para configurar rotas e a interface TUN.
Clientes
Oficiais
CLI
TrustTunnel Client — Linux, macOS, Windows
GUI
TrustTunnel Flutter Client — iOS, Android (macOS, Windows — em breve). Disponível na App Store* e no Play Store.
[!NOTE] * Em alguns países, o aplicativo iOS não está disponível na App Store. Você pode precisar de um Apple ID de outro país para baixá-lo. Saiba como alterar o país da sua App Store.
Comunidade
[!NOTE] Os clientes da comunidade são desenvolvidos e mantidos de forma independente. Eles não são oficialmente suportados pela equipe TrustTunnel.
GUI
Trusty - Um cliente GUI multiplataforma construído com Flutter (Windows estável, macOS alpha). Funcionalidades incluem logs em tempo real, implantação de servidor SSH com 1 clique e descoberta automática de grupos de domínio para tunelamento dividido.
TrustTunnel-GUI-Client — Cliente GUI para Windows, implementado como um wrapper Python para TrustTunnel Client
Surge — (Comercial) Caixa de ferramentas de rede para macOS e iOS com suporte experimental a TrustTunnel
FireTunnel - Um cliente multiplataforma escrito em QT usando TrustTunnel Client modificado
Veja também
- CONFIGURATION.md - Documentação de configuração
- DEVELOPMENT.md - Documentação de desenvolvimento
- PROTOCOL.md - Especificação do protocolo
- CHANGELOG.md - Changelog
- VERIFY_RELEASES.md - Como verificar releases
Roteiro
Embora nossa VPN atualmente suporte tunelamento de tráfego TCP/UDP/ICMP, planejamos adicionar suporte para comunicação peer-to-peer entre clientes.
Fique atento a este recurso em futuras versões.
Licença
Este projeto está licenciado sob a Licença Apache 2.0. Veja LICENSE para detalhes.