Сервера MTProto → Официальный MTProxy от Telegram

Официальный MTProxy от Telegram

У Telegram есть собственный сервер прокси с открытым кодом — MTProxy на C. Он задал протокол и рекламный тег, но с тех пор сообщество ушло вперёд: официальная реализация слабо поддерживает FakeTLS и требует ручного обновления списков. Серверы в таблице выше — на современном коде.

Подключить srv1Подключить srv2Подключить srv3Все сервера

Ниже — как поднять официальный, чем он ограничен и когда он всё же оправдан.

Что внутри

Исходники в репозитории TelegramMessenger/MTProxy. Сборка make, запуск с параметрами: порт для клиентов, порт статистики, файл proxy-secret и список серверов proxy-multi.conf, которые нужно скачивать с core.telegram.org и обновлять. Секрет клиентов генерируется отдельно.

Архитектура рассчитана на большие нагрузки — это то, что Telegram сам использовал в 2018 году.

Рекламный тег

Именно здесь появился параметр -P с тегом от @MTProxybot: бот выдаёт тег, вы указываете его при запуске, и у пользователей появляется спонсорский канал. Это официальный, штатный механизм, который затем скопировали остальные реализации.

В боте видна статистика по тегу — число подключений и география.

Ограничения

FakeTLS появился в официальной реализации позже и без проксирования чужих рукопожатий на домен-легенду: сканер, постучавшийся без секрета, получает обрыв, а не сайт. Списки серверов Telegram надо обновлять по расписанию. Обновления кода редкие.

Для персонального сервера это лишняя работа по сравнению с однобинарными альтернативами.

Когда официальный оправдан

Если вам нужен эталон протокола, максимальная пропускная способность на большом железе и рекламный тег в его исходном виде. Для всего остального — mtg или telemt.

Секреты совместимы: перейти с официального на другую реализацию можно без смены ссылок у пользователей, если сохранить ключ и домен.

Запуск по шагам

Клонируйте репозиторий, соберите make, скачайте proxy-secret и proxy-multi.conf с core.telegram.org, сгенерируйте 16 байт секрета в hex. Запуск: бинарник с параметрами -u (пользователь), -p (порт статистики, только локально), -H (порт клиентов, 443), -S (ваш секрет), --aes-pwd (файл proxy-secret), список серверов последним аргументом, при желании -P с рекламным тегом.

Настройте автозапуск через systemd и cron на обновление proxy-multi.conf раз в сутки — без свежего списка прокси со временем теряет часть дата-центров. Проверьте с мобильного интернета, что Telegram подключается и медиа грузятся; затем закройте порт статистики снаружи.

Миграция на другую реализацию

Секрет и домен FakeTLS переносятся один в один: запишите их из параметров запуска, поднимите новую реализацию с теми же значениями на том же порту и остановите старую. Ссылки у пользователей продолжат работать без изменений, а рекламный тег в новой реализации укажите тем же значением из @MTProxybot.

Вопросы и ответы

Официальный MTProxy ещё поддерживается?

Репозиторий доступен, но обновления редки.

Есть ли официальный образ Docker?

Есть сторонние образы на его основе; официального нет.

Работают ли секреты ee с официальным?

Да, в актуальной сборке, но без проксирования легенды.

Читайте также

← Сервера MTProto