
TrustTunnel v1.1.0
Protocollo VPN open-source che tunnelizza il traffico TCP, UDP e ICMP su HTTPS, bypassando DPI e throttling. Include split tunneling, proxy SOCKS5, DNS personalizzato e client multipiattaforma.
Clienti · App Store · Play Store
Sommario
- Introduzione
- Funzionalità del server
- Funzionalità del client
- Avvio rapido
- Client
- Vedi anche
- Roadmap
- Licenza
Introduzione
TrustTunnel è un moderno protocollo VPN open-source sviluppato originariamente da AdGuard VPN e ora disponibile per chiunque per l'utilizzo e la verifica.
Fornisce connessioni VPN veloci, sicure e affidabili senza i soliti compromessi. Per progettazione, il traffico di TrustTunnel è indistinguibile dal normale traffico HTTPS, consentendo di aggirare la limitazione e l'ispezione approfondita dei pacchetti, mantenendo al contempo forti protezioni della privacy.
Il progetto TrustTunnel include l'endpoint VPN (questo repository), la libreria e CLI per il client, e l'applicazione GUI.
Funzionalità del server
-
Protocollo VPN: La libreria implementa il protocollo VPN compatibile con HTTP/1.1, HTTP/2 e QUIC. Imitando il normale traffico di rete, diventa impossibile da rilevare e bloccare.
-
Tunneling flessibile del traffico: TrustTunnel può mettere in tunnel il traffico TCP, UDP e ICMP da e verso il client.
-
Compatibilità della piattaforma: Il server è compatibile con Linux e macOS. Il client è disponibile per Android, Apple, Windows e Linux.
Funzionalità del client
-
Tunneling del traffico: La libreria è in grado di mettere in tunnel il traffico TCP, UDP e ICMP dal client all'endpoint e viceversa.
-
Supporto multipiattaforma: Supporta le piattaforme Linux, macOS e Windows, offrendo un'esperienza coerente su diversi sistemi operativi.
-
Tunnel a livello di sistema e proxy SOCKS5: Può essere configurato come tunnel a livello di sistema, utilizzando un'interfaccia di rete virtuale, oltre che come proxy SOCKS5.
-
Split Tunneling: La libreria supporta lo split tunneling, consentendo agli utenti di escludere connessioni a determinati domini o host dal routing attraverso l'endpoint VPN, o viceversa, instradando solo connessioni a domini o host specifici attraverso l'endpoint in base a una lista di esclusione.
-
DNS upstream personalizzato: Gli utenti possono specificare un DNS upstream personalizzato, utilizzato per le query DNS instradate attraverso l'endpoint VPN.
Avvio rapido
Configurazione dell'endpoint
Installare l'endpoint
È disponibile uno script di installazione che può essere eseguito con il seguente comando:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Lo script di installazione scaricherà il pacchetto precompilato dall'ultima
release GitHub per l'architettura di sistema appropriata e lo estrarrà in
/opt/trusttunnel. La directory di output può essere sovrascritta specificando
il flag -o DIR alla fine del comando precedente.
Se si desidera installare una versione specifica (invece dell'ultima), utilizzare -V <version>:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V <version>
[!NOTE] I pacchetti precompilati sono disponibili per le architetture
linux-x86_64,linux-aarch64emacos-universal(Intel e Apple Silicon).
Aggiornare l'endpoint
Lo script di installazione installa sempre l'ultima versione disponibile. Quindi, per aggiornare la propria installazione, eseguire nuovamente il comando di installazione:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Questo riesegue il programma di installazione e sostituisce i binari nella directory
di installazione (/opt/trusttunnel per impostazione predefinita, o la directory specificata con -o DIR).
[!NOTE] Non dimenticare di fermare l'endpoint prima di aggiornare:
sudo systemctl stop trusttunnelPer avviare nuovamente l'endpoint dopo l'aggiornamento:
sudo systemctl start trusttunnel
Procedura guidata di configurazione dell'endpoint
Fare riferimento a CONFIGURATION.md per la documentazione più dettagliata su come configurare l'endpoint.
La directory di installazione contiene il binario setup_wizard che aiuta a generare
i file di configurazione necessari per l'esecuzione dell'endpoint:
cd /opt/trusttunnel/
./setup_wizard -h
La procedura guidata di configurazione supporta la modalità interattiva, quindi è possibile eseguirla e chiederà i dati necessari per la configurazione dell'endpoint.
cd /opt/trusttunnel/
sudo ./setup_wizard
[!NOTE]
sudoè necessario per gestire correttamente i certificati TLS.
La procedura guidata chiederà i seguenti campi, alcuni dei quali hanno valori predefiniti che è possibile utilizzare tranquillamente:
-
L'indirizzo su cui ascoltare - specificare l'indirizzo su cui l'endpoint deve ascoltare. Utilizzare
0.0.0.0:443per distribuzioni native (HTTPS su tutte le interfacce). Se si esegue con il port mapping Docker443:8443, impostare su0.0.0.0:8443. -
Percorso del file delle credenziali - percorso in cui verranno memorizzate le credenziali utente per l'autorizzazione.
-
Nome utente - il nome utente che l'utente utilizzerà per l'autorizzazione.
-
Password - la password dell'utente.
-
Aggiungere un altro utente? - selezionare
yesper aggiungere più utenti, onoper continuare il processo di configurazione. -
Percorso del file delle regole - percorso per memorizzare le regole di filtraggio.
-
Regole di filtraggio delle connessioni - è possibile aggiungere regole che l'endpoint utilizzerà per consentire o negare le connessioni degli utenti in base a:
- Indirizzo IP del client
- Prefisso casuale TLS
- Random con maschera TLS
Premere
nper consentire tutte le connessioni. -
Percorso del file per salvare le impostazioni della libreria - percorso per memorizzare il file di configurazione principale dell'endpoint.
-
Selezione del certificato - scegliere come ottenere un certificato TLS:
- Emettere un certificato Let's Encrypt (richiede un dominio pubblico) - la
procedura guidata di configurazione ha il supporto ACME integrato e può ottenere automaticamente
un certificato gratuito e pubblicamente attendibile da Let's Encrypt. Sarà necessario:
- Un dominio registrato che punti all'indirizzo IP del server
- Porta 80 accessibile da Internet (per la challenge HTTP-01), o
- Possibilità di aggiungere record DNS TXT (per la challenge DNS-01)
- Generare un certificato autofirmato - adatto per test o quando si utilizza solo il client CLI. Nota: Il client Flutter non supporta i certificati autofirmati ancora.
- Fornire il percorso di un certificato esistente - utilizzare i propri file di certificato ottenuti da un'altra CA o da uno strumento come certbot.
- Emettere un certificato Let's Encrypt (richiede un dominio pubblico) - la
procedura guidata di configurazione ha il supporto ACME integrato e può ottenere automaticamente
un certificato gratuito e pubblicamente attendibile da Let's Encrypt. Sarà necessario:
-
Percorso del file per salvare le impostazioni degli host TLS - percorso per memorizzare il file delle impostazioni degli host TLS.
A questo punto tutti i file di configurazione necessari sono stati creati e salvati su disco.
Ciclo di vita del certificato Let's Encrypt
La procedura guidata di configurazione può ottenere un certificato Let's Encrypt durante la configurazione iniziale, ma l'utente è responsabile di garantirne la validità nel tempo (rinnovo e ricarica/riavvio del servizio).
Se si utilizza Certbot per gestire i certificati e rinnovarli automaticamente, seguire la guida in CERT_RENEWAL.md.
Esecuzione dell'endpoint
Il pacchetto installato contiene il template del servizio systemd, denominato
trusttunnel.service.template.
Questo template può essere utilizzato per configurare l'endpoint come servizio systemd:
[!NOTE] Il file template presuppone che il binario dell'endpoint TrustTunnel e tutti i suoi file di configurazione si trovino in
/opt/trusttunnele abbiano i nomi di file predefiniti. Modificare il template se sono stati utilizzati percorsi diversi.
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
Esportare la configurazione del client
Il binario dell'endpoint può generare configurazioni del client in due formati:
Formato Deep-Link (Predefinito)
Genera un URI tt://? compatto adatto per codici QR e app mobili:
# <client_name> - nome del client le cui credenziali saranno incluse nella configurazione
# <address> - `ip`, `ip:porta`, `dominio`, o `dominio:porta` che il client utilizzerà per connettersi
# Se viene specificato solo `ip` o `dominio`, verrà utilizzata la porta del campo `listen_address`
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address>
# Oppure specificare esplicitamente il formato:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> --format deeplink
Questo produce un URI deep-link tt://? che può essere:
- Condiviso direttamente con i client mobili
- Utilizzato con il client CLI o TrustTunnel Flutter Client
È anche possibile fornire opzioni aggiuntive:
--name <display_name>: Imposta un nome visualizzato personalizzato per il server nell'app client.--dns-upstream <dns_upstream>: Specifica un DNS upstream per il client. Può essere un indirizzo IP o un URI DNS sicuro (ad esempiotls://1.1.1.1,https://dns.google/dns-query). Questo flag può essere utilizzato più volte per fornire un elenco di DNS upstream.
Esempio con nome personalizzato e DNS upstream:
./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 viene utilizzato --generate-client-random-prefix, l'endpoint aggiunge anche una
regola di consenso per il valore generato al file rules.toml a cui si fa riferimento da
vpn.toml.
Nota: Se il certificato è firmato da una CA attendibile (ad esempio Let's Encrypt), verrà automaticamente omesso dal deep-link per mantenerlo compatto. I certificati autofirmati vengono inclusi automaticamente.
Formato TOML (Per client CLI)
Genera un file di configurazione TOML tradizionale:
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
Questo produce un file di configurazione TOML adatto per il client CLI.
Entrambi i formati contengono tutte le informazioni necessarie per connettersi all'endpoint. Consultare la documentazione di TrustTunnel Flutter Client per le istruzioni di configurazione.
Congratulazioni! Hai completato la configurazione dell'endpoint!
Configurazione del client
Sono disponibili più client per connettersi all'endpoint — vedere la sezione Client per l'elenco completo. Le istruzioni seguenti riguardano la configurazione del client CLI ufficiale.
Installare il client
Linux / macOS
È disponibile uno script di installazione:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Lo script di installazione scaricherà il pacchetto precompilato dall'ultima release GitHub per l'architettura di sistema appropriata e lo estrarrà in /opt/trusttunnel_client. La directory di output può essere sovrascritta specificando il flag -o DIR alla fine del comando precedente.
[!NOTE] Lo script di installazione supporta le architetture x86_64, aarch64, armv7, mips e mipsel per linux e arm64 e x86_64 per macos.
Windows
Scaricare l'archivio dell'ultima release dalla pagina delle release di TrustTunnel Client.
Estrarre l'archivio in una directory a scelta, ad esempio C:\TrustTunnel\.
Configurazione del router
Per le distribuzioni su router, fare riferimento alle guide di installazione del client specifiche per il router.
- Router Keenetic: TrustTunnel-Keenetic (guida in russo)
Aggiornare il client
Linux / macOS
Lo script di installazione installa sempre l'ultima versione disponibile. Quindi, per aggiornare la propria installazione, eseguire nuovamente il comando di installazione:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Questo riesegue il programma di installazione e sostituisce i binari nella directory di installazione (/opt/trusttunnel_client per impostazione predefinita, o la directory specificata con -o DIR).
[!NOTE] Non dimenticare di fermare il client prima di aggiornare (ad esempio, fermando il processo in esecuzione).
Windows
Scaricare l'ultima release dalla pagina delle release e sostituire i file nella directory di installazione.
Procedura guidata di configurazione del client
La directory di installazione contiene il binario setup_wizard che aiuta a generare
i file di configurazione necessari per l'esecuzione del client.
Linux / macOS
cd /opt/trusttunnel_client/
./setup_wizard -h
Per configurare il client per utilizzare la configurazione generata dall'endpoint, eseguire il seguente 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
In entrambi i casi, <endpoint_config> è il percorso del file di configurazione
generato dall'endpoint.
trusttunnel_client.toml conterrà tutta la configurazione necessaria per il
client.
[!TIP] La configurazione generata contiene impostazioni di base per connettersi all'endpoint. Per funzionalità avanzate, modificare direttamente
trusttunnel_client.toml. È possibile configurare:
- Modalità VPN: Instradare tutto il traffico (
general) o solo destinazioni specifiche (selective)- Kill switch: Bloccare il traffico quando la VPN si disconnette
- DNS upstream: Risolutori DNS personalizzati (supporto DoH, DoT, DoQ)
- Esclusioni: Domini/IP da bypassare o instradare attraverso la VPN
- Tipo di listener: Dispositivo TUN o proxy SOCKS5
Consultare il README del client CLI TrustTunnel per tutte le opzioni disponibili.
[!NOTE] Dopo aver modificato la configurazione, riavviare il client affinché le modifiche abbiano effetto.
Esecuzione del client
Linux / macOS
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
sudo è necessario per configurare le route e l'interfaccia tun.
Windows
Aprire un terminale come Amministratore ed eseguire:
trusttunnel_client.exe -c trusttunnel_client.toml
Sono necessari privilegi di Amministratore per configurare le route e l'interfaccia TUN.
Client
Ufficiali
CLI
TrustTunnel Client — Linux, macOS, Windows
GUI
TrustTunnel Flutter Client — iOS, Android (macOS, Windows — in arrivo). Disponibile su App Store* e Play Store.
[!NOTE] * In alcuni paesi, l'app iOS non è disponibile nell'App Store. Potrebbe essere necessario un Apple ID di un altro paese per scaricarla. Scopri come cambiare il paese dell'App Store.
Community
[!NOTE] I client della community sono sviluppati e mantenuti in modo indipendente. Non sono ufficialmente supportati dal team di TrustTunnel.
GUI
Trusty - Un client GUI multipiattaforma costruito con Flutter (Windows stabile, macOS alpha). Le funzionalità includono log in tempo reale, distribuzione del server SSH con 1 clic e scoperta automatica dei gruppi di domini per split-tunneling.
TrustTunnel-GUI-Client — Client GUI per Windows, implementato come wrapper Python per TrustTunnel Client
Surge — (Commerciale) Toolbox di rete per macOS e iOS con supporto sperimentale di TrustTunnel
FireTunnel - Un client multipiattaforma scritto in QT che utilizza TrustTunnel Client modificato
Vedi Anche
- CONFIGURATION.md - Documentazione di configurazione
- DEVELOPMENT.md - Documentazione di sviluppo
- PROTOCOL.md - Specifica del protocollo
- CHANGELOG.md - Registro delle modifiche
- VERIFY_RELEASES.md - Come verificare le release
Roadmap
Sebbene la nostra VPN attualmente supporti il tunneling del traffico TCP/UDP/ICMP, abbiamo in programma di aggiungere il supporto per la comunicazione peer-to-peer tra i client.
Rimanete sintonizzati per questa funzionalità nelle prossime release.
Licenza
Questo progetto è concesso in licenza con la licenza Apache 2.0. Vedere LICENSE per i dettagli.