mirror of
https://github.com/by-sonic/tglock.git
synced 2026-08-02 08:35:51 +03:00
62 lines
3.3 KiB
Markdown
62 lines
3.3 KiB
Markdown
# 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-соединений строится список маршрутов:
|
||
|
||
1. сохранённый успешный маршрут;
|
||
2. точный Telegram IP с `kwsN` или `kwsN-1` в TLS SNI и WebSocket Host;
|
||
3. дополнительный Telegram IP, если он определён;
|
||
4. системный DNS;
|
||
5. явно настроенный пользователем 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 на:
|
||
|
||
```text
|
||
/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-соединений будут добавлены после измерения,
|
||
что они не создают лишнюю нагрузку и не ухудшают стабильность.
|