Zurück zur Startseite

MTProto auf Port 443 mit nginx SNI-Routing

Der Artikel beschreibt die Bereitstellung eines MTProto Telegram-Proxys auf einem einzigen 443-Port mit nginx Stream und SNI-Routing. Vollständige Konfiguration und Architektur des Control-Panels mit Agent. Das Schema gewährleistet Widerstandsfähigkeit gegen DPI-Blockaden.

MTProto-Proxy: SNI-Routing auf einem Port
Advertisement 728x90

MTProto-Proxy auf einem einzelnen Port 443 mit SNI-Routing

Entwickler von MTProto-Proxys für Telegram sehen sich oft mit schnellen IP- und Portsperren konfrontiert. Die Lösung besteht darin, mehrere Proxys auf einem einzelnen Port 443 mithilfe von nginx Stream und SNI-basiertem Routing zu organisieren. Dies tarnt den Datenverkehr als beliebte Domains und skaliert das Netzwerk ohne IP-Änderungen.

Der Ansatz gliedert sich in ein Control Panel und einen Server-Agent. Das Panel generiert Konfigurationen, und der Agent stellt Docker-Container bereit. Jeder Proxy erhält eine eindeutige SNI aus einem Pool von Domains (z. B. wikipedia.org, netflix.com). Nginx analysiert die SNI und leitet die TLS-Verbindung zum entsprechenden Container weiter.

Vorteile dieses Schemas:

Google AdInline article slot
  • Alle Proxys auf dem Standard-HTTPS-Port
  • Tarnung als legitimer Datenverkehr
  • Skalierung auf mehrere Container ohne Portänderungen
  • Automatisierte Verwaltung über eine Weboberfläche

Konfiguration von nginx für Stream-Routing

Das Schlüsselelement ist das Modul ssl_preread im nginx-Stream-Block. Es extrahiert die SNI ohne TLS-Entschlüsselung, was null Latenz und volle Transparenz für den Client gewährleistet.

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;
    }

}

Wichtige Parameter:

  • resolver 127.0.0.11 — DNS im Docker-Netzwerk
  • worker_connections 4096 — hohe Grenze für Parallelität
  • Timeouts für Mobilverbindungen optimiert
  • SNI-Protokollierung zur Fehlerbehebung bei Sperren

Architektur von Control Panel und Agent

Das Control Panel (Node.js/Go) arbeitet unabhängig vom Proxy-Server. Der Agent auf dem Server empfängt API-Befehle und verwaltet Docker-Container basierend auf dem telemt/telemt-Image.

Google AdInline article slot

Proxy-Erstellungsprozess:

  • Das Panel generiert einen geheimen Schlüssel und wählt eine SNI aus dem Pool
  • Sendet die Konfiguration an den Agent
  • Der Agent führt docker run mit eindeutigen Volumes aus
  • Nginx wird mit einem neuen Map-Block neu geladen

Der Domain-Pool wird manuell aktualisiert, wobei gesperrte CDNs ausgeschlossen werden. Jede Domain wird streng von einem Proxy verwendet.

Skalierung und Widerstandsfähigkeit gegen Sperren

Tests zeigten, dass Proxys auf nicht standardmäßigen Ports (4443+) innerhalb von 3-4 Tagen mit 15-20 Nutzern gesperrt werden. Das Schema mit Port 443 und SNI-Routing gewährleistet eine Lebensdauer von >7 Tagen mit 50+ Geräten.

Google AdInline article slot

Betriebliche Empfehlungen:

  • Verwenden Sie VPS in Rechtsgebieten ohne DPI (z. B. Deutschland, Niederlande)
  • Rotieren Sie SNIs alle 7-10 Tage
  • Überwachen Sie nginx-Protokolle auf Sperrmuster
  • Begrenzen Sie Nutzer pro Proxy (max. 20-30)

Für Fehlertoleranz stellen Sie Agents auf mehreren VPS mit einer einzigen Panel-Domain bereit.

Wichtige Punkte

  • Einzelner Port 443: Tarnt MTProto als HTTPS-Datenverkehr
  • SNI-Routing: Ermöglicht 10+ Proxys auf einer IP ohne Konflikte
  • Automatisierung: Panel + Agent minimieren manuelle Arbeit
  • Widerstandsfähigkeit: >7 Tage Lebensdauer mit 50+ Verbindungen
  • Skalierbarkeit: Einfaches Hinzufügen neuer Knoten

— Editorial Team

Advertisement 728x90

Weiterlesen