3.3 KiB
TGLock 2.0 architecture
Local protocols
Один TCP-порт автоматически принимает два типа клиентов:
- MTProto proxy с постоянным 16-байтовым secret — основной режим;
- SOCKS5 без авторизации — режим совместимости.
MTProto init проверяется по secret и transport tag. Из него извлекаются DC, признак media-соединения и тип транспорта. Для upstream создаётся новый стандартный obfuscated2 init, а последующий поток пере-шифровывается между локальным secret и Telegram.
Transport cascade
Для каждого DC и отдельно для media-соединений строится список маршрутов:
- сохранённый успешный маршрут;
- точный Telegram IP с
kwsNилиkwsN-1в TLS SNI и WebSocket Host; - дополнительный Telegram IP, если он определён;
- системный DNS;
- явно настроенный пользователем Cloudflare Worker.
Поддерживаются DC1–5 и media/CDN DC203. DC203 использует WebSocket-host DC2, но подключается к собственному IP.
После ошибки маршрут получает exponential cooldown от 30 секунд до 30 минут. Успешный маршрут становится первым для следующего соединения того же DC и типа трафика.
TLS policy
Проверка сертификатов и hostname никогда не отключается. При подключении к
заданному Telegram IP TCP destination отделён от URI host: TLS продолжает
проверять сертификат настоящего kws*.web.telegram.org.
Cloudflare Worker принимается только как пользовательская настройка. TGLock не загружает и не скрывает публичные списки чужих доменов.
Cloudflare Worker contract
Worker должен принимать WebSocket на:
/apiws?dst=<telegram-ip>&dc=<dc-id>
и проксировать бинарные frames в TCP <telegram-ip>:443. Рекомендуется
добавить собственную авторизацию до стабильного релиза; поэтому Worker
остаётся расширенной опцией alpha-версии.
Current limitations
- SNI camouflage не включена: небезопасное отключение hostname verification из референсной реализации не переносится.
- Голосовые звонки по UDP не поддерживаются.
- Работоспособность медиа зависит от конкретного DC аккаунта и доступности Telegram/Cloudflare у провайдера.
- Пулы заранее открытых WebSocket-соединений будут добавлены после измерения, что они не создают лишнюю нагрузку и не ухудшают стабильность.