
Ein Linux-CLI-Dienstprogramm, das den gesamten Systemverkehr transparent über das Tor-Netzwerk mittels nftables leitet. Es ermöglicht eine schnelle IP-Rotation und ein einfaches Umschalten globaler Proxy-Einstellungen für Datenschutzaufgaben.
Keine Einrichtung pro Anwendung erforderlich - einfach sudo ttp start und jede Verbindung läuft über Tor.
[!CAUTION] TTP ist ein Tool, das die Privatsphäre unterstützen soll, indem es den Datenverkehr über Tor leitet. Kein Tool kann jedoch 100%ige Anonymität garantieren. Ihre Sicherheit hängt auch von Ihrem Verhalten ab (z. B. Verwendung eines normalen Browsers statt des Tor Browsers, Anmeldung in Konten usw.). Verwenden Sie TTP stets als Teil einer mehrschichtigen Sicherheitsstrategie.
[!WARNING] Wenn Sie ein Whistleblower sind oder risikoreiche Aktivitäten durchführen, verwenden Sie TTP NICHT. Nutzen Sie stattdessen offiziell geprüfte und zuverlässige Tools wie TailsOS oder direkt den Tor Browser. Die Autoren und Mitwirkenden von TTP übernehmen keine Verantwortung für Ihre Sicherheit oder die Konsequenzen der Nutzung dieser Software.
Ältere transparente Proxy-Skripte (TorGhost, Anonsurf) überschreiben Konfigurationsdateien und erstellen iptables-Regelsätze, die offen fehlschlagen: Wenn sie versagen, verlässt der Datenverkehr das System im Klartext. TTP ist genau umgekehrt aufgebaut - es schlägt geschlossen fehl und behält nichts auf der Festplatte.
| Fail-closed durch Konstruktion | Eine isolierte inet ttp nftables-Tabelle mit einem Catch-all-Reject und policy drop beim Forwarding. Bei einem Absturz, einem Watchdog-Trigger oder einem unsauberen Beenden wird der Datenverkehr entweder über Tor geleitet oder blockiert - niemals freigegeben. |
| Nichts bleibt bestehen | Sitzungszustand, torrc, Lock-Datei und Logs liegen ausschließlich im tmpfs (/run/ttp/, /run/tor/ttp/). Ein Neustart hinterlässt keine Rückstände und keine veraltete Sperre. |
| Keine Einrichtung pro Anwendung | TCP und DNS werden auf der Netzwerkschicht abgefangen. Keine SOCKS5-Einstellungen, keine Proxy-Umgebungsvariablen, keine Anwendungsunterstützung erforderlich. |
| DNS ohne Neuschreiben Ihres Systems | Ein mount --bind-Overlay auf /etc/resolv.conf statt einer Bearbeitung, plus ein flüchtiger Drop-in, der systemd-resolved neutralisiert, gestützt auf einen Kernel-Level-Drop für jeglichen Nicht-Loopback-Resolver-Verkehr. |
| Die Leak-Behauptung ist gemessen | Jede Containment-Regel wird in einem isolierten Netzwerk-Namespace gegen den tatsächlich generierten Regelsatz getestet, und jeder Test beweist zuerst, dass er ein Leck sehen kann, bevor er behauptet, dass keines existiert. Siehe Verifikation. |
transitions), überwacht Tor, die nftables-Ketten und das DNS-Overlay über einen
doppelten inotify-Watch, der das Austauschen von Symlink-Zielen erkennt. Er repariert einmal,
dann greift ein Notfall-Killswitch.--bypass-user,
--bypass-group) mit nativer nftables-UID/GID-Übereinstimmung, oder führen Sie einen einzelnen
Befehl außerhalb von Tor mit ttp bypass <cmd> über einen cgroups-v2-Slice aus.torrc vergiftet.ttp-tor.service
auf Nicht-Standard-Ports und lässt eine bestehende Tor-Instanz unberührt.Wählen Sie die Methode, die am besten zu Ihren Bedürfnissen passt. Native Pakete werden dringend empfohlen für Systemstabilität, Sicherheit und saubere Deinstallation.
Die Installation über native Pakete stellt sicher, dass alle Systemabhängigkeiten (tor, nftables) und Kernel-Level-Optimierungen (SELinux) von Ihrem OS-Paketmanager verwaltet werden.
Laden Sie das .deb oder .rpm für die gewünschte Version aus dem neuesten Release herunter - die Pakete sind Release-Assets und nicht im Repository eingecheckt - und installieren Sie es dann:
sudo apt install ./transparent-tor-proxy_0.4.9_all.debsudo dnf install ./transparent-tor-proxy-0.4.9-1.noarch.rpmcd packaging && makepkg -si bauenAnweisungen zur Überprüfung der Integrität und Authentizität der Release-Assets finden Sie im Release Verification Guide.
Wenn Sie Entwickler sind oder aus dem Repository installieren möchten:
git clone https://github.com/onyks-os/TransparentTorProxy.git
cd TransparentTorProxy
sudo ./scripts/install.sh
[!TIP] Warum
./install.shverwenden?
Anders als Standard-Python-Installer ist dieses Skript "intelligent". Auf Red-Hat-basierten Systemen erkennt es, ob SELinux im Modus Enforcing läuft, und kompiliert dynamisch ein benutzerdefiniertes Policy-Modul (austtp_tor_policy.te), damit Tor an die von TTP benötigten Nicht-Standard-Ports (9041, 9054) binden kann. Diese Kernel-Level-Optimierung kann vonpipnicht durchgeführt werden.
Zur Installation von TTP über Python-spezifische Paketmanager (pipx oder pip mit virtuellen Umgebungen) siehe die Alternative Installation Methods Reference.
TTP ist einfach und leichtgewichtig konzipiert. Die vollständige Liste der CLI-Befehle, Optionen, Exit-Codes und technischen Spezifikationen finden Sie in der External Interfaces Reference.
Die meisten netzwerkverändernden Befehle erfordern Root-Rechte (sudo):
Proxy starten:
sudo ttp start
Proxy stoppen:
sudo ttp stop
Aktuellen Sitzungsstatus prüfen:
ttp status
Tor-Routing und Latenz überprüfen:
ttp check
Neue Exit-IP anfordern (Circuits rotieren):
sudo ttp refresh
Für fortgeschrittenere Setups und Umgehungsprofile siehe die Advanced Security & Usage Profiles Reference oder konsultieren Sie die External Interfaces Reference.
Um zu bestätigen, dass der Tunnel korrekt funktioniert und keine Lecks vorhanden sind:
Tor-Exit-IP überprüfen:
curl -s https://check.torproject.org/api/ip
DNS-Routing überprüfen:
# Should return a valid IP via Tor's DNSPort
dig +short A check.torproject.org
DNS-Leak-Test (Terminal):
# This TXT query SHOULD return an EMPTY output
dig +short TXT whoami.ipv4.akahelp.net
Hinweis: Eine leere Ausgabe ist das erwartete Verhalten unter Tor. Tors transparenter Resolver unterstützt keine TXT-Einträge; wenn dieser Befehl die echte IP Ihres ISPs zurückgibt, haben Sie ein DNS-Leck.
Webbasierte Verifikation: Führen Sie stets zusätzliche Tests auf dnsleaktest.com und ipleak.net durch.
Um TTP vollständig vom System zu entfernen:
sudo ./scripts/uninstall.sh
TTP leitet den gesamten Netzwerkverkehr transparent, indem es Standard-Linux-Kernel-Subsysteme, Systemdienstprogramme und Tors Steuerungsschnittstellen orchestriert:
flowchart LR
App["Application"] --> Local["Local Network"]
Local --> DNS["systemd-resolved (Intercepted)"]
DNS --> NFT["nftables (inet ttp table)"]
NFT --> Tor["Tor Daemon"]
Tor --> Internet["Internet"]inet ttp nftables-Regelsatz, um TCP- und DNS-Verkehr abzufangen und ihn zu Tor umzuleiten, während IPv6- und DoT/DoH-Lecks verhindert werden./etc/resolv.conf mit einer flüchtigen, RAM-gestützten Konfiguration über einen Kernel-Level-Bind-Mount, um sicherzustellen, dass DNS-Aufrufe von Tor aufgelöst werden.Eine detaillierte Beschreibung der Ausführungsabläufe, System-Hooks, Sicherheitsgrenzen und modularen Komponenten finden Sie im:
TTP ist darauf ausgelegt, Ihr Netzwerk stets wiederherzustellen, selbst in Randfällen:
| Szenario | Was passiert |
|---|---|
ttp stop | Zero-Leak-Bereinigung: wendet Teardown-Lockdown an, fährt Tor ordnungsgemäß herunter, führt aktives Socket-Abschneiden aus, wartet 1,5 s, leert die Connection-Tracking-Tabelle, stellt Firewall und DNS wieder her (über Table-Flush und -Delete) und löscht die Lock-Datei |
Ctrl+C / kill | Signal-Handler fängt SIGINT/SIGTERM ab und führt vor dem Beenden die normale Bereinigung aus |
kill -9 / Stromausfall | Das nächste ttp start erkennt die verwaiste Lock-Datei, räumt etwaige veraltete Mount-Stacks auf und stellt automatisch wieder her |
| Manueller Notfall | Führen Sie sudo ./scripts/restore-network.sh aus, um alle nftables-Regeln zu leeren, DNS zurückzusetzen und die Lock-Datei zu löschen |
[!WARNING]
- Tor Browser: Anwendungen, die einen expliziten SOCKS5-Proxy verwenden, erzeugen einen doppelten Tor-Hop. Verwenden Sie stattdessen einen normalen Browser, während TTP aktiv ist.
- DNS-over-HTTPS (DoH): Normale Browser (Firefox, Chrome, Brave, Edge) können DoH verwenden und damit das System-DNS umgehen. TTP mildert DoH durch eine 3-Schichten-Verteidigung: (1) der gesamte ausgehende TCP-Verkehr (einschließlich DoH) wird zum Tor TransPort umgeleitet; (2) gängige DoH-Canary-Domains werden in
torrcauf0.0.0.0abgebildet; (3) öffentliche DoH-IP-Resolver werden auf TCP/UDP-Port 443 blockiert (blockiert HTTP/3 QUIC DoH). Deaktivieren Sie für maximale Sicherheit DoH / "Secure DNS" in Ihren Browsereinstellungen.- IPv6: Vollständig unterstützt, wenn verfügbar. TTP erkennt IPv6-Loopback dynamisch und leitet IPv6-Verkehr über Tor. Wenn der Host keine IPv6-Loopback-Unterstützung hat ODER wenn die Option
--no-ipv6übergeben wird, verwirft TTP den gesamten ausgehenden IPv6-Verkehr, um Lecks zu verhindern.- Exit-IP-Variation: Verschiedene Verbindungen können aufgrund der Tor-Stream-Isolierung unterschiedliche Exit-IPs anzeigen.
Eine vollständige Aufschlüsselung der Restrisiken, architektonischen Vertrauensgrenzen und des STRIDE-Bedrohungsmodells finden Sie in:
TTP verwendet ein Makefile, um die Testpipeline zu automatisieren und zu standardisieren. Dies stellt sicher, dass jede Änderung vor dem Commit gegen Unit- und Integrationstests verifiziert wird.
[!IMPORTANT] Führen Sie immer
make verifyaus, bevor Sie Code pushen. Wenn dieser Befehl fehlschlägt, ist der Code NICHT produktionsbereit.
| Befehl | Ziel |
|---|---|
make test | Führt schnelle Unit-Tests lokal aus (kein Root erforderlich, vollständig gemockt). |
make integration-debian | Führt vollständige Systemtests in einem privilegierten Docker-Container aus (Debian). |
make integration-all | Führt Integrationstests für alle unterstützten Distributionen aus (Debian, Fedora, Arch). |
make verify | Führt Unit-Tests + alle Integrationstests aus. |
make build | Generiert native .deb- und .rpm-Pakete. |
make clean | Entfernt alle Build-Artefakte, Caches und temporären Dateien. |
TTPs Zero-Leak-Behauptung ist gemessen, nicht behauptet. Die
Network Sandbox Engine baut
einen isolierten Netzwerk-Namespace auf, lädt TTPs echten generierten Regelsatz hinein,
erzeugt den Datenverkehr, aus dem ein Leck bestehen würde, und überwacht die Grenz-veth-
Schnittstelle mit einem Scapy-Sniffer.
Jeder Containment-Test läuft zweimal. assert no leaks ist auch dann wahr, wenn der
Sniffer nie gestartet wurde, wenn der Schnittstellenname falsch ist oder wenn der Datenverkehr
den Prozess nie verlassen hat, daher führt jeder Test zuerst denselben Stimulus mit dem
geleerten Regelsatz aus und verlangt, dass das Paket gesehen wird. Erst dann behauptet er,
dass TTPs Regelsatz es stoppt. Eine Testumgebung, die ein Leck nicht beobachten kann, lässt den
Test fehlschlagen, anstatt ihn zu bestehen.
Abgedeckt: einfaches DNS (UDP und TCP), gewöhnliches TCP, DoT auf 853, QUIC DoH auf UDP/443, ICMP, beliebiges UDP, IPv6 — plus die andere Richtung, dass eine umgangene UID noch das LAN erreichen kann. Eine Firewall, die alles blockieren würde, würde die ersten sieben bestehen und die achte fehlschlagen.
# libpcap is required: the sniffer compiles a BPF filter, and Scapy dlopen()s
# the unversioned libpcap.so that only the -devel/-dev package ships.
sudo apt install nftables iproute2 conntrack libpcap0.8 libpcap-dev # Debian/Ubuntu
sudo dnf install nftables iproute2 conntrack libpcap libpcap-devel # Fedora/RHEL
pip install -e ".[nse]"
make test-nse # runs as root; TTP_REQUIRE_NSE=1 so it cannot skip itself
Dies läuft in der CI bei jedem Push (der Job Zero-leak ruleset verification) und als
Schritt in scripts/verify.sh vor einem Release.
Während Docker-Integrationstests schnell und atomar sind, erfassen sie nicht 100 % der Kernel-/systemd-Nuancen. Für kritische Änderungen ist es sehr empfehlenswert, in einer echten QEMU-VM zu testen:
# Start a specific VM (e.g., arch)
./scripts/vm/start.sh arch
# Sync current code to the VM
./scripts/vm/send.sh
# Snapshot management for easy rollbacks
./scripts/vm/snapshot.sh arch save before-risky-test
Wenn etwas schiefgeht, führen Sie den Diagnosebefehl aus:
sudo ttp diagnose
├── pyproject.toml # Package metadata and dependencies
├── README.md
├── CONTRIBUTING.md # Contribution guidelines
├── SECURITY.md # Security policy
├── scripts/ # Installation, verification, and VM management scripts
├── assets/ # Branding and demo assets
├── packaging/ # Packaging configurations (.deb, .rpm, Arch PKGBUILD)
├── ttp/ # Main Python source package
│ └── resources/ # Internal package resources (SELinux policies, etc.)
├── tests/ # Unit, integration, and leak testing suites
└── docs/ # Technical documentation, threat models, and ADRs
Beiträge sind willkommen, und die Bereiche, in denen Hilfe am wichtigsten ist, sind eng und spezifisch:
Beginnen Sie mit CONTRIBUTING.md, das die zwei Regeln dokumentiert, auf denen diese Codebasis aufgebaut ist: Beheben Sie niemals einen Fehler, ohne die Prüfung hinzuzufügen, die ihn erkannt hätte, und ein Test, der eine Abwesenheit behauptet, muss zuerst beweisen, dass er eine Anwesenheit erkennen kann.
| Fehler und Funktionswünsche | GitHub Issues |
| Sicherheitslücken | SECURITY.md - bitte eröffnen Sie kein öffentliches Issue |
| Versionsunterstützung und EOL | SUPPORT.md |
| Releases und Pakete | GitHub Releases · PyPI |
Dieses Projekt wird in der Freizeit gepflegt. Ein Star hilft anderen, es zu finden; Sponsoring hilft ihm, weiterzumachen.
MIT. Siehe LICENSE für weitere Informationen.