5.3 KiB
Telemt — MTProxy на Rust + Tokio
Решает проблемы раньше, чем другие узнают об их существовании
[!NOTE]
Исправленный 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-трафика (подробнее - FAQ).
Middle-End Pool оптимизирован для высокой производительности.
- Поддержка всех режимов MTProto proxy:
- Classic;
- Secure (префикс
dd); - Fake TLS (префикс
ee+ SNI fronting);
- Защита от replay-атак;
- Маскировка трафика (перенаправление неизвестных подключений на реальные сайты);
- Настраиваемые keepalive, таймауты, IPv6 и «быстрый режим»;
- Корректное завершение работы (Ctrl+C);
- Подробное логирование через
traceиdebug.
Быстрая установка (обновление при повторном запуске)
curl -fsSL https://raw.githubusercontent.com/telemt/telemt/main/install.sh | sh
Подробнее об установке в Quick Start Guide.
Навигация
- 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.
