Свой MTProto-прокси: как это устроено
Публичные прокси удобны, но живут недолго. Собственный сервер — способ получить стабильный доступ для себя и близких. Здесь — что для этого нужно и как всё устроено, без пошаговых команд.
Что понадобится
- Сервер (VPS) в стране, где Telegram не ограничен, с публичным IP. Хватит самого дешёвого тарифа.
- Программа-прокси с поддержкой FakeTLS: mtprotoproxy (Python), mtg (Go), telemt (Rust) или официальный MTProxy с патчами. Обзор — «Что такое MTProxy».
- Домен для SNI — не свой, а популярный, под который будет маскироваться соединение. См. «SNI в FakeTLS».
- Порт 443, свободный на сервере.
Как рождается секрет
Секрет — 16 случайных байт, которые вы генерируете сами и прописываете в конфигурации. Сервер выводит из него ключи, а клиентам вы отдаёте тот же секрет с префиксом ee и hex-записью домена. Подробно о структуре — «Секрет MTProto». Можно завести несколько секретов — по одному на каждую группу пользователей, чтобы отзывать доступ выборочно.
Регистрация у @MTProxybot
Необязательный шаг: бот выдаёт тег, с которым сервер сможет показывать спонсорский канал, и открывает статистику по подключениям. Для личного прокси это не нужно; для публичного — способ окупить хостинг. Механика описана в статье «Спонсорский канал».
Что происходит после запуска
Сервер слушает 443, на каждое соединение проверяет TLS ClientHello с правильным SNI и подписью по секрету, отвечает поддельным ServerHello и дальше пересылает пакеты в дата-центр Telegram. Всё, что не прошло проверку, получает либо тишину, либо переадресацию на настоящий сайт из SNI — так сканеры не отличают прокси от обычного веб-сервера.
Сколько живёт свой прокси
Дольше публичного: трафик к нему мал и не привлекает внимания. Но если адресом делятся широко, его ждёт та же судьба. Держите его для узкого круга, а при блокировке смените IP сервера — секрет и ссылку менять не придётся, если сервер указан по доменному имени (см. «Сервер и порт»).