
TrustTunnel v1.1.0
Protocole VPN open source qui tunnelise le trafic TCP, UDP et ICMP via HTTPS, contournant le DPI et la limitation de débit. Fonctionnalités : tunneling fractionné, proxy SOCKS5, DNS personnalisé et clients multiplateformes.
Clients · App Store · Play Store
Table des matières
- Introduction
- Fonctionnalités du serveur
- Fonctionnalités du client
- Démarrage rapide
- Clients
- Voir aussi
- Feuille de route
- Licence
Introduction
TrustTunnel est un protocole VPN moderne et open-source, initialement développé par AdGuard VPN et désormais disponible pour tous, utilisation et audit compris.
Il offre des connexions VPN rapides, sécurisées et fiables sans les compromis habituels. Par conception, le trafic TrustTunnel est indistinguishable du trafic HTTPS standard, ce qui lui permet de contourner le throttling et l'inspection profonde des paquets tout en maintenant une protection solide de la vie privée.
Le projet TrustTunnel inclut le point d'accès VPN (ce dépôt), la bibliothèque et l'interface en ligne de commande pour le client, ainsi que l'application graphique.
Fonctionnalités du serveur
-
Protocole VPN : La bibliothèque implémente le protocole VPN compatible avec HTTP/1.1, HTTP/2 et QUIC. En imitant le trafic réseau normal, il devient impossible à détecter et à bloquer.
-
Tunnel de trafic flexible : TrustTunnel peut tunnelliser le trafic TCP, UDP et ICMP vers et depuis le client.
-
Compatibilité multiplateforme : Le serveur est compatible avec Linux et macOS. Le client est disponible pour Android, Apple, Windows et Linux.
Fonctionnalités du client
-
Tunnel de trafic : La bibliothèque peut tunnelliser le trafic TCP, UDP et ICMP du client vers le point d'accès et inversement.
-
Prise en charge multiplateforme : Elle prend en charge les plateformes Linux, macOS et Windows, offrant une expérience cohérente sur différents systèmes d'exploitation.
-
Tunnel système et proxy SOCKS5 : Elle peut être configurée comme un tunnel système utilisant une interface réseau virtuelle, ainsi qu'un proxy SOCKS5.
-
Tunnel fractionné : La bibliothèque prend en charge le tunnel fractionné, permettant aux utilisateurs d'exclure des connexions vers certains domaines ou hôtes du routage via le point d'accès VPN, ou inversement, de ne router que les connexions vers des domaines ou hôtes spécifiques via le point d'accès en fonction d'une liste d'exclusion.
-
Serveur DNS personnalisé : Les utilisateurs peuvent spécifier un serveur DNS personnalisé, utilisé pour les requêtes DNS routées via le point d'accès VPN.
Démarrage rapide
Configuration du point d'accès
Installer le point d'accès
Un script d'installation est disponible et peut être exécuté avec la commande suivante :
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Le script d'installation téléchargera le paquet précompilé depuis la dernière
version GitHub pour l'architecture système appropriée et le décompressera dans
/opt/trusttunnel. Le répertoire de sortie peut être modifié en spécifiant
le drapeau -o DIR à la fin de la commande ci-dessus.
Si vous souhaitez installer une version spécifique (au lieu de la dernière), utilisez -V <version> :
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V <version>
[!NOTE] Les paquets précompilés sont disponibles pour les architectures
linux-x86_64,linux-aarch64etmacos-universal(Intel et Apple Silicon).
Mettre à jour le point d'accès
Le script d'installation installe toujours la dernière version disponible. Donc, pour mettre à jour votre installation, exécutez à nouveau la commande d'installation :
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Cela réexécute l'installateur et remplace les binaires dans le répertoire
d'installation (/opt/trusttunnel par défaut, ou le répertoire spécifié avec -o DIR).
[!NOTE] N'oubliez pas d'arrêter le point d'accès avant la mise à jour :
sudo systemctl stop trusttunnelPour redémarrer le point d'accès après la mise à jour :
sudo systemctl start trusttunnel
Assistant de configuration du point d'accès
Veuillez consulter CONFIGURATION.md pour une documentation plus détaillée sur la configuration du point d'accès.
Le répertoire d'installation contient le binaire setup_wizard qui aide à générer
les fichiers de configuration nécessaires au fonctionnement du point d'accès :
cd /opt/trusttunnel/
./setup_wizard -h
L'assistant de configuration prend en charge le mode interactif, vous pouvez donc l'exécuter et il vous demandera les données nécessaires à la configuration du point d'accès.
cd /opt/trusttunnel/
sudo ./setup_wizard
[!NOTE]
sudoest nécessaire pour gérer correctement les certificats TLS.
L'assistant demandera les champs suivants, certains ayant des valeurs par défaut que vous pouvez utiliser en toute sécurité :
-
Adresse d'écoute - spécifiez l'adresse sur laquelle le point d'accès doit écouter. Utilisez
0.0.0.0:443pour les déploiements natifs (HTTPS sur toutes les interfaces). Si vous utilisez Docker avec le mappage de port443:8443, définissez-la sur0.0.0.0:8443. -
Chemin du fichier d'identifiants - chemin où seront stockés les identifiants utilisateur pour l'autorisation.
-
Nom d'utilisateur - le nom d'utilisateur que l'utilisateur utilisera pour l'autorisation.
-
Mot de passe - le mot de passe de l'utilisateur.
-
Ajouter un autre utilisateur ? - sélectionnez
ouisi vous souhaitez ajouter d'autres utilisateurs, ounonpour continuer le processus de configuration. -
Chemin du fichier de règles - chemin pour stocker les règles de filtrage.
-
Règles de filtrage des connexions - vous pouvez ajouter des règles que le point d'accès utilisera pour autoriser ou refuser les connexions des utilisateurs en fonction de :
- Adresse IP du client
- Préfixe aléatoire TLS
- Aléatoire TLS avec masque
Appuyez sur
npour autoriser toutes les connexions. -
Chemin d'un fichier pour stocker les paramètres de la bibliothèque - chemin pour stocker le fichier de configuration principal du point d'accès.
-
Sélection du certificat - choisissez comment obtenir un certificat TLS :
- Délivrer un certificat Let's Encrypt (nécessite un domaine public) - l'assistant
de configuration intègre la prise en charge ACME et peut obtenir automatiquement un
certificat gratuit et publiquement approuvé de Let's Encrypt. Vous aurez besoin de :
- Un domaine enregistré pointant vers l'adresse IP de votre serveur
- Le port 80 accessible depuis Internet (pour le défi HTTP-01), ou
- La possibilité d'ajouter des enregistrements DNS TXT (pour le défi DNS-01)
- Générer un certificat auto-signé - adapté aux tests ou lors de l'utilisation du client CLI uniquement. Remarque : Le client Flutter ne prend pas en charge les certificats auto-signés pour l'instant.
- Fournir le chemin d'un certificat existant - utilisez vos propres fichiers de certificat obtenus auprès d'une autre AC ou d'un outil comme certbot.
- Délivrer un certificat Let's Encrypt (nécessite un domaine public) - l'assistant
de configuration intègre la prise en charge ACME et peut obtenir automatiquement un
certificat gratuit et publiquement approuvé de Let's Encrypt. Vous aurez besoin de :
-
Chemin d'un fichier pour stocker les paramètres des hôtes TLS - chemin pour stocker le fichier de paramètres des hôtes TLS.
À ce stade, tous les fichiers de configuration requis sont créés et sauvegardés sur le disque.
Cycle de vie du certificat Let's Encrypt
L'assistant de configuration peut obtenir un certificat Let's Encrypt lors de la configuration initiale, mais vous êtes responsable de sa validité dans le temps (renouvellement et rechargement/redémarrage du service).
Si vous utilisez Certbot pour gérer les certificats et les renouveler automatiquement, suivez le guide dans CERT_RENEWAL.md.
Exécution du point d'accès
Le paquet installé contient un modèle de service systemd, nommé
trusttunnel.service.template.
Ce modèle peut être utilisé pour configurer le point d'accès en tant que service systemd :
[!NOTE] Le fichier modèle suppose que le binaire TrustTunnel Endpoint et tous ses fichiers de configuration se trouvent dans
/opt/trusttunnelet portent les noms de fichiers par défaut. Modifiez le modèle si vous avez utilisé des chemins différents.
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
Exporter la configuration client
Le binaire du point d'accès peut générer des configurations client dans deux formats :
Format Deep-Link (par défaut)
Génère une URI compacte tt://? adaptée aux codes QR et aux applications mobiles :
# <client_name> - nom du client dont les identifiants seront inclus dans la configuration
# <address> - `ip`, `ip:port`, `domaine`, ou `domaine:port` que le client utilisera pour se connecter
# Si seule l'`ip` ou le `domaine` est spécifié, le port du champ `listen_address` sera utilisé
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address>
# Ou spécifiez explicitement le format :
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> --format deeplink
Cette commande génère une URI deep-link tt://? qui peut être :
- Partagée directement avec les clients mobiles
- Utilisée avec le client CLI ou le TrustTunnel Flutter Client
Vous pouvez également fournir des options supplémentaires :
--name <display_name>: Définir un nom d'affichage personnalisé pour le serveur dans l'application client.--dns-upstream <dns_upstream>: Spécifier un serveur DNS amont pour le client. Peut être une adresse IP ou une URI DNS sécurisée (par exemple,tls://1.1.1.1,https://dns.google/dns-query). Ce drapeau peut être utilisé plusieurs fois pour fournir une liste de serveurs DNS amont.
Exemple avec un nom personnalisé et des serveurs DNS amont :
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> \
--name "Mon VPN sécurisé" \
--dns-upstream 1.1.1.1 --dns-upstream tls://8.8.8.8
Lorsque --generate-client-random-prefix est utilisé, le point d'accès ajoute également une
règle d'autorisation pour la valeur générée dans le fichier rules.toml référencé dans
vpn.toml.
Remarque : Si votre certificat est signé par une AC de confiance (par exemple, Let's Encrypt), il sera automatiquement omis du deep-link pour le garder compact. Les certificats auto-signés sont inclus automatiquement.
Format TOML (pour client CLI)
Génère un fichier de configuration TOML traditionnel :
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
Cette commande génère un fichier de configuration TOML adapté au client CLI.
Les deux formats contiennent toutes les informations nécessaires pour se connecter au point d'accès. Consultez la documentation du TrustTunnel Flutter Client pour les instructions de configuration.
Félicitations ! Vous avez terminé la configuration du point d'accès !
Configuration du client
Plusieurs clients sont disponibles pour se connecter au point d'accès — voir la section Clients pour la liste complète. Les instructions ci-dessous concernent la configuration du client CLI officiel.
Installer le client
Linux / macOS
Un script d'installation est disponible :
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Le script d'installation téléchargera le paquet précompilé depuis la dernière version GitHub pour l'architecture système appropriée et le décompressera dans /opt/trusttunnel_client. Le répertoire de sortie peut être modifié en spécifiant le drapeau -o DIR à la fin de la commande ci-dessus.
[!NOTE] Le script d'installation prend en charge les architectures x86_64, aarch64, armv7, mips et mipsel pour linux, et arm64 et x86_64 pour macOS.
Windows
Téléchargez la dernière archive de version depuis la page des versions du client TrustTunnel.
Extrayez l'archive dans un répertoire de votre choix, par exemple C:\TrustTunnel\.
Configuration routeur
Pour les déploiements sur routeur, veuillez vous référer aux guides d'installation du client spécifiques aux routeurs.
- Routeurs Keenetic : TrustTunnel-Keenetic (guide en russe)
Mettre à jour le client
Linux / macOS
Le script d'installation installe toujours la dernière version disponible. Donc, pour mettre à jour votre installation, exécutez à nouveau la commande d'installation :
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Cela réexécute l'installateur et remplace les binaires dans le répertoire d'installation (/opt/trusttunnel_client par défaut, ou le répertoire spécifié avec -o DIR).
[!NOTE] N'oubliez pas d'arrêter le client avant la mise à jour (par exemple, en arrêtant le processus en cours).
Windows
Téléchargez la dernière version depuis la page des versions et remplacez les fichiers dans votre répertoire d'installation.
Assistant de configuration du client
Le répertoire d'installation contient le binaire setup_wizard qui aide à générer
les fichiers de configuration nécessaires au fonctionnement du client.
Linux / macOS
cd /opt/trusttunnel_client/
./setup_wizard -h
Pour configurer le client afin d'utiliser la configuration générée par le point d'accès, exécutez la commande suivante :
./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
Dans les deux cas, <endpoint_config> est le chemin du fichier de configuration
généré par le point d'accès.
trusttunnel_client.toml contiendra toute la configuration nécessaire au
client.
[!TIP] La configuration générée contient les paramètres de base pour se connecter au point d'accès. Pour les fonctionnalités avancées, éditez directement
trusttunnel_client.toml. Vous pouvez configurer :
- Mode VPN : Router tout le trafic (
general) ou seulement des destinations spécifiques (selective)- Kill switch : Bloquer le trafic lorsque le VPN se déconnecte
- Serveurs DNS amont : Résolveurs DNS personnalisés (DoH, DoT, DoQ pris en charge)
- Exclusions : Domaines/IP à contourner ou à router via le VPN
- Type d'écouteur : Périphérique TUN ou proxy SOCKS5
Consultez le README du client CLI TrustTunnel pour toutes les options disponibles.
[!NOTE] Après avoir modifié la configuration, redémarrez le client pour que les changements prennent effet.
Exécution du client
Linux / macOS
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
sudo est nécessaire pour configurer les routes et l'interface tun.
Windows
Ouvrez un terminal en tant qu'administrateur et exécutez :
trusttunnel_client.exe -c trusttunnel_client.toml
Les privilèges d'administrateur sont nécessaires pour configurer les routes et l'interface TUN.
Clients
Officiels
CLI
TrustTunnel Client — Linux, macOS, Windows
GUI
TrustTunnel Flutter Client — iOS, Android (macOS, Windows — bientôt disponible). Disponible sur l'App Store* et le Play Store.
[!NOTE] * Dans certains pays, l'application iOS n'est pas disponible sur l'App Store. Vous pourriez avoir besoin d'un identifiant Apple d'un autre pays pour la télécharger. Apprenez à changer le pays de votre App Store.
Communauté
[!NOTE] Les clients de la communauté sont développés et maintenus indépendamment. Ils ne sont pas officiellement supportés par l'équipe TrustTunnel.
GUI
Trusty - Un client GUI multiplateforme construit avec Flutter (Windows stable, macOS alpha). Fonctionnalités : journaux en temps réel, déploiement de serveur SSH en 1 clic, et découverte automatique des groupes de domaines pour le tunnel fractionné.
TrustTunnel-GUI-Client — Client GUI Windows, implémenté comme un wrapper Python pour TrustTunnel Client
Surge — (Commercial) Boîte à outils réseau pour macOS et iOS avec support expérimental de TrustTunnel
FireTunnel - Un client multiplateforme écrit en QT utilisant une version modifiée de TrustTunnel Client.
Voir aussi
- CONFIGURATION.md - Documentation de configuration
- DEVELOPMENT.md - Documentation de développement
- PROTOCOL.md - Spécification du protocole
- CHANGELOG.md - Journal des modifications
- VERIFY_RELEASES.md - Comment vérifier les versions
Feuille de route
Bien que notre VPN prenne actuellement en charge le tunnel TCP/UDP/ICMP, nous prévoyons d'ajouter la prise en charge de la communication peer-to-peer entre clients.
Restez à l'écoute pour cette fonctionnalité dans les prochaines versions.
Licence
Ce projet est sous licence Apache 2.0. Voir LICENSE pour plus de détails.