Zpět na domů

MTProto na portu 443 s nginx SNI směrováním

Článek popisuje nasazení MTProto proxy Telegram na jediném portu 443 s použitím nginx stream a směrování podle SNI. Je poskytnuta kompletní konfigurace a architektura panelu správy s agentem. Schéma zajišťuje odolnost vůči DPI blokacím.

MTProto proxy: směrování podle SNI na jednom portu
Advertisement 728x90

MTProxy na jediném portu 443 s routováním podle SNI

Vývojáři MTProxy pro Telegram se často potýkají s rychlým blokováním podle IP adres a portů. Řešením je organizace více proxy na jednom portu 443 s využitím nginx stream a routování podle SNI. To umožňuje maskovat provoz pod oblíbené domény a škálovat síť bez změny IP.

Přístup je rozdělen na řídicí panel a agenta na serveru. Panel generuje konfigurace, agent nasazuje Docker kontejnery. Každá proxy získá jedinečné SNI z fondu domén (wikipedia.org, netflix.com atd.). Nginx analyzuje SNI a přesměruje TLS spojení do příslušného kontejneru.

Výhody schématu:

Google AdInline article slot
  • Všechny proxy na standardním HTTPS portu
  • Maskování pod legitimní provoz
  • Škálování na více kontejnerů bez změny portů
  • Automatická správa přes webové rozhraní

Konfigurace nginx pro stream routování

Klíčový prvek je modul ssl_preread v nginx stream bloku. Ten extrahuje SNI bez dešifrování TLS, což zajišťuje nulové zpoždění a plnou transparentnost pro klienta.

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

}

Důležité parametry:

  • resolver 127.0.0.11 — DNS uvnitř Docker sítě
  • worker_connections 4096 — vysoký limit pro souběžnost
  • Časové limity optimalizované pro mobilní připojení
  • Logování SNI pro ladění blokování

Architektura panelu a agenta

Řídicí panel (Node.js/Go) pracuje nezávisle na proxy serveru. Agent na serveru přijímá API příkazy a spravuje Docker kontejnery na základě image telemt/telemt.

Google AdInline article slot

Proces vytvoření proxy:

  • Panel vygeneruje tajný klíč a vybere SNI z fondu
  • Odešle konfiguraci agentovi
  • Agent spustí docker run s jedinečnými volume
  • Nginx se reload'uje s novým map blokem

Fond domén se aktualizuje ručně, s vyloučením blokovaných CDN. Každá doména je použita striktně jednou proxy.

Škálování a odolnost vůči blokování

Testování ukázalo, že proxy na nestandardních portech (4443+) jsou blokovány za 3-4 dny při 15-20 uživatelích. Schéma s portem 443 a SNI routováním zajišťuje životnost >7 dní při 50+ zařízeních.

Google AdInline article slot

Doporučení pro provoz:

  • Používejte VDS v jurisdikcích bez DPI (Německo, Nizozemsko)
  • Rotace SNI každých 7-10 dní
  • Monitorování logů nginx pro vzorce blokování
  • Omezení uživatelů na proxy (max 20-30)

Pro odolnost proti výpadkům nasazujte agenty na více VDS s jednou doménou panelu.

Co je důležité

  • Jediný port 443: Maskuje MTProxy pod HTTPS provoz
  • SNI routování: Umožňuje 10+ proxy na jedné IP bez konfliktů
  • Automatizace: Panel + agent minimalizují ruční práci
  • Odolnost: >7 dní životnosti při 50+ připojeních
  • Škálovatelnost: Snadné přidávání nových uzlů

— Editorial Team

Advertisement 728x90

Číst dál