Официальный MTProxy от Telegram
У Telegram есть собственный сервер прокси с открытым кодом — MTProxy на C. Он задал протокол и рекламный тег, но с тех пор сообщество ушло вперёд: официальная реализация слабо поддерживает FakeTLS и требует ручного обновления списков. Серверы в таблице выше — на современном коде.
Ниже — как поднять официальный, чем он ограничен и когда он всё же оправдан.
Что внутри
Исходники в репозитории 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 с официальным?
Да, в актуальной сборке, но без проксирования легенды.