Перейти к содержанию

MTProxy на Ubuntu 24.04: установка и настройка

В этой статье рассмотрим установку и настройку MTProxy на Ubuntu 24.04.

MTProxy — официальный прокси-сервер Telegram. Он разработан командой Telegram, работает только с клиентами Telegram и не заменяет VPN.

В статье используется режим Fake TLS, который позволяет маскировать соединение под обычный HTTPS.

Инструкция проверена на Ubuntu 24.04.

Что получится в результате

После выполнения всех шагов будут настроены:

  • MTProxy;
  • режим Fake TLS;
  • Telegram Sponsored Channel;
  • автоматический запуск службы;
  • работа через выбранный TCP-порт.

1. Подготавливаем сервер

В примерах используется сервер с адресом 123.45.67.89. Замените его на IP-адрес своего сервера.

Подключаемся:

ssh root@123.45.67.89

Создаём пользователя:

adduser deployuser

Добавляем его в группу sudo:

usermod -aG sudo deployuser

Настраиваем вход по SSH-ключу.

На локальном компьютере создаём ключ:

ssh-keygen

Копируем его на сервер:

ssh-copy-id deployuser@123.45.67.89

Проверяем вход без пароля:

ssh deployuser@123.45.67.89

Обновляем систему:

sudo apt update && sudo apt full-upgrade -y

Перезагружаем сервер:

sudo reboot

Дальнейшую настройку будем выполнять уже под пользователем deployuser.

Чтобы запретить вход по SSH под пользователем root, открываем файл:

sudo nano /etc/ssh/sshd_config

Изменяем параметры:

PermitRootLogin no
PasswordAuthentication no

Перезапускаем SSH:

sudo systemctl restart ssh

Перед отключением входа по паролю обязательно убедитесь, что вход по SSH-ключу работает.


2. Устанавливаем MTProxy

Подключаемся к серверу:

ssh deployuser@123.45.67.89
sudo -i

Устанавливаем необходимые пакеты:

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

Загружаем исходный код MTProxy:

cd /opt
git clone https://github.com/TelegramMessenger/MTProxy.git
mkdir -p /opt/MTProxy/data
chmod 755 /opt/MTProxy
cd MTProxy

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

Собираем MTProxy:

make

После сборки исполняемый файл должен находиться здесь:

/opt/MTProxy/objs/bin/mtproto-proxy

3. Получаем параметры Telegram

Скачиваем служебные файлы Telegram:

curl -s https://core.telegram.org/getProxySecret -o proxy-secret
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

Назначаем владельца каталога:

chown -R nobody:nogroup /opt/MTProxy

4. Создаём секрет сервера

Генерируем секрет:

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

Будет получена строка длиной 32 шестнадцатеричных символа.

Например:

a1b2c3d4e5f60718293a4b5c6d7e8f90

Сохраните её. Она понадобится при запуске MTProxy и регистрации прокси в @MTProxyBot.


5. Выбираем домен для Fake TLS

Получаем шестнадцатеричное представление доменного имени:

echo -n "example.com" | xxd -ps

Например:

6578616d706c652e636f6d

Для Fake TLS рекомендуется использовать существующий сайт, доступный по HTTPS.

Не рекомендуется использовать домены Telegram, Google или Cloudflare без понимания возможных последствий.


6. Проверяем запуск MTProxy

В примере используется порт 777/tcp.

./objs/bin/mtproto-proxy -p 8888 -H 777 -S a1b2c3d4e5f60718293a4b5c6d7e8f90 -D example.com --aes-pwd proxy-secret proxy-multi.conf --http-stats --allow-skip-dh -M 1

Если MTProxy успешно запустился, можно переходить к регистрации прокси в Telegram.


7. Регистрируем прокси

Открываем:

@MTProxyBot

Выполняем команды:

/start
/newproxy

Бот попросит указать:

IP:PORT
123.45.67.89:777

Secret
a1b2c3d4e5f60718293a4b5c6d7e8f90

Передаётся только секрет сервера.

Без префикса:

ee

После регистрации бот выдаст:

  • Proxy Tag;
  • ссылку подключения;
  • информацию о прокси.

Proxy Tag понадобится при создании службы.

8. Настраиваем Telegram Sponsored Channel

Если прокси будет использовать Telegram Sponsored Channel, открываем в боте:

/myproxies

Выбираем зарегистрированный MTProxy и нажимаем:

Set Channel

Указываем публичный канал:

@your_channel

или

t.me/your_channel

Канал должен быть публичным.

Изменения применяются не сразу. Обычно это занимает несколько минут, но иногда обновление может занять до часа.


9. Создаём службу systemd

Создаём файл:

/etc/systemd/system/mtproxy.service

Содержимое:

[Unit]
Description=MTProto Proxy
After=network.target

[Service]
User=nobody
Group=nogroup
WorkingDirectory=/opt/MTProxy

ExecStart=/opt/MTProxy/objs/bin/mtproto-proxy -p 8888 -H 777 -S a1b2c3d4e5f60718293a4b5c6d7e8f90 -P abcdef1234567890abcdef1234567890 -D example.com --aes-pwd proxy-secret proxy-multi.conf --http-stats --allow-skip-dh -M 1

Restart=always
RestartSec=3
LimitNOFILE=65535

NoNewPrivileges=true
PrivateTmp=true

[Install]
WantedBy=multi-user.target

В этой команде необходимо заменить:

  • -S — на секрет сервера;
  • -P — на Proxy Tag, полученный от @MTProxyBot;
  • -D — на домен, выбранный для Fake TLS.

10. Запускаем службу

Обновляем конфигурацию systemd:

systemctl daemon-reload

Включаем автоматический запуск и сразу запускаем службу:

systemctl enable --now mtproxy

Проверяем состояние:

systemctl status mtproxy

Служба должна перейти в состояние:

active (running)

После изменения параметров службы достаточно выполнить:

systemctl restart mtproxy

11. Настраиваем межсетевой экран

Перед включением UFW обязательно разрешаем SSH, иначе можно потерять доступ к серверу.

ufw allow OpenSSH
ufw allow 777/tcp
ufw enable

Если используется другой порт MTProxy, откройте именно его.


12. Формируем Fake TLS Secret

Пользователи подключаются не по секрету сервера, а по специальному Fake TLS Secret.

Он состоит из трёх частей:

ee + secret + hex(domain)

где:

  • ee — признак режима Fake TLS;
  • secret — секрет сервера;
  • hex(domain) — домен в шестнадцатеричном виде.

Например:

eea1b2c3d4e5f60718293a4b5c6d7e8f906578616d706c652e636f6d

Все символы должны идти подряд, без пробелов.


13. Формируем ссылку для подключения

Готовая ссылка выглядит так:

tg://proxy?server=123.45.67.89&port=777&secret=eea1b2c3d4e5f60718293a4b5c6d7e8f906578616d706c652e636f6d

Достаточно передать её пользователю или преобразовать в QR-код.

После открытия ссылки Telegram автоматически предложит добавить прокси.


14. Проверяем работу

Проверяем состояние службы:

systemctl status mtproxy

Просматриваем последние сообщения журнала:

journalctl -u mtproxy -n 50 --no-pager

Если требуется наблюдать журнал в реальном времени:

journalctl -u mtproxy -f

Проверяем, что MTProxy прослушивает нужный порт:

ss -tnlp | grep :777

15. Как это работает

MTProxy работает только с клиентами Telegram.

На сервере используется секрет, который задаётся параметром -S. Этот же секрет передаётся в @MTProxyBot при регистрации прокси.

После регистрации бот выдаёт Proxy Tag. Он добавляется в параметры запуска (-P) и связывает прокси с Telegram Sponsored Channel.

Пользователи подключаются уже не по секрету сервера, а по Fake TLS Secret, который начинается с ee.

Fake TLS делает соединение похожим на обычный HTTPS-трафик выбранного сайта, но не превращает MTProxy в VPN.

Через MTProxy работает только трафик Telegram.


16. Резервная копия

После завершения настройки рекомендуется сохранить:

/opt/MTProxy/proxy-secret
/opt/MTProxy/proxy-multi.conf
/etc/systemd/system/mtproxy.service

Если используется собственный скрипт запуска или изменены параметры MTProxy, сохраните и их.

При потере этих файлов придётся заново настраивать службу и параметры запуска.

Не храните единственную резервную копию на этом же сервере. Сохраните её на другом сервере, NAS или внешнем носителе.


Полезные ссылки

Official MTProxy

@MTProxyBot