Еще один способ в копилку путей обхода блокировки Telegram.
Еще несколько недель назад в тестовых версиях Telegram помимо привычных SOCKS5 и HTTP прокси появился протокол MTProto. Ранее не было информации о публичных серверах, которые предоставляют возможность подключиться к ним по новому протоколу, но команда MadelineProto представила решение для быстрого создания собственного MTProto сервера.
На данный момент, новый протокол доступен только в beta и alpha версиях приложений. Для подключения необходимо выбрать протокол MTPROTO в настройках и указать параметры тестового сервера от разработчиков MadelineProto.
Host: 163.172.167.189
Port: 6666
Secret: 4b3e3c2f99046f92a61bab6775848577
Ссылка для автоматического применения настроек.
Примечание: сервер может быть недоступен из-за большого наплыва подключений. Если тестовый сервер не работает, попробуйте один из вариантов, предложенных в Telegram канале @MTProtoProxies.
Любой пользователь linux может легко развернуть свой собственный MTProto сервер. Для этого нужно выполнить несколько команд:
Загружаем исполнительный файл сервера
wget https://phar.madelineproto.xyz/mtproxyd
Даем права на исполнение
chmod +x mtproxyd
Запускаем сервер
./mtproxyd pony 6666
Вместо pony можно указать любую строку. Этот параметр используется для генерации секретного ключа с помощью алгоритма md5.
Вместо 6666 можно указать любой порт, на ваше усмотрение.
После этого, на экране будет выведен секретный ключ, который вы укажете при подключении.
Преимущества MTProto перед SOCKS5 заключаются в трудности блокировки его провайдерами и скоростью работы. Решение от MadelineProto не является официальным, предлагаю использовать его только для тестирования и дождаться полноценной реализации MTProto сервера от команды Telegram.
Короче. Раз уж это что-то делает на TJ, объясню что сейчас делает команда Telegram.
В общем если кто не знал сервера Telegram представляют из себя две сущности:
1. MTProto-сервера, к ним коннектится ваш телефон и именно их Дуров разворачивает тысячами в облаках Google, Amazon, Digital Ocean, etc.
2. Telegram-сервера. Собственно это сами сервера Telegram, где хранятся наши сообщения, картинки и всё остальное. Именно они последнее время и падают.
Что происходит сейчас: Команда Дурова внесла недавно в TL-схему (эта схема описывает структуру протокола MTProto) небольшое интересное изменение: в тело структуры dcOptions они добавили поле secret.
Выходит интересная вещь. Новый тип прокси и вовсе не прокси. Это MTProto-сервер, который отдали на откуп пользователям, но с одной интересной деталью: благодаря изменениям протокола и тому полю secret они сделали протокол неуязвимым для DPI провайдеров. Насколько я понял они маскируются под TLS (читай под HTTPS-трафик).
В итоге заблокировать Телеграм можно будет только двумя способами: по старинке вручную найти ссылку на новый MTProto-сервер и забанить его IP (это актуально для публичных прокси, их быстро найдут и переблочат, так что тут ничего нового) или полностью закрыть HTTPS-трафик (то есть практически отключить интернет).
Подытожив: текущие SOCKS-прокси имеют фатальный недостаток: при подключении они светят заголовок и любой активный DPI провайдера может классифицировать это как прокси, прикрыв лавочку. Было бы желание как, говорится. А оно я думаю у РКН ещё как будет.
Изменения же в протоколе MTProto не позволят отличить трафик Телеграма от обычного HTTPS-трафика.
Сейчас без прокси такая схема для всех клиентов:
Клиент <> МТПрото Сервер <> Телеграм Сервер
В случае использования прокси:
Клиент <> Прокси Сервер <> МТПрото Сервер <> Телеграм Сервер
Будет:
Клиент <> МТПрото Сервер с какой-то солью новой <> Телеграм Сервер
Теперь насчет самой статьи и собственно поделки MadelineProto:
1. Это велосипед, написанный за несколько дней чистым реверс-инженирингом.
2. Автор достаточно одиозный персонаж, его код зачастую диковат, про то что он пишет всё на PHP я молчу (писать реализацию MTProto на PHP это примерно как вилкой суп есть, имхо).
3. Рекомендую подождать анонса самого Telegram, скорее всего они представят свою версию MTProto-сервера, который любой желающий сможет развернуть с пол пинка.
Добавлю ещё чуток:
Из-за того что с такой схемой выходит на одну сущность Telegram будет работать ГОРАЗДО быстрее. Не будет дурацкой надписи Connecting to Proxy... и главное звонки будут работать всегда (увы, сейчас 90% прокси не настроены на команду UDP ASSOCIATE без которой звонки работать не будут)
На днях по приколу писала DPI, определяющий пакеты Telegram по содержимому:) Обфускация "anti-DPI" там простая. Генерят на клиенте случайный 32-байтовый ключ и 16-байтовый IV, ими шифруют пакет с AES CTR и отправляют. При этом сами ключ и IV отправляются перед зашифрованной нагрузкой.
В итоге, если вы провайдер, вам нужно ВСЕГО ЛИШЬ* брать от каждого исходящего пакета 8-40 байты (ключ) и 40-56 байты (IV), расшифровывать содержимое (64-... байты). В расшифрованном содержимом уже вполне стандартный mtproto-формат, где первые 8 байт — сигнатура авторизационного ключа. Поймали несколько пакетов, где первые 8 байт после расшифровки совпадают — смело вносим конечный адрес в реестр запрещённых ресурсов.
*насчёт ВСЕГО ЛИШЬ и почему я вообще об этом открыто говорю, не боясь дать подсказку РКН: сама идея слишком простая, глупая, а защиты-то по сути никакой, но вот только ни у одного провайдера не хватит мощностей __каждый__ пакет расшифровывать с AES-256 и какие-то проверки проводить на предмет наличия там Telegram.
Спасибо за объяснение.
Что касается php, если мне не изменяет память, то серверная часть телеги на php тоже написана.
Ну и я не знаю, чем вдруг современный php хуже того же питона, и почему на нем так плохо писать. По мне, так это какие-то древние стереотипы, которые не совсем понятно, почему до сих пор живы. Сам пишу скрипты для личного пользования на php, потому что синтаксис питона меня несколько раздражает, никаких проблем в этом не вижу.
Спасибо большое за понятное пояснение. Немного отредактировал статью.
Комментарий недоступен
Комментарий недоступен
Даем права на исполнение
Запускаем
Наконец-то твой скептицизм к месту, дед
Комментарий недоступен
Где-нибудь уже есть сравнение с SOCKS5?
Эти вещи нельзя сравнить. Это не прокси-сервер, которым можно проксировать что угодно. Эта штука работает только с Telegram.
По ощущениям, картинки грузятся быстрее.
Комментарий недоступен
Возможно, вот это https://github.com/cjongseok/mtproto
Они в самом файле mtproxyd, это php скрипт.
"А зачем вам сорцы, вы хотите наш сервер взломать?"
Дубликат сообщения.
Ссылку на гитхаб или зассал?
Объясните идиоту, что на ubuntu 16.04 server, что на CentOS7 запускаю скрипт и выдает
/usr/bin/env: php: No such file or directory
Уже и создавал директорию, права вроде есть. Что делаю не так?
У тебя php не установлен. Установи сначала его
Еще забавный случай. Сервер один, но на SOCKS5 пинг меньше чем при использовании MTProto.
Скорее всего из-за текущей неофициальной реализации mtproto proxy. Мож написана неоптимально. Думаю в официальном релизе пинг будет меньше.
Комментарий недоступен
Папн
Комментарий недоступен
Теоретически, тот скрипт, который в статье можно попробовать запустить и на Винде, он на php написан