Volver al inicio

MTProto en puerto 443 con enrutamiento SNI de nginx

El artículo describe el despliegue de proxy MTProto de Telegram en un único puerto 443 usando stream de nginx y enrutamiento SNI. Configuración completa y arquitectura de panel de control con agente proporcionado. El esquema asegura resistencia a bloqueos DPI.

Proxy MTProto: enrutamiento SNI en un puerto
Advertisement 728x90

Proxy MTProto en un solo puerto 443 con enrutamiento SNI

Los desarrolladores de proxies MTProto para Telegram suelen enfrentar bloqueos rápidos de IP y puertos. La solución es organizar múltiples proxies en un solo puerto 443 usando nginx stream y enrutamiento basado en SNI. Esto enmascara el tráfico como dominios populares y escala la red sin cambiar las IP.

El enfoque se divide en un panel de control y un agente servidor. El panel genera configuraciones, y el agente despliega contenedores Docker. Cada proxy obtiene un SNI único de un grupo de dominios (por ejemplo, wikipedia.org, netflix.com). Nginx analiza el SNI y redirige la conexión TLS al contenedor correspondiente.

Ventajas de este esquema:

Google AdInline article slot
  • Todos los proxies en el puerto HTTPS estándar
  • Enmascaramiento como tráfico legítimo
  • Escalabilidad a múltiples contenedores sin cambiar puertos
  • Gestión automatizada mediante una interfaz web

Configuración de nginx para enrutamiento stream

El elemento clave es el módulo ssl_preread en el bloque stream de nginx. Extrae el SNI sin descifrar TLS, garantizando latencia cero y total transparencia para el cliente.

user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 4096;
}

stream {
    resolver 127.0.0.11 valid=10s;

    log_format proxy '$remote_addr [$time_local] $ssl_preread_server_name $status';
    access_log /dev/stdout proxy;

    map $ssl_preread_server_name $backend {
        en.wikipedia.org mtproto-proxy-3d9d46ba:443;
        netflix.com mtproto-proxy-475ecb29:443;
        assets.msn.com mtproto-proxy-3f8875a4:443;
        default mtproto-proxy-3d9d46ba:443;
    }

    server {
        listen 443;
        proxy_pass $backend;
        ssl_preread on;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
    }

}

Parámetros importantes:

  • resolver 127.0.0.11 — DNS dentro de la red Docker
  • worker_connections 4096 — límite alto para concurrencia
  • Timeouts optimizados para conexiones móviles
  • Registro de SNI para depurar bloqueos

Arquitectura del panel de control y agente

El panel de control (Node.js/Go) opera independientemente del servidor proxy. El agente en el servidor recibe comandos API y gestiona contenedores Docker basados en la imagen telemt/telemt.

Google AdInline article slot

Proceso de creación del proxy:

  • El panel genera una clave secreta y selecciona un SNI del grupo
  • Envía la configuración al agente
  • El agente ejecuta docker run con volúmenes únicos
  • Nginx se recarga con un nuevo bloque map

El grupo de dominios se actualiza manualmente, excluyendo CDNs bloqueados. Cada dominio se usa estrictamente por un proxy.

Escalabilidad y resistencia al bloqueo

Las pruebas mostraron que los proxies en puertos no estándar (4443+) se bloquean en 3-4 días con 15-20 usuarios. El esquema con puerto 443 y enrutamiento SNI garantiza una vida útil de >7 días con 50+ dispositivos.

Google AdInline article slot

Recomendaciones operativas:

  • Usar VPS en jurisdicciones sin DPI (por ejemplo, Alemania, Países Bajos)
  • Rotar SNIs cada 7-10 días
  • Monitorear registros de nginx para patrones de bloqueo
  • Limitar usuarios por proxy (máx. 20-30)

Para tolerancia a fallos, despliega agentes en múltiples VPS con un solo dominio de panel.

Puntos clave

  • Puerto único 443: Enmascara MTProto como tráfico HTTPS
  • Enrutamiento SNI: Permite 10+ proxies en una IP sin conflictos
  • Automatización: Panel + agente minimizan el trabajo manual
  • Resistencia: Vida útil >7 días con 50+ conexiones
  • Escalabilidad: Fácil agregar nuevos nodos

— Editorial Team

Advertisement 728x90

Leer después