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:
- 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 Dockerworker_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.
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 runcon 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.
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
Aún no hay comentarios.