VPN TrustTunnel
TrustTunnel
TrustTunnel est un protocole VPN open source moderne développé à l’origine par AdGuard VPN maintenant disponible pour tout le monde. Il offre des connexions VPN rapides, sécurisées et fiables sans les compromis habituels. Par conception, le trafic TrustTunnel est impossible à distinguer du trafic HTTPS régulier, lui permettant de contourner l’étranglement et l’inspection en profondeur tout en conservant de solides protections de la vie privée.
Le projet TrustTunnel inclut le point de terminaison VPN (le dépôt TrustTunnel), library and CLI for the client, et GUI application.
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 régulier, il devient impossible à détecter et à bloquer.
- Tunnelage de trafic flexible: TrustTunnel peut tunneler TCP, UDP et ICMP trafic à destination et en provenance du client.
- Compatibilité de la plate-forme: Le serveur est compatible avec Linux et macOS. Le client est disponible pour Android, Apple, Windows et Linux.
Caractéristiques du client
- Tunneling de trafic: La bibliothèque est capable de tunneler TCP, UDP et ICMP trafic du client au point de terminaison et retour.
- Support multiplateforme: Il prend en charge les plates-formes Linux, macOS et Windows, fournir une expérience cohérente entre différents systèmes d’exploitation.
- System-Wide Tunnel et SOCKS5 proxy : Il peut être configuré comme un system-wide tunnel, utilisant une interface réseau virtuelle, ainsi qu’un proxy SOCKS5.
- Split Tunneling : La bibliothèque prend en charge le split tunneling, permettant aux utilisateurs de exclure les connexions à certains domaines ou hôtes du routage via le VPN endpoint, ou vice versa, n’achemine que les connexions vers des domaines ou des hôtes spécifiques à travers le point de terminaison basé sur une liste d’exclusion.
- DNS personnalisé en amont (Custom DNS Upstream): Les utilisateurs peuvent spécifier un DNS personnalisé en amont, qui est utilisé pour les requêtes DNS acheminées via le point de terminaison VPN.
Démarrage rapide
Configuration Endpoint (point de terminaison)
Installer Endpoint
Un script d’installation est disponible qui peut être exécuté avec la commande suivante:
1
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éconstruit à partir du dernier GitHub release pour l’architecture système appropriée et décompressez-le sur /opt/trusttunnel. Le répertoire de sortie peut être remplacé par la spécification -o DIR à la fin de la commande ci-dessus.
Si vous souhaitez installer une version spécifique (au lieu des dernières), utilisez -V <version>:
1
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V <version>
Note: Actuellement uniquement les architectures
linux-x86_64etlinux-aarch64sont fournies pour les paquets préconstruits.
Mise à jour Endpoint
Le script d’installation installe toujours la dernière version disponible. Donc, pour mettre à jour votre installation, exécutez à nouveau la commande d’installation:
1
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Cela exécute de nouveau l’installateur et remplace les binaires dans le répertoire d’installation ( /opt/trusttunnelpar défaut, ou le répertoire que vous avez spécifié avec -o DIR).
Note: N’oubliez pas d’arrêter le point de terminaison avant de mettre à jour:
sudo systemctl stop trusttunnelPour recommencer le point de terminaison après la mise à jour:sudo systemctl start trusttunnel
TrustTunnel Flutter Client 1.0 Avertissement
Avertissement: TrustTunnel Flutter Client ne prend pas encore en charge les certificats auto-signés. Si vous souhaitez utiliser le client TrustTunnel Flutter, vous devez avoir un certificat valide délivré par une autorité de certification (CA) de confiance publique associée avec un domaine enregistré pour l’adresse IP du endpoint (point de terminaison). Sinon, le client TrustTunnel Flutter ne pourra pas se connecter au endpoint (point de terminaison).
Assistant de configuration du endpoint
Veuillez vous référer au CONFIGURATION.md pour le plus détaillé documentation sur la façon de configurer le endpoint.
Le répertoire d’installation contient le binaire setup_wizard qui aide à générer les fichiers de configuration requis pour que le endpoint s’exécute:
1
2
cd /opt/trusttunnel/
./setup_wizard -h
L’assistant de configuration prend en charge le mode interactif, de sorte que vous puissiez l’exécuter et il vous demandera pour les données nécessaires à la configuration des terminaux.
1
2
cd /opt/trusttunnel/
sudo ./setup_wizard
Note:
sudoest nécessaire pour gérer correctement les certificats TLS.
L’assistant vous demandera les champs suivants, certains d’entre eux ont des valeurs par défaut que vous pouvez utiliser en toute sécurité:
- Adresse à écouter - spécifier l’adresse à écouter pour le point de terminaison. Utilisez par défaut
0.0.0.0:443si vous voulez que le point d’extrémité écoute sur le port 443 (HTTPS) sur toutes les interfaces. - Chemin vers le fichier d’informations d’identification - chemin d’accès fichier identification pour autorisation utilisateur
- Nom d’utilisateur (Username) - le nom d’utilisateur que l’utilisateur utilisera pour l’autorisation.
- Mot de passe - le mot de passe de l’utilisateur.
- Ajouter un utilisateur supplémentaire? - sélectionner
yessi vous souhaitez ajouter plus d’utilisateurs, ounopour poursuivre le processus de configuration. - Chemin d’accès au fichier de règles - chemin d’accès pour stocker les règles de filtrage.
- Règles de filtrage de connexion - vous pouvez ajouter des règles que le point de terminaison utilisera pour autoriser ou interdire les connexions de l’utilisateur en fonction de:
- Adresse IP client
- Préfixe aléatoire TLS
- TLS aléatoire avec masque
Presser
npour permettre toutes les connexions.
- Chemin d’accès à un fichier pour stocker les paramètres de la bibliothèque - chemin d’accès pour stocker le fichier principal de configuration du point de terminaison.
- Sélection de certificat - choisissez comment obtenir un certificat TLS:
- Délivrez un certificat Let’s Encrypt (nécessite un domaine public) - le l’assistant de configuration a la prise en charge intégrée d’ACME et peut automatiquement obtenir un support gratuit, Certificat de confiance publique de Let’s Encrypt. Vous aurez besoin de:
- Un domaine enregistré pointant vers l’adresse IP de votre serveur
- Port 80 accessible depuis Internet (pour HTTP-01 challenge), ou
- Possibilité d’ajouter des enregistrements DNS TXT (pour le défi DNS-01)
- Générer un certificat auto-signé - adapté pour tester ou lors de l’utilisation le client CLI uniquement. Remarque: Le client Flutter ne prend pas en charge l’auto-signé certificats pour l’instant.
- Fournir le chemin d’accès au certificat existant - utilisez vos propres fichiers de certificat obtenu à partir d’une autre CA ou d’un outil comme certbot.
- Délivrez un certificat Let’s Encrypt (nécessite un domaine public) - le l’assistant de configuration a la prise en charge intégrée d’ACME et peut automatiquement obtenir un support gratuit, Certificat de confiance publique de Let’s Encrypt. Vous aurez besoin de:
- Chemin d’accès à un fichier pour stocker les paramètres des hôtes TLS - chemin d’accès pour stocker le fichier de paramètres d’hôte TLS.
À ce stade, tous les fichiers de configuration requis sont créés et enregistrés sur le disque.
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 vous assurer qu’il reste valide au fil du 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.
Acme.sh Suivre la procédure Acme.sh - Certificats Let’s Encrypt
Génération des certificats
1
2
3
acme.sh --dns dns_ovh --server letsencrypt \
--issue --keylength ec-384 \
-d 'ouestline.xyz'
Installation certificats dans les dossiers
1
2
3
4
acme.sh --install-cert -d ouestline.xyz --ecc \
--key-file /opt/trusttunnel/key.pem \
--fullchain-file /opt/trusttunnel/cert.pem \
--reloadcmd "sudo systemctl restart trusttunnel.service"
Lors de l’exécution
--cron, tout nouveau certificat sera automatiquement installé, et lereloadcmdsera exécuté.
--cron installera automatiquement les certificats sur les informations de renouvellement réussies.
Il semble se baser sur la dernière fois que vous avez exécuté --install-cert, alors assurez-vous que vous exécutez manuellement au moins une fois pour être sûr que cron job fonctionnera comme prévu.
Résultat
1
2
3
4
[Mon Jan 26 05:00:49 PM GMT 2026] Installing key to: /opt/trusttunnel/key.pem
[Mon Jan 26 05:00:49 PM GMT 2026] Installing full chain to: /opt/trusttunnel/cert.pem
[Mon Jan 26 05:00:49 PM GMT 2026] Running reload cmd: sudo systemctl restart trusttunnel.service
[Mon Jan 26 05:00:49 PM GMT 2026] Reload successful
Renouvellement automatique
Le cron job crontab -l
1
21 18 * * * "/home/ouestyan/.acme.sh"/acme.sh --cron --home "/home/ouestyan/.acme.sh" > /dev/null
Exécuter endpoint
Le paquet installé contient le modèle de service système, nommé trusttunnel.service.template.
Ce modèle peut être utilisé pour configurer le point de terminaison comme un service système:
Note: Le fichier de modèle suppose que le binaire TrustTunnel Endpoint et tout les fichiers de configuration sont situés dans
/opt/trusttunnelavec les chemins par défaut. Modifiez le modèle si vous avez utilisé des chemins différents.
1
2
3
4
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 de terminaison est capable de générer la configuration client pour un utilisateur particulier. Cette configuration contient toutes les informations nécessaires pour vous connectez au endpoint .
Pour générer la configuration, exécutez la commande suivante:
1
2
3
4
5
# <client_name> - name of the client those credentials will be included in the configuration
# <public_ip> - `ip` or `ip:port` that the user will use to connect to the endpoint
# If only `ip` is specified, the port from the `listen_address` field will be used
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip>
Cela imprimera la configuration avec les informations d’identification du client nommé <client_name>.
La configuration du client généré pourrait être utilisée pour configurer le TrustTunnel Flutter Client, se référer à la documentation dans son dépôt.
Vous avez fini de mettre en place le endpoint !
Configuration du client
Installer le client
Vous avez le choix d’utiliser un client CLI ou un Client GUI (disponible sur App Store et Play Store).
Pour installer le client CLI, exécutez la commande suivante:
1
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éconstruit à partir de la dernière version de GitHub pour l’architecture système appropriée et le décompactera sur /opt/trusttunnel_client. Le répertoire de sortie peut être remplacé par la spécification -o DIR à la fin de la commande ci-dessus.
Mise à jour du client
Le script d’installation installe toujours la dernière version disponible. Donc, pour mettre à jour votre installation, exécutez à nouveau la commande d’installation:
1
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Note: N’oubliez pas d’arrêter le client avant la mise à jour (par exemple, en arrêtant le processus en cours d’exécution).
Cela réexécute l’installateur et remplace les binaires dans le répertoire d’installation ( /opt/trusttunnel_clientpar défaut, ou le répertoire que vous avez spécifié avec -o DIR).
Note: Les scripts d’installation supportent x86_64, aarch64, armv7, mips et mipsel pour linux et arm64 et x86_64 pour les macos.
Assistant de configuration client
Le répertoire d’installation contient le binaire setup_wizard qui aide à générer les fichiers de configuration requis pour que le client s’exécute:
1
2
cd /opt/trusttunnel_client/
./setup_wizard -h
Pour configurer le client pour utiliser la configuration générée par le point de terminaison, exécutez la commande suivante:
1
2
3
./setup_wizard --mode non-interactive \
--endpoint_config <endpoint_config> \
--settings trusttunnel_client.toml
où <endpoint_config>est le chemin vers une configuration générée par le endpoint.
trusttunnel_client.tomlcontiendra toute la configuration requise pour le client. Pour voir la configuration détaillée complète, exécutez la commande suivante:
1
cat /opt/trusttunnel_client/trusttunnel_client.toml
Astuce
La configuration générée contient des paramètres de base pour se connecter au point de terminaison. Pour les fonctionnalités avancées, modifiez trusttunnel_client.tomldirectement. Vous pouvez configurer:
- Mode VPN : Acheminer tout le trafic (
general) ou seulement des destinations spécifiques (selective) - Kill switch : Bloquer le trafic lorsque le VPN se déconnecte
- DNS en amont : Résolveurs DNS personnalisés (DoH, DoT, DoQ pris en charge)
- Exclusions : Domaines/IPs pour contourner ou acheminer via VPN
- Type d’auditeur : appareil TUN ou proxy SOCKS5
Voir le TrustTunnel CLI Client README pour toutes les options disponibles.
Note: Après avoir modifié la configuration, redémarrez le client pour que les modifications prennent effet.
Exécuter client
Pour exécuter le client exécutez la commande suivante:
1
2
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
sudoest nécessaire pour configurer l’interface routes et tun.
Voir Aussi
- CONFIGURATION.md - Documentation de configuration
- DEVELOPMENT.md - Documentation de développement
- PROTOCOL.md - Spécification du protocole
- CHANGELOG.md - Changelog
Feuille de route
Bien que notre VPN prenne actuellement en charge le trafic TCP/UDP/ICMP, nous prévoyons d’ajouter un support pour communication peer-to-peer entre clients. Restez à l’affût de cette fonctionnalité dans les prochaines versions.
Licence
Ce projet est sous licence Apache 2.0 License. Voir LICENSE.md pour plus de détails.



