
TrustTunnel v1.1.0
Open-Source-VPN-Protokoll, das TCP-, UDP- und ICMP-Datenverkehr über HTTPS tunnelt und dabei DPI und Drosselung umgeht. Bietet Split-Tunneling, SOCKS5-Proxy, benutzerdefiniertes DNS und plattformübergreifende Clients.
Clients · App store · Play store
Inhaltsverzeichnis
- Einleitung
- Server-Funktionen
- Client-Funktionen
- Schnellstart
- Clients
- Siehe auch
- Roadmap
- Lizenz
Einleitung
TrustTunnel ist ein modernes, quelloffenes VPN-Protokoll, das ursprünglich von AdGuard VPN entwickelt wurde und jetzt von jedem genutzt und überprüft werden kann.
Es bietet schnelle, sichere und zuverlässige VPN-Verbindungen ohne die üblichen Kompromisse. Durch sein Design ist der TrustTunnel-Datenverkehr von regulärem HTTPS-Verkehr nicht zu unterscheiden, sodass er Drosselung und Deep Packet Inspection umgehen kann, während ein starker Datenschutz gewährleistet wird.
Das TrustTunnel-Projekt umfasst den VPN-Endpunkt (dieses Repository), die Bibliothek und CLI für den Client sowie die GUI-Anwendung.
Server-Funktionen
-
VPN-Protokoll: Die Bibliothek implementiert das VPN-Protokoll, das mit HTTP/1.1, HTTP/2 und QUIC kompatibel ist. Durch die Nachahmung von regulärem Netzwerkverkehr wird es unmöglich, es zu erkennen und zu blockieren.
-
Flexibles Verkehrs-Tunneling: TrustTunnel kann TCP-, UDP- und ICMP-Verkehr zum und vom Client tunneln.
-
Plattformkompatibilität: Der Server ist mit Linux und macOS kompatibel. Der Client ist für Android, Apple, Windows und Linux verfügbar.
Client-Funktionen
-
Verkehrs-Tunneling: Die Bibliothek ist in der Lage, TCP-, UDP- und ICMP-Verkehr vom Client zum Endpunkt und zurück zu tunneln.
-
Plattformübergreifende Unterstützung: Sie unterstützt Linux, macOS und Windows, und bietet eine einheitliche Erfahrung über verschiedene Betriebssysteme hinweg.
-
Systemweiter Tunnel und SOCKS5-Proxy: Sie kann als systemweiter Tunnel unter Verwendung einer virtuellen Netzwerkschnittstelle sowie als SOCKS5-Proxy eingerichtet werden.
-
Split Tunneling: Die Bibliothek unterstützt Split Tunneling, sodass Benutzer Verbindungen zu bestimmten Domains oder Hosts vom Routing über den VPN-Endpunkt ausschließen können, oder umgekehrt nur Verbindungen zu bestimmten Domains oder Hosts über den Endpunkt leiten, basierend auf einer Ausschlussliste.
-
Benutzerdefinierter DNS-Upstream: Benutzer können einen benutzerdefinierten DNS-Upstream angeben, der für DNS-Anfragen verwendet wird, die über den VPN-Endpunkt geleitet werden.
Schnellstart
Endpunkt einrichten
Endpunkt installieren
Ein Installationsskript ist verfügbar, das mit folgendem Befehl ausgeführt werden kann:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Das Installationsskript lädt das vorgefertigte Paket aus dem neuesten
GitHub-Release für die geeignete Systemarchitektur herunter und entpackt es nach
/opt/trusttunnel. Das Ausgabeverzeichnis kann durch Angabe des Flags
-o DIR am Ende des obigen Befehls überschrieben werden.
Wenn Sie eine bestimmte Version (anstelle der neuesten) installieren möchten, verwenden Sie -V <version>:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V <version>
[!NOTE] Vorgefertigte Pakete sind für die Architekturen
linux-x86_64,linux-aarch64undmacos-universal(Intel und Apple Silicon) verfügbar.
Endpunkt aktualisieren
Das Installationsskript installiert immer die neueste verfügbare Version. Um Ihre Installation zu aktualisieren, führen Sie den Installationsbefehl erneut aus:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Dies führt das Installationsprogramm erneut aus und ersetzt die Binärdateien im Installationsverzeichnis
(standardmäßig /opt/trusttunnel oder das mit -o DIR angegebene Verzeichnis).
[!NOTE] Vergessen Sie nicht, den Endpunkt vor der Aktualisierung zu stoppen:
sudo systemctl stop trusttunnelUm den Endpunkt nach der Aktualisierung wieder zu starten:
sudo systemctl start trusttunnel
Konfigurationsassistent für Endpunkte
Bitte lesen Sie die CONFIGURATION.md für eine ausführlichere Dokumentation zur Konfiguration des Endpunkts.
Das Installationsverzeichnis enthält die Binärdatei setup_wizard, die bei der
Generierung der für den Endpunkt erforderlichen Konfigurationsdateien hilft:
cd /opt/trusttunnel/
./setup_wizard -h
Der Setup-Assistent unterstützt den interaktiven Modus, sodass Sie ihn ausführen können und er nach den für die Endpunktkonfiguration erforderlichen Daten fragt.
cd /opt/trusttunnel/
sudo ./setup_wizard
[!NOTE]
sudoist erforderlich, um TLS-Zertifikate ordnungsgemäß zu verwalten.
Der Assistent fragt nach den folgenden Feldern, einige davon haben Standardwerte, die Sie bedenkenlos verwenden können:
-
Die Adresse, auf der gelauscht werden soll - Geben Sie die Adresse an, auf der der Endpunkt lauschen soll. Verwenden Sie
0.0.0.0:443für native Bereitstellungen (HTTPS auf allen Schnittstellen). Wenn Sie mit Docker-Portzuordnung443:8443ausführen, setzen Sie sie auf0.0.0.0:8443. -
Pfad zur Anmeldeinformationsdatei - Pfad, in dem die Benutzeranmeldeinformationen für die Autorisierung gespeichert werden.
-
Benutzername - der Benutzername, den der Benutzer für die Autorisierung verwenden wird.
-
Passwort - das Passwort des Benutzers.
-
Einen weiteren Benutzer hinzufügen? - Wählen Sie
yes, wenn Sie weitere Benutzer hinzufügen möchten, oderno, um den Konfigurationsprozess fortzusetzen. -
Pfad zur Regeln-Datei - Pfad zum Speichern der Filterregeln.
-
Verbindungsfilterregeln - Sie können Regeln hinzufügen, die der Endpunkt verwendet, um Verbindungen des Benutzers basierend auf folgenden Kriterien zuzulassen oder zu verweigern:
- Client-IP-Adresse
- TLS-Zufallspräfix
- TLS-Zufall mit Maske
Drücken Sie
n, um alle Verbindungen zuzulassen. -
Pfad zu einer Datei zum Speichern der Bibliothekseinstellungen - Pfad zum Speichern der Hauptkonfigurationsdatei des Endpunkts.
-
Zertifikatsauswahl - Wählen Sie aus, wie ein TLS-Zertifikat erlangt werden soll:
- Ein Let's Encrypt-Zertifikat ausstellen (erfordert eine öffentliche Domain) - der
Setup-Assistent verfügt über integrierte ACME-Unterstützung und kann automatisch ein kostenloses,
öffentlich vertrauenswürdiges Zertifikat von Let's Encrypt erhalten. Sie benötigen:
- Eine registrierte Domain, die auf die IP-Adresse Ihres Servers verweist
- Port 80, der aus dem Internet erreichbar ist (für HTTP-01-Challenge), oder
- Die Möglichkeit, DNS-TXT-Einträge hinzuzufügen (für DNS-01-Challenge)
- Ein selbstsigniertes Zertifikat generieren - geeignet für Tests oder wenn nur der CLI-Client verwendet wird. Hinweis: Der Flutter-Client unterstützt selbstsignierte Zertifikate noch nicht.
- Pfad zu einem vorhandenen Zertifikat angeben - verwenden Sie Ihre eigenen Zertifikatsdateien, die von einer anderen Zertifizierungsstelle oder einem Tool wie certbot bezogen wurden.
- Ein Let's Encrypt-Zertifikat ausstellen (erfordert eine öffentliche Domain) - der
Setup-Assistent verfügt über integrierte ACME-Unterstützung und kann automatisch ein kostenloses,
öffentlich vertrauenswürdiges Zertifikat von Let's Encrypt erhalten. Sie benötigen:
-
Pfad zu einer Datei zum Speichern der TLS-Host-Einstellungen - Pfad zum Speichern der TLS-Host-Einstellungsdatei.
An diesem Punkt sind alle erforderlichen Konfigurationsdateien erstellt und auf der Festplatte gespeichert.
Lebenszyklus des Let's Encrypt-Zertifikats
Der Setup-Assistent kann beim ersten Einrichten ein Let's Encrypt-Zertifikat erhalten, aber Sie sind dafür verantwortlich, dass es im Laufe der Zeit gültig bleibt (Erneuerung und Neuladen/Neustart des Dienstes).
Wenn Sie Certbot zur Verwaltung von Zertifikaten und zur automatischen Erneuerung verwenden, folgen Sie der Anleitung in CERT_RENEWAL.md.
Endpunkt ausführen
Das installierte Paket enthält eine systemd-Dienstvorlage namens
trusttunnel.service.template.
Diese Vorlage kann verwendet werden, um den Endpunkt als systemd-Dienst einzurichten:
[!NOTE] Die Vorlagendatei geht davon aus, dass sich die TrustTunnel-Endpunkt-Binärdatei und alle ihre Konfigurationsdateien in
/opt/trusttunnelbefinden und die Standarddateinamen haben. Ändern Sie die Vorlage, wenn Sie andere Pfade verwendet haben.
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
Client-Konfiguration exportieren
Die Endpunkt-Binärdatei kann Client-Konfigurationen in zwei Formaten generieren:
Deep-Link-Format (Standard)
Generieren Sie einen kompakten tt://? URI, der für QR-Codes und mobile Apps geeignet ist:
# <client_name> - Name des Clients, dessen Anmeldeinformationen in die Konfiguration aufgenommen werden
# <address> - `ip`, `ip:port`, `domain` oder `domain:port`, die der Client zum Verbinden verwenden wird
# Wenn nur `ip` oder `domain` angegeben wird, wird der Port aus dem `listen_address`-Feld verwendet
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address>
# Oder geben Sie das Format explizit an:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> --format deeplink
Dies gibt einen tt://? Deep-Link-URI aus, der:
- Direkt mit mobilen Clients geteilt werden kann
- Mit dem CLI-Client oder TrustTunnel Flutter Client verwendet werden kann
Sie können auch zusätzliche Optionen angeben:
--name <display_name>: Legt einen benutzerdefinierten Anzeigenamen für den Server in der Client-App fest.--dns-upstream <dns_upstream>: Gibt einen DNS-Upstream für den Client an. Kann eine IP-Adresse oder ein sicherer DNS-URI sein (z.B.tls://1.1.1.1,https://dns.google/dns-query). Dieses Flag kann mehrmals verwendet werden, um eine Liste von DNS-Upstreams anzugeben.
Beispiel mit benutzerdefiniertem Namen und 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
Wenn --generate-client-random-prefix verwendet wird, hängt der Endpunkt auch eine
Erlaubnisregel für den generierten Wert an die Datei rules.toml an, auf die in
vpn.toml verwiesen wird.
Hinweis: Wenn Ihr Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle (z.B. Let's Encrypt) signiert ist, wird es automatisch aus dem Deep-Link weggelassen, um ihn kompakt zu halten. Selbstsignierte Zertifikate werden automatisch eingefügt.
TOML-Format (für CLI-Client)
Generieren Sie eine traditionelle TOML-Konfigurationsdatei:
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
Dies gibt eine TOML-Konfigurationsdatei aus, die für den CLI-Client geeignet ist.
Beide Formate enthalten alle notwendigen Informationen, um eine Verbindung zum Endpunkt herzustellen. Siehe die TrustTunnel Flutter Client-Dokumentation für Einrichtungsanweisungen.
Herzlichen Glückwunsch! Sie haben die Einrichtung des Endpunkts abgeschlossen!
Client einrichten
Mehrere Clients sind verfügbar, um eine Verbindung zum Endpunkt herzustellen – siehe Abschnitt Clients für die vollständige Liste. Die folgenden Anweisungen decken die Einrichtung des offiziellen CLI-Clients ab.
Client installieren
Linux / macOS
Ein Installationsskript ist verfügbar:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Das Installationsskript lädt das vorgefertigte Paket aus dem neuesten GitHub-Release für die geeignete Systemarchitektur herunter und entpackt es nach /opt/trusttunnel_client. Das Ausgabeverzeichnis kann durch Angabe des Flags -o DIR am Ende des obigen Befehls überschrieben werden.
[!NOTE] Das Installationsskript unterstützt die Architekturen x86_64, aarch64, armv7, mips und mipsel für Linux und arm64 und x86_64 für macOS.
Windows
Laden Sie das neueste Release-Archiv von der TrustTunnel Client-Releases-Seite herunter.
Extrahieren Sie das Archiv in ein Verzeichnis Ihrer Wahl, z.B. C:\TrustTunnel\.
Router einrichten
Für Router-Bereitstellungen lesen Sie bitte die routerspezifischen Client-Installationsanleitungen.
- Keenetic-Router: TrustTunnel-Keenetic (Anleitung auf Russisch)
Client aktualisieren
Linux / macOS
Das Installationsskript installiert immer die neueste verfügbare Version. Um Ihre Installation zu aktualisieren, führen Sie den Installationsbefehl erneut aus:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Dies führt das Installationsprogramm erneut aus und ersetzt die Binärdateien im Installationsverzeichnis (standardmäßig /opt/trusttunnel_client oder das mit -o DIR angegebene Verzeichnis).
[!NOTE] Vergessen Sie nicht, den Client vor der Aktualisierung zu stoppen (z.B. durch Stoppen des laufenden Prozesses).
Windows
Laden Sie die neueste Version von der Releases-Seite herunter und ersetzen Sie die Dateien in Ihrem Installationsverzeichnis.
Konfigurationsassistent für Clients
Das Installationsverzeichnis enthält die Binärdatei setup_wizard, die bei der
Generierung der für den Client erforderlichen Konfigurationsdateien hilft.
Linux / macOS
cd /opt/trusttunnel_client/
./setup_wizard -h
Um den Client mit der vom Endpunkt generierten Konfiguration zu konfigurieren, führen Sie den folgenden Befehl aus:
./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 beiden Fällen ist <endpoint_config> der Pfad zur Konfigurationsdatei,
die vom Endpunkt generiert wurde.
trusttunnel_client.toml enthält dann alle erforderlichen Konfigurationen für den
Client.
[!TIP] Die generierte Konfiguration enthält grundlegende Einstellungen, um eine Verbindung zum Endpunkt herzustellen. Für erweiterte Funktionen bearbeiten Sie
trusttunnel_client.tomldirekt. Sie können konfigurieren:
- VPN-Modus: Den gesamten Verkehr routen (
general) oder nur bestimmte Ziele (selective)- Kill-Switch: Verkehr blockieren, wenn die VPN-Verbindung getrennt wird
- DNS-Upstreams: Benutzerdefinierte DNS-Resolver (DoH, DoT, DoQ werden unterstützt)
- Ausschlüsse: Domains/IPs umgehen oder durch VPN routen
- Listener-Typ: TUN-Gerät oder SOCKS5-Proxy
Siehe die TrustTunnel CLI Client README für alle verfügbaren Optionen.
[!NOTE] Nach der Bearbeitung der Konfiguration starten Sie den Client neu, damit die Änderungen wirksam werden.
Client ausführen
Linux / macOS
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
sudo ist erforderlich, um die Routen und das TUN-Interface einzurichten.
Windows
Öffnen Sie eine Eingabeaufforderung als Administrator und führen Sie aus:
trusttunnel_client.exe -c trusttunnel_client.toml
Administratorrechte sind erforderlich, um Routen und das TUN-Interface einzurichten.
Clients
Offiziell
CLI
TrustTunnel Client — Linux, macOS, Windows
GUI
TrustTunnel Flutter Client — iOS, Android (macOS, Windows — in Kürze). Verfügbar im App Store* und Play Store.
[!NOTE] * In einigen Ländern ist die iOS-App nicht im App Store verfügbar. Möglicherweise benötigen Sie eine Apple-ID aus einem anderen Land, um sie herunterzuladen. Erfahren Sie, wie Sie Ihr App Store-Land ändern.
Community
[!NOTE] Community-Clients werden unabhängig entwickelt und gewartet. Sie werden nicht offiziell vom TrustTunnel-Team unterstützt.
GUI
Trusty - Ein plattformübergreifender GUI-Client, erstellt mit Flutter (Windows stabil, macOS Alpha). Funktionen umfassen Echtzeit-Logs, 1-Klick-SSH-Server-Bereitstellung und automatische Erkennung von Split-Tunneling-Domänengruppen.
TrustTunnel-GUI-Client — Windows GUI-Client, implementiert als Python-Wrapper für TrustTunnel Client
Surge — (Kommerziell) macOS- und iOS-Netzwerktoolbox mit experimenteller TrustTunnel-Unterstützung
FireTunnel - Ein plattformübergreifender Client, geschrieben in QT, der einen modifizierten TrustTunnel Client verwendet.
Siehe auch
- CONFIGURATION.md - Konfigurationsdokumentation
- DEVELOPMENT.md - Entwicklungsdokumentation
- PROTOCOL.md - Protokollspezifikation
- CHANGELOG.md - Änderungsprotokoll
- VERIFY_RELEASES.md - Releases überprüfen
Roadmap
Während unser VPN derzeit das Tunneln von TCP/UDP/ICMP-Verkehr unterstützt, planen wir, die Unterstützung für Peer-to-Peer-Kommunikation zwischen Clients hinzuzufügen.
Bleiben Sie gespannt auf dieses Feature in kommenden Releases.
Lizenz
Dieses Projekt ist unter der Apache 2.0-Lizenz lizenziert. Siehe LICENSE für Details.