Инфраструктура · Telegram · Безопасность

Корпоративный MTProto прокси
для Telegram

Полное руководство по настройке с нуля: архитектура, конфигурация, управление пользователями и разбор типичных ошибок.

Автор Семёнов Евгений
Март 2026
Чтение ~15 мин
Содержание
01

Что такое MTProto прокси и зачем он нужен

MTProto — собственный протокол шифрования Telegram. MTProto прокси — это специальный сервер-посредник, который принимает подключения клиентов Telegram, маскирует трафик под обычный HTTPS (имитирует cloudflare.com и другие легитимные домены) и пересылает данные на серверы Telegram через зашифрованный туннель.

На практике прокси используют для работы в сетях, где Telegram заблокирован: Иран, Китай, корпоративные файрволы. Также его применяют для единой точки выхода всей компании и контроля доступа — каждому сотруднику выдаётся персональный ключ (secret).

Важно
Прокси не шифрует содержимое сообщений — Telegram и без того зашифрован end-to-end. Прокси лишь скрывает сам факт использования Telegram и маршрутизирует трафик через нужный сервер.
02

Что это даёт бизнесу

Для компании
  • Корпоративный контроль — у каждого пользователя свой ключ
  • Мониторинг: кто подключён, сколько трафика, с каких IP
  • Независимость от блокировок и DPI
  • Трафик не проходит через чужие сервисы
  • Один сервер держит 300+ одновременных подключений
  • Отключить пользователя можно за секунду
Для пользователей
  • Telegram работает везде: офис, заграница, блокировки
  • Высокая скорость — прямое подключение без VPN-оверхеда
  • Фото и видео там, где обычный Telegram не работает
  • Ничего устанавливать не нужно — только адрес прокси
03

Архитектура: как это работает

При включённом USE_MIDDLE_PROXY = True трафик идёт через официальные Telegram relay-серверы. Это рекомендуемый режим: большинство хостингов блокируют прямые соединения к Telegram CDN, а через relay надёжно работают в том числе фото и видео.

Клиент Telegram
TLS-обфускация → выглядит как HTTPS к cloudflare.com
Прокси-сервер :443
MTProto туннель (зашифрованный)
Telegram Middle Proxy Relay
Внутренний протокол Telegram
Сервер Telegram DC1 / DC2 / DC4...

TLS-маскировка работает через секрет формата ee<hex>636c6f7564666c6172652e636f6d: префикс ee означает fake-TLS, а последняя часть — «cloudflare.com» в HEX. DPI-системы видят легитимный HTTPS, а не Telegram.

04

Что понадобится

VPS серверDebian 12 или Ubuntu 22.04. От 512 МБ RAM, 1 CPU. ~5–10 ГБ трафика в месяц на 20 активных пользователей. Порт 443 должен быть открыт.
Рекомендуемые хостингиHetzner (Германия / Финляндия), DigitalOcean, Vultr. Регион: Frankfurt, Helsinki, Amsterdam — хороший пинг из России.
Python 3.7+Обычно уже есть в Debian/Ubuntu.
SSH-доступRoot или sudo. Windows: PuTTY или Windows Terminal.
Время15–30 минут.
05

Установка шаг за шагом

01

Подключение и первоначальная настройка

Подключитесь по SSH и обновите систему:

bash
# Подключиться
ssh root@<IP_СЕРВЕРА>

# Обновить пакеты
apt update && apt upgrade -y

# Установить необходимые утилиты
apt install -y git curl wget nano ufw fail2ban

# Защита SSH от брутфорса
systemctl enable fail2ban && systemctl start fail2ban
02

Установка зависимостей

bash
# Проверить Python
python3 --version

# Если нет — установить
apt install -y python3 python3-pip

# Ускорение криптографии (опционально)
pip3 install cryptography
03

Установка mtprotoproxy

Используем оригинальный alexbers/mtprotoproxy — самый популярный open-source MTProto прокси на Python (asyncio, держит 300+ подключений на 1 ядре).

bash
cd /opt
git clone https://github.com/alexbers/mtprotoproxy.git
cd /opt/mtprotoproxy
06

Конфигурация прокси

Откройте файл конфигурации:

nano /opt/mtprotoproxy/config.py

Пример рабочего конфига:

config.py
PORT = 443

USERS = {
    "admin":     "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
    "employee1": "b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7",
    "employee2": "c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8",
}

TLS_DOMAIN      = "cloudflare.com"
USE_MIDDLE_PROXY = True   # ОБЯЗАТЕЛЬНО
PREFER_IPV6     = False

TG_READ_TIMEOUT = 3600
TO_CLT_BUFSIZE  = 33554432   # 32 МБ — не уменьшать!
TO_TG_BUFSIZE   = 33554432

IGNORE_TIME_SKEW = True
CLIENT_KEEPALIVE = 600

Сгенерировать новый ключ для пользователя:

python3 -c "import secrets; print(secrets.token_hex(16))"
PORT = 443Стандартный HTTPS-порт. Открыт в 99% корпоративных и мобильных сетей.
USERSСловарь пользователей: имя + 32-символьный hex-ключ. Каждый ключ = отдельная ссылка для подключения.
TLS_DOMAINДомен-маскировка. Cloudflare — идеально: трафик неотличим от обычного HTTPS.
USE_MIDDLE_PROXYПодключение через официальные Telegram relay. Обязательно на большинстве хостингов — без него медиа не грузятся.
TO_CLT_BUFSIZEБуфер 32 МБ. Критически важен для скорости видео. Не уменьшать.
Стоп
Не добавляйте PROXY_INFO_UPDATE_PERIOD = 300. Дефолт (24 часа) — оптимален. Частые обновления relay-листа запускают 16+ фоновых подключений к Telegram, что воспринимается как атака и приводит к бану IP.
07

Systemd и файрвол

Создайте файл сервиса:

/etc/systemd/system/mtproxy.service
[Unit]
Description=MTProto Proxy
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/mtprotoproxy/mtprotoproxy.py
WorkingDirectory=/opt/mtprotoproxy
Restart=always
RestartSec=5
LimitNOFILE=65536
LimitNPROC=65536
Nice=-10
CPUWeight=700
MemoryHigh=2G
MemoryMax=3G
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
bash
systemctl daemon-reload
systemctl enable mtproxy
systemctl start mtproxy
systemctl status mtproxy   # должно быть active (running)

Настройка файрвола — сначала SSH, потом всё остальное:

UFW
ufw allow 22/tcp    # SSH — обязательно первым!
ufw allow 443/tcp   # MTProxy
ufw enable
ufw status verbose
Важно
Всегда открывайте SSH (порт 22) до включения UFW. Иначе потеряете доступ к серверу.
08

Подключение в Telegram

После запуска прокси выведет в лог ссылки вида:

admin: tg://proxy?server=82.25.161.30&port=443&secret=ee...636c6f7564666c6172652e636f6d

Три формата: без префикса (обычный MTProto), с dd (обфускация), с ee (TLS-маскировка). Выдавайте пользователям ссылку с ee — она работает в максимальном числе сетей.

AndroidНастройки → Конфиденциальность → Прокси → «+» → MTProto
iOSНастройки → VPN и прокси → Прокси → Добавить прокси (MTProto)
По ссылкеПросто перейдите по tg://proxy?... — Telegram сам предложит подключиться

Иконка 🛡 рядом с именем прокси означает, что TLS-режим активен. Зелёная галочка — прокси подключён.

09

Управление пользователями

Добавить пользователя: отредактируйте /opt/mtprotoproxy/config.py, вставьте новую строку в USERS, перезапустите сервис.

Удалить: уберите его строку из USERS и перезапустите. Ссылка сразу перестанет работать.

Совет
Для крупной команды можно поднять второй инстанс: скопируйте папку в /opt/mtprotoproxy2, смените порт на 8888, создайте отдельный systemd-сервис mtproxy2.service — и получите независимый прокси для другой группы пользователей или резерв.
10

Мониторинг и логи

Прокси выводит статистику в лог каждую минуту:

Stats for 22.03.2026 09:00:00
tg:    11 connects (4 current),  1.57 MB,  879 msgs
test:   3 connects (1 current),  0.45 MB,  120 msgs
# Логи в реальном времени
journalctl -u mtproxy -f
# Статус сервисов
systemctl status mtproxy mtproxy2
# Активные подключения
ss -tnp | grep python3 | wc -l
# Открытые порты
ss -tlnp | grep -E '443|8888'
# Трафик за сегодня
journalctl -u mtproxy --since today | grep Stats
# Генерация нового секрета
python3 -c "import secrets; print(secrets.token_hex(16))"
11

Важные настройки и ловушки

Стоп
Никогда не делайте TCP health check к relay-серверам Telegram. Скрипт, который проверяет доступность relay через TCP connect к 24 серверам, воспринимается как флуд. Telegram заблокирует ваш IP на своих relay. Симптом: «[Errno 104] Connection reset» и «0 bytes read» в логах. Лечение: ждать 30–60 минут.
Стоп
Не уменьшайте PROXY_INFO_UPDATE_PERIOD. Значение 300 (5 минут) — значит каждые 5 минут запускаются 16 фоновых подключений ко всем relay. Дефолт 24 часа — оптимален.
Помните
LimitNOFILE = 65536 — каждое подключение потребляет 2 файловых дескриптора. Без этого лимита сервис упадёт после ~500 одновременных подключений.
Совет
Оригинальный код mtprotoproxy + USE_MIDDLE_PROXY = True + дефолтные настройки = надёжная работа. Не нужно «улучшать» то, что уже работает.
12

Диагностика типичных проблем

Проблема

«Can't connect to proxy» в Telegram

Проверьте: systemctl is-active mtproxy (должно быть active), ss -tlnp | grep 443 (должен слушать), ufw status | grep 443 (правило ALLOW). Исправление: systemctl restart mtproxy
Проблема

Сообщения идут, но фото и видео не грузятся

Причина 1: USE_MIDDLE_PROXY = False — хостинг блокирует Telegram CDN. Поставьте True, перезапустите.
Причина 2: IP забанен relay (в логах «0 bytes read»). Подождите 30–60 минут, убедитесь что нет health-check скриптов.
Причина 3: Маленький буфер. Установите TO_CLT_BUFSIZE = TO_TG_BUFSIZE = 33554432.
Проблема

«[Errno 104] Connection reset by peer» в логах

IP попал под rate-limit relay Telegram. Остановите сервис: systemctl stop mtproxy, подождите 30–60 минут, уберите все скрипты с TCP-коннектами к relay. Затем: systemctl start mtproxy
Проблема

После перезагрузки сервера прокси не запускается

Забыли включить автозапуск: systemctl enable mtproxy && systemctl start mtproxy
История настройки · Март 2026

Исходная проблема

Фото и видео не грузились. Прокси выбирал один случайный relay, и если тот был недоступен — соединение падало через 10 секунд.

Первая попытка: retry-патч

Добавили логику перебора relay с таймаутом 1.5с. Частично помогло, но одновременно поставили PROXY_INFO_UPDATE_PERIOD = 300 — что привело к следующей проблеме.

Критическая ошибка: TCP health check

Добавили скрипт проверки relay через TCP connect к 24 серверам. Telegram расценил это как флуд и заблокировал IP. Симптом: «[Errno 104] Connection reset» — полный отказ.

Исправление: откат к оригиналу

Восстановили оригинальный mtprotoproxy.py с рабочего сервера, убрали PROXY_INFO_UPDATE_PERIOD, вернули дефолтные настройки. После снятия бана всё заработало стабильно.

✈ Telegram: @ITfresh_Boss — задать вопрос