mirror of https://github.com/telemt/telemt.git
6.3 KiB
6.3 KiB
Telemt — MTProxy на Rust + Tokio
Решает проблемы раньше, чем другие узнают об их существовании
[!Примечание]
Исправленный TLS ClientHello доступен в Telegram Desktop начиная с версии 6.7.2: для работы с EE-MTProxy обновите клиент.
Исправленный TLS ClientHello для Telegram Android начиная с версии 12.6.4; официальный релиз для iOS находится в процессе разработки.
Telemt — это быстрый, безопасный и функциональный сервер, написанный на Rust. Он полностью реализует официальный алгоритм прокси Telegram и добавляет множество улучшений для продакшена:
- ME Pool + Reader/Writer + Registry + Refill + Adaptive Floor + Trio-State + жизненный цикл генераций;
- Полноценный API с управлением;
- Защита от повторных атак (Anti-Replay on Sliding Window);
- Метрики в формате Prometheus;
- TLS-fronting и TCP-splicing для маскировки от DPI.
Особенности
⚓ Реализация TLS-fronting максимально приближена к поведению реального HTTPS-трафика.
⚓ Middle-End Pool оптимизирован для высокой производительности.
- Поддержка всех режимов MTProto proxy:
- Classic;
- Secure (префикс
dd); - Fake TLS (префикс
ee+ SNI fronting);
- Защита от replay-атак;
- Маскировка трафика (перенаправление неизвестных подключений на реальные сайты);
- Настраиваемые keepalive, таймауты, IPv6 и «быстрый режим»;
- Корректное завершение работы (Ctrl+C);
- Подробное логирование через
traceиdebug.
Навигация
- FAQ
- Архитектура
- Быстрый старт
- Параметры конфигурационного файла
- Сборка
- Почему Rust?
- Известные проблемы
- Планы
Быстрый старт
FAQ
Сборка
# Клонируйте репозиторий
git clone https://github.com/telemt/telemt
# Смените каталог на telemt
cd telemt
# Начните процесс сборки
cargo build --release
# Устройства с небольшим объёмом оперативной памяти (1 ГБ, например NanoPi Neo3 / Raspberry Pi Zero 2):
# используется параметр lto = «thin» для уменьшения пикового потребления памяти.
# Если ваш пользовательский набор инструментов переопределяет профили, не используйте Fat LTO.
# Перейдите в каталог /bin
mv ./target/release/telemt /bin
# Сделайте файл исполняемым
chmod +x /bin/telemt
# Запустите!
telemt config.toml
Устройства с малым объемом RAM
Для устройств с ~1 ГБ RAM (например Raspberry Pi):
- используется облегчённая оптимизация линковщика (thin LTO);
- не рекомендуется включать fat LTO.
OpenBSD
- Руководство по сборке и настройке на английском языке OpenBSD Guide (EN);
- Пример rc.d скрипта: contrib/openbsd/telemt.rcd;
- Поддержка sandbox с
pledge(2)иunveil(2)пока не реализована.
Почему Rust?
- Надёжность для долгоживущих процессов;
- Детерминированное управление ресурсами (RAII);
- Отсутствие сборщика мусора;
- Безопасность памяти;
- Асинхронная архитектура Tokio.
Известные проблемы
- ✅ Поддержка SOCKS5 как upstream -> добавлен Upstream Management;
- ✅ Проблема зависания загрузки медиа на iOS.
Планы
- Публичный IP в ссылках;
- Перезагрузка конфигурации на лету;
- Привязка к устройству или IP для входящих и исходящих соединений;
- Поддержка рекламных тегов по SNI / секретному ключу;
- Улучшенная обработка ошибок;
- Zero-copy оптимизации;
- Проверка состояния дата-центров;
- Отсутствие глобального изменяемого состояния;
- Изоляция клиентов и справедливое распределение трафика;
- «Политика секретов» — маршрутизация по SNI / секрету;
- Балансировщик с несколькими источниками и отработка отказов;
- Строгие FSM для handshake;
- Улучшенная защита от replay-атак;
- Веб-интерфейс: статистика, состояние работоспособности, задержка, пользовательский опыт...
