SMTP Tunnel Proxy – SOCKS5 basado en SMTP rápido para evadir DPI

Introducción

En una era donde el Análisis Profundo de Paquetes (DPI) puede bloquear el tráfico web, los investigadores y defensores de la privacidad necesitan soluciones que combinen invisibilidad con rendimiento. El SMTP Tunnel Proxy llena ese nicho al convertir cualquier flujo TCP en una conversación SMTP, permitiendo que los datos pasen por puertos SMTP aprobados (habitualmente 25, 587 o 465). Construido en puro Python, se despliega rápidamente y no requiere cambios en el núcleo.

Declaración del Problema

  • Muchos cortafuegos corporativos y nacionales filtran el tráfico en los puertos 80/443, bloqueando HTTPS.
  • Los VPN tradicionales y túneles SSH suelen ser detectados o limitados por DPI.
  • La evasión de censura requiere herramientas que parezcan inofensivas.

Solución: Utilizar el protocolo SMTP estándar como cobertura, aprovechando TLS para cifrado y puertos de relay de correo que los cortafuegos rara vez inspeccionan.

Visión General de la Arquitectura

Navegador   →   Cliente SOCKS5   →   Servidor Túnel SMTP   →   Internet
     Tráfico TCP   disfrazado como SMTP   sobre TLS   salida normal

Componentes clave: * Servidor – Escucha en TCP 587, realiza un handshake STARTTLS, luego cambia a un protocolo binario personalizado. * Cliente – Un proxy SOCKS5 local (puerto 1080 por defecto) que reenvía el tráfico a través del servidor. * Capa de Usuario – Cada nombre de usuario recibe una clave precompartida única, lista blanca de IP opcional y registro por usuario.

Características Principales

Característica Descripción
TLS 1.2+ Todos los datos cifrados después de STARTTLS
Evasión DPI El handshake imita a servidores Postfix reales
Alta Velocidad Transmisión binaria con bajo overhead
Multi‑Usuario Secretos separados, restricciones de IP, registro
Reconexión Automática El cliente se reconecta tras caídas
Instalación en una Línea curl … | sudo bash
Servicio Systemd Se ejecuta en segundo plano y se reinicia al arrancar

Guía de Inicio Rápido

1. Configuración del Servidor (Linux VPS)

# 1. Escoge un dominio que apunte a tu VPS (DuckDNS, No‑IP, etc.)
# 2. Ejecuta el instalador de una sola línea
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
El instalador: * Descarga todos los archivos necesarios. * Solicita tu nombre de dominio. * Genera certificados TLS. * Crea el primer usuario. * Configura el cortafuegos y arranca un servicio systemd.

2. Añadir Usuarios Adicionales

sudo smtp-tunnel-adduser alice   # crea un ZIP con la configuración del cliente
sudo smtp-tunnel-adduser bob
El ZIP contiene client.py, start.sh/.bat, y config.yaml con el secreto del usuario.

3. Configuración del Cliente (Windows/Linux/macOS)

Opción A – Fácil (recomendado) 1. Extrae el archivo alice.zip. 2. Ejecuta start.bat (Windows) o ./start.sh (Linux/macOS).

Opción B – Manual

cd alice
pip install -r requirements.txt
python client.py
El cliente inicia automáticamente un escuchador SOCKS5 en 127.0.0.1:1080.

4. Apuntar tus Aplicaciones al Proxy SOCKS

  • Navegador → http://127.0.0.1:1080 (Firefox, Chrome).
  • A nivel de sistema → Variable de entorno ALL_PROXY=socks5://127.0.0.1:1080.
  • Prueba con curl -x socks5://127.0.0.1:1080 https://ifconfig.me.

Configuración Avanzada

  • Lista Blanca de IP – Edita users.yaml y añade bloques CIDR bajo cada usuario.
  • Registro – Alterna logging: true/false por usuario.
  • Puertos Personalizados – Cambia socks_port o server_port en config.yaml.
  • Actualizaciónsmtp-tunnel-update sincroniza el último código preservando la configuración.

Recomendaciones de Seguridad

  1. Usa un dominio – Los certificados TLS requieren un nombre host; las direcciones IP disparan errores de verificación.
  2. Conserva ca.crt – Distribuye el archivo CA a los clientes para evitar MITM.
  3. Restringe IPs – Lista blanca de IPs cliente conocidas si es factible.
  4. Protege users.yaml – Establece permisos de archivo a 600.
  5. Desactiva el registro para usuarios sensibles – Evita filtración de logs.

Preguntas Frecuentes de Solución de Problemas

Síntoma Causa Probable Solución
Conexión rechazada El servidor no está corriendo sudo systemctl status smtp-tunnel o ps aux | grep server.py
Falta de autenticación Desajuste de secreto Verifica users.yaml; regenera usuario con smtp-tunnel-adduser
IP no en lista blanca La IP actual no está en la lista Actualiza users.yaml o elimina la clave de lista blanca
Verificación de certificado fallida Uso de IP, dominio no coincide Asegúrate de que server_host coincida con el certificado; copia ca.crt

Conclusión

El SMTP Tunnel Proxy demuestra que puedes construir un túnel confiable y de alta velocidad que se hace pasar por tráfico SMTP legítimo. Su implementación en puro Python, el instalador de una sola línea sencillo y el conjunto robusto de funciones lo convierten en una excelente opción para desarrolladores, administradores de sistemas y defensores de la privacidad que buscan evadir redes restrictivas sin una configuración VPN compleja.

Siéntete libre de bifurcar el repositorio, contribuir con mejoras o adaptarlo a tus propias necesidades de evasión de censura. ¡Feliz tunneling!

Artículo original: Ver original

Compartir este artículo