Домой / Советы / Установка Telegram MTProto Proxy на Ubuntu 18.04 теория и практика

Установка Telegram MTProto Proxy на Ubuntu 18.04 теория и практика


MTProto — протокол разработанный командой Дурова предназначенный для шифрования трафика месенджера Telegram.
MTProto Proxy — промежуточный сервер, выполняющий роль посредника между пользователем и целевым сервером позволяя получать доступ к сервису если по каким-то причинам он недоступен скрывая свой IP адрес и маскируя трафик.
Преимущества MTProto Proxy в сравнении socks:

  • Для подключения вместо логин/пароль, достаточно только пароля
  • Трафик не отличается от обычного HTTPS/TLS
  • Пароль не передается до сервера при подключении
  • Трафик зашифрован
  • Возможна работа через прокси только Telegram’a (другие приложения работать не будут)
  • Promoted каналы

Как видим MTProto Proxy является узкоспециализированным средством, которое позволяет работать только с месенджером.
Огромным недостатком socks прокси является то, что логин и пароль при подключении к прокси передаётся в открытом виде. Данная особенность не даст возможность читать переписку, но понять что конкретный человек использует мессенджер вполне может.
В странах, которые используют DPI (в РФ — СОРМ) для анализа трафика, так и сделано. Это устройство разбирает туннель и смотрит, что же там внутри, если видит запрещенный трафик — блокирует.
Так же при расшаривании socks прокси он может попасть в глобальные списки и злоумышленники получали инструмент для незаконных действий. В таком случае при розыскных мероприятиях вопросы будут к держателю прокси сервера, т.к. злоумышленник использовал его в качестве промежуточного узла.

Promoted канал — канал, на который вы автоматически будете подписаны при подключении к прокси, он будет закреплен наверху списка и его нельзя удалить пока вы не отключитесь от данного прокси. Это дает возможность монетизировать трафик канала, тем самым поощряя держателя прокси.

Прочитав теорию, можно приступать:
Для установки нам понадобится общий набор инструментов для сборки из исходного кода и пакеты разработки для openssl и zlib.

apt install git curl build-essential libssl-dev zlib1g-dev

Клонируем из репы на GitHub и компилируем:

cd ~
git clone https://github.com/TelegramMessenger/MTProxy.git
cd MTProxy/
make

Раскидываем файлы по своим местам:

cp objs/bin/mtproto-proxy /usr/bin/
chmod 777 /usr/bin/mtproto-proxy
cd /etc
mkdir mtproto-proxy
cd mtproto-proxy
//Получить секретный файл, используемый для подключения к серверам телеграмм
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
//Получить текущую конфигурацию. Может меняться и требует обновления
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

Создаем секрет, который будет использоваться пользователями для подключения к вашему прокси.

head -c 16 /dev/urandom | xxd -ps

Создаем конфигурационный файл:

sudo nano /etc/systemd/system/mtproto-proxy.service

Копируем туда текст с содержимым:

[Unit]
Description=MTProxy
After=network.target
[Service]
ExecStart=/usr/bin/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --aes-pwd /etc/mtproto-proxy/proxy-secret /etc/mtproto-proxy/proxy-multi.conf -M 1
Restart=on-failure
[Install]
WantedBy=multi-user.target

где:
443 — порт, используемый клиентами для подключения к прокси.
8888 — локальный порт для получения статистики. Получить ее можно только локально через loopback. Пример: wget localhost:8888/stats
<secret> — идентификатор полученный при генерировании его ранее. На сервере может быть несколько секретов. Пример: -S <secret1> -S <secret2>
Если сервер расположен за NAT, требуется добавить параметр —nat-info <arg> <Внутренний адрес>:<Внешний адрес>. Не забываем покинуть порты.
Другие команды можно посмотреть после старта сервиса командой: mtproto-proxy -h

Перезагружаем systemd для поиска новых или измененных юнитов:

systemctl daemon-reload

Запускаем службу с добавлением ее в автозагрузку:

systemctl restart mtproto-proxy
systemctl enable mtproto-proxy

Все — готово. Для того что бы пользователи смогли подключиться к прокси — генерируем ссылку:

tg://proxy?server=<IP сервера>&port=<ПОРТ>&secret=<СЕКРЕТ>

Для включения рекламы promoted канала требуется написать этому боту @MTProxybot и зарегистрировав ваш сервер. После этого он вам выдаст TAG — персональный идентификатор прокси для отслеживании статистики и установки рекламы каналов. Его нужно вписать в mtproto-proxy.service, добавлением параметра: -P <TAG>. Перезагружаем прокси (systemctl restart mtproto-proxy) и можно добавлять канал для рекламы средствами бота. На этом установка является завершенной.

ВАЖНО: Использование прокси в некоторых странах может нарушать законодательство. Ознакомьтесь с законами страны прежде чем устанавливать ПО.
Все операции описанные в заметке производились на тестовом стенде, и после написания были удалены.

Проверьте также

Доступ к Windows RDP по E-mail

Сразу оговоримся: с программированием не знаком и не считаю себя скриптером или кодером. То, что …

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *