
Una utilidad CLI de Linux que enruta de forma transparente todo el tráfico del sistema a través de la red Tor usando nftables. Permite la rotación rápida de IP y la activación/desactivación sencilla de la configuración global de proxy para tareas de privacidad.
No se necesita configuración por aplicación - solo sudo ttp start y cada conexión pasa por Tor.
[!CAUTION] TTP es una herramienta diseñada para ayudar a la privacidad enrutando el tráfico a través de Tor. Sin embargo, ninguna herramienta puede garantizar el anonimato al 100%. Tu seguridad también depende de tu comportamiento (por ejemplo, usar un navegador normal en lugar del Navegador Tor, iniciar sesión en cuentas, etc.). Usa siempre TTP como parte de una estrategia de seguridad multicapa.
[!WARNING] Si eres un denunciante o participas en actividades de alto riesgo, NO uses TTP. En su lugar, usa directamente herramientas auditadas oficialmente y fiables como TailsOS o el Navegador Tor. Los autores y colaboradores de TTP no asumen ninguna responsabilidad por tu seguridad ni por las consecuencias del uso de este software.
Los scripts de proxy transparente heredados (TorGhost, Anonsurf) sobrescriben archivos de configuración y construyen conjuntos de reglas de iptables que fallan abiertos: cuando se rompen, el tráfico sale en texto claro. TTP está construido al revés - falla cerrado y no deja nada en disco.
| Falla cerrado por construcción | Una tabla nftables aislada inet ttp con un rechazo general y policy drop en el reenvío. Ante un fallo, un disparador del watchdog o una salida no limpia, el tráfico se enruta a través de Tor o se bloquea - nunca se libera. |
| Nada persiste | El estado de la sesión, torrc, el archivo de bloqueo y los registros viven solo en tmpfs (/run/ttp/, /run/tor/ttp/). Un reinicio no deja residuos ni bloqueos obsoletos. |
| Sin configuración por aplicación | TCP y DNS se interceptan en la capa de red. Sin ajustes SOCKS5, sin variables de entorno de proxy, sin necesidad de soporte de aplicaciones. |
| DNS sin reescribir tu sistema | Una superposición mount --bind sobre /etc/resolv.conf en lugar de una edición, más un drop-in volátil que neutraliza systemd-resolved, respaldado por un descarte a nivel de kernel de cualquier tráfico hacia resolutores que no sean loopback. |
| La afirmación de no fuga se mide | Cada regla de contención se prueba en un espacio de nombres de red aislado contra el conjunto de reglas real generado, y cada prueba primero demuestra que puede ver una fuga antes de afirmar que no hay ninguna. Ver Verificación. |
transitions) monitorea Tor, las cadenas de nftables y la superposición de DNS mediante una
doble vigilancia inotify que detecta el intercambio de objetivos de enlaces simbólicos. Repara una vez,
luego aplica un killswitch de emergencia.--bypass-user,
--bypass-group) con coincidencia nativa de UID/GID de nftables, o ejecuta un solo
comando fuera de Tor con ttp bypass <cmd> mediante un slice de cgroups v2.torrc.ttp-tor.service volátil
en puertos no estándar, dejando intacta una instancia de Tor existente.Elige el método que mejor se adapte a tus necesidades. Se recomiendan encarecidamente los paquetes nativos por la estabilidad del sistema, la seguridad y una desinstalación limpia.
Instalar mediante paquetes nativos garantiza que todas las dependencias del sistema (tor, nftables) y las optimizaciones a nivel de kernel (SELinux) sean gestionadas por el gestor de paquetes de tu SO.
Descarga el .deb o .rpm de la versión que quieras desde la última versión - los paquetes son recursos de la versión y no están incluidos en el repositorio - luego instálalo:
sudo apt install ./transparent-tor-proxy_0.4.9_all.debsudo dnf install ./transparent-tor-proxy-0.4.9-1.noarch.rpmcd packaging && makepkg -siPara obtener instrucciones sobre cómo verificar la integridad y autenticidad de los recursos de la versión, consulta la Guía de verificación de versiones.
Si eres desarrollador o quieres instalar desde el repositorio:
git clone https://github.com/onyks-os/TransparentTorProxy.git
cd TransparentTorProxy
sudo ./scripts/install.sh
[!TIP] ¿Por qué usar
./install.sh?
A diferencia de los instaladores estándar de Python, este script es "inteligente". En sistemas basados en Red Hat, detecta si SELinux está en modo Enforcing y compila dinámicamente un módulo de política personalizado (desdettp_tor_policy.te) para permitir que Tor se vincule a los puertos no estándar requeridos por TTP (9041, 9054). Esta optimización a nivel de kernel no puede realizarlapip.
Para instalar TTP mediante gestores de paquetes específicos de Python (pipx o pip con entornos virtuales), consulta la Referencia de métodos de instalación alternativos.
TTP está diseñado para ser simple y ligero. Para obtener la lista completa de comandos CLI, opciones, códigos de salida y especificaciones técnicas, consulta la Referencia de interfaces externas.
La mayoría de los comandos que modifican la red requieren privilegios de root (sudo):
Iniciar el proxy:
sudo ttp start
Detener el proxy:
sudo ttp stop
Comprobar el estado de la sesión actual:
ttp status
Verificar el enrutamiento y la latencia de Tor:
ttp check
Solicitar una nueva IP de salida (rotar circuitos):
sudo ttp refresh
Para configuraciones más avanzadas y perfiles de elusión, consulta la Referencia de perfiles de seguridad y uso avanzados o consulta la Referencia de interfaces externas.
Para confirmar que el túnel funciona correctamente y que no hay fugas:
Verificar la IP de salida de Tor:
curl -s https://check.torproject.org/api/ip
Verificar el enrutamiento DNS:
# Should return a valid IP via Tor's DNSPort
dig +short A check.torproject.org
Prueba de fuga de DNS (Terminal):
# This TXT query SHOULD return an EMPTY output
dig +short TXT whoami.ipv4.akahelp.net
Nota: Una salida vacía es el comportamiento esperado bajo Tor. El resolutor transparente de Tor no admite registros TXT; si este comando devuelve la IP de tu ISP real, tienes una fuga de DNS.
Verificación basada en web: Realiza siempre pruebas adicionales en dnsleaktest.com y ipleak.net.
Para eliminar TTP completamente del sistema:
sudo ./scripts/uninstall.sh
TTP enruta de forma transparente todo el tráfico de red orquestando subsistemas estándar del kernel de Linux, utilidades del sistema e interfaces de control de Tor:
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 de forma atómica para interceptar el tráfico TCP y DNS, redirigiéndolos a Tor mientras previene fugas de IPv6 y DoT/DoH./etc/resolv.conf con una configuración volátil respaldada por RAM mediante un bind-mount a nivel de kernel para garantizar que las llamadas DNS sean resueltas por Tor.Para un recorrido detallado de los flujos de ejecución, los hooks del sistema, los límites de seguridad y los componentes modulares, consulta la:
TTP está diseñado para restaurar siempre tu red, incluso en casos extremos:
| Escenario | Qué ocurre |
|---|---|
ttp stop | Limpieza sin fugas: aplica el bloqueo de desmontaje, apaga Tor de forma ordenada, ejecuta la eliminación activa de sockets, espera 1.5s, vacía el seguimiento de conexiones, restaura el firewall y el DNS (mediante el vaciado y eliminación de tablas), y elimina el archivo de bloqueo |
Ctrl+C / kill | El manejador de señales captura SIGINT/SIGTERM y ejecuta la limpieza normal antes de salir |
kill -9 / Corte de energía | El siguiente ttp start detecta el archivo de bloqueo huérfano, limpia cualquier pila de montaje obsoleta y se restaura automáticamente |
| Emergencia manual | Ejecuta sudo ./scripts/restore-network.sh para vaciar todas las reglas de nftables, restablecer el DNS y eliminar el archivo de bloqueo |
[!WARNING]
- Navegador Tor: Las aplicaciones que usan un proxy SOCKS5 explícito crearán un doble salto de Tor. Usa un navegador normal en su lugar mientras TTP está activo.
- DNS sobre HTTPS (DoH): Los navegadores normales (Firefox, Chrome, Brave, Edge) pueden usar DoH, eludiendo el DNS del sistema. TTP mitiga DoH mediante una defensa de 3 capas: (1) todo el tráfico TCP saliente (incluido DoH) se redirige al TransPort de Tor; (2) los dominios canary de DoH comunes se asignan a
0.0.0.0entorrc; (3) los resolutores de IP DoH públicos se bloquean en el puerto TCP/UDP 443 (bloqueando DoH sobre HTTP/3 QUIC). Para máxima seguridad, desactiva DoH / "DNS seguro" en la configuración de tu navegador.- IPv6: Totalmente compatible cuando está disponible. TTP detecta dinámicamente el loopback de IPv6 y enruta el tráfico IPv6 a través de Tor. Si el host carece de soporte de loopback IPv6 O si se pasa la opción
--no-ipv6, TTP descarta todo el tráfico IPv6 saliente para prevenir fugas.- Variación de IP de salida: Diferentes conexiones pueden mostrar diferentes IPs de salida debido al aislamiento de flujos de Tor.
Para un desglose completo de los riesgos residuales, los límites de confianza arquitectónicos y el modelo de amenazas STRIDE, consulta:
TTP usa un Makefile para automatizar y estandarizar el pipeline de pruebas. Esto garantiza que cada cambio se verifique contra pruebas unitarias y de integración antes de ser confirmado.
[!IMPORTANT] Ejecuta siempre
make verifyantes de subir código. Si este comando falla, el código NO está listo para producción.
| Comando | Objetivo |
|---|---|
make test | Ejecuta Pruebas unitarias rápidas localmente (no requiere root, totalmente simuladas). |
make integration-debian | Ejecuta pruebas completas del sistema dentro de un contenedor Docker privilegiado (Debian). |
make integration-all | Ejecuta pruebas de integración para todas las distros compatibles (Debian, Fedora, Arch). |
make verify | Ejecuta pruebas unitarias + todas las pruebas de integración. |
make build | Genera paquetes nativos .deb y .rpm. |
make clean | Elimina todos los artefactos de compilación, cachés y archivos temporales. |
La afirmación de cero fugas de TTP se mide, no se afirma. El
Motor de Sandbox de Red construye
un espacio de nombres de red aislado, carga el conjunto de reglas real generado por TTP en él,
genera el tráfico que consistiría una fuga y vigila la interfaz veth del límite
con un sniffer de Scapy.
Cada prueba de contención se ejecuta dos veces. assert no leaks también es cierto cuando el
sniffer nunca se inició, cuando el nombre de la interfaz es incorrecto o cuando el tráfico
nunca salió del proceso, por lo que cada prueba primero ejecuta el mismo estímulo con el
conjunto de reglas vaciado y requiere que se vea el paquete. Solo entonces afirma
que el conjunto de reglas de TTP lo detiene. Un arnés que no puede observar una fuga falla la
prueba en lugar de pasarla.
Cubierto: DNS simple (UDP y TCP), TCP ordinario, DoT en 853, QUIC DoH en UDP/443, ICMP, UDP arbitrario, IPv6 — además de la otra dirección, que un UID exento puede seguir alcanzando la LAN. Un firewall que bloqueara todo pasaría las primeras siete y fallaría la octava.
# 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
Esto se ejecuta en CI en cada push (el trabajo Zero-leak ruleset verification) y como
un paso en scripts/verify.sh antes de una versión.
Aunque las pruebas de integración con Docker son rápidas y atómicas, no capturan el 100% de los matices del kernel/systemd. Para cambios críticos, se recomienda encarecidamente probar en una VM QEMU real:
# 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
Si algo sale mal, ejecuta el comando de diagnóstico:
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
Las contribuciones son bienvenidas, y las áreas donde más se necesita ayuda son estrechas y específicas:
Comienza con CONTRIBUTING.md, que documenta las dos reglas sobre las que está construido este código: nunca corrijas un error sin añadir la comprobación que lo habría detectado, y una prueba que afirma una ausencia debe primero demostrar que puede detectar una presencia.
| Errores y solicitudes de funciones | GitHub Issues |
| Vulnerabilidades de seguridad | SECURITY.md - por favor, no abras un issue público |
| Soporte de versiones y EOL | SUPPORT.md |
| Versiones y paquetes | GitHub Releases · PyPI |
Este proyecto se mantiene en tiempo libre. Una estrella ayuda a que otros lo encuentren; el patrocinio ayuda a que siga adelante.
MIT. Consulta LICENSE para más información.