TL;DR: Обычный MTProxy с Fake TLS маскирует протокол, но палится при активном зондировании. Telemt при попытке «пощупать» ваш прокси извне отдаёт настоящий сайт с настоящим TLS-сертификатом. Для DPI и краулеров это сайт.ru. Для вас это стабильный Telegram.

Привет, Хабр!

Это продолжение серии про обход блокировок Telegram. В первой части мы подняли MTProxy на nineseconds/mtg с Fake TLS. Работает, подключаешь и забываешь. Но есть нюанс.

Fake TLS маскирует протокол. DPI смотрит на пакеты и видит обычный TLS к сайт.ru. Всё красиво, пока к вашему серверу не придёт краулер и не попробует на него зайти.

Проблема: active probing

Представьте, что DPI не просто анализирует пакеты, а сам подключается к подозрительному IP и проверяет: «а правда ли это 1c ru?». Такое называется active probing, и это не теория, а реальная практика.

# Краулер делает:
curl -v --resolve сайт.ru:443:<ваш_IP> https://сайт.ru/

# mtg отвечает:
# Connection reset / Timeout / Мусор
# Вывод: это не сайт.ru. Блокируем.

У nineseconds/mtg на это нет ответа. Если клиент приходит без правильного секрета, mtg просто дропает соединение. Краулер это видит и делает выводы.

Telemt: прокси, который прикидывается сайтом

Telemt написан на Rust + Tokio. Ключевая фича: transparent TCP splice. Если клиент приходит без секрета, Telemt не дропает соединение, а прозрачно перенаправляет его на реальный сайт.

Никакого MITM. Telemt не подменяет сертификаты, не генерирует фейки. Он просто склеивает TCP-потоки. Краулер получает настоящий ответ от сайт.ru с настоящим GlobalSign-сертификатом. Претензий нет.

Почему стоит перейти с mtg

Особенность

nineseconds/mtg

Telemt

Язык

Go

Rust + Tokio

Active probing

❌ Дропает

✅ Проксирует реальный сайт

Контейнер

Обычный образ

Distroless, non-root

Конфиг

CLI-флаги

TOML-файл

Пользователи

Один секрет

Каждому свой + квоты

Upstream

Только direct

Direct + SOCKS5

Статус проекта

🔴 Заброшен

(Но разработка может возобновится)

🟢 Активно развивается

Шаг 1. Подготовка

Docker и Compose на месте?

docker --version
docker compose version

Если занят порт 443, освобождаем его:

ss -tulpn | grep 443

Шаг 2. Секрет

В Telemt секрет — это просто 16 рандомных байт.

openssl rand -hex 16
# Результат (запишите): a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6

Шаг 3. Конфигурация

Создаём рабочую папку:

mkdir -p /root/mtproxy-telemt
cd /root/mtproxy-telemt

Пишем telemt.toml:

# telemt.toml

show_link = ["user1"]

[general]
prefer_ipv6 = false
fast_mode = true
use_middle_proxy = false

[general.modes]
classic = false 
secure = false 
tls = true 

[server]
port = 443
listen_addr_ipv4 = "0.0.0.0"
listen_addr_ipv6 = "::"

[censorship]
tls_domain = "сайт.ru"   # домен для SNI (пример! см. ниже)
mask = true # Включает проксирование реального сайта
mask_port = 443
fake_cert_len = 2048

[access.users]
user1 = "ВАШ_СЕКРЕТ_ИЗ_ШАГА_2"

[[upstreams]]
type = "direct"
enabled = true
weight = 10

⚠️ сайт.ru — это пример из документации telemt.
НЕ используйте его в продакшене: если все читатели статьи поставят один домен, это само по себе станет маркером.
Выберите свой:
сайт.ru, сайт.ru и т.д.

Шаг 4. Docker Compose

Создаем docker-compose.yml:

services:
  telemt:
    image: whn0thacked/telemt-docker:latest
    container_name: telemt
    restart: unless-stopped
    environment:
      RUST_LOG: "info"
    volumes:
      - ./telemt.toml:/etc/telemt.toml:ro
    ports:
      - "443:443/tcp"
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE
    read_only: true
    tmpfs:
      - /tmp:rw,nosuid,nodev,noexec,size=16m
    deploy:
      resources:
        limits:
          cpus: "0.50"
          memory: 256M

Шаг 5. Запуск и проверка

Запускаем:

docker compose up -d

Берем ссылку из логов:

docker compose logs | grep "tg://proxy"

Проверяем маскировку (active probing тест)

curl -v -I --resolve petrovich.ru:443:<ВАШ_IP> https://сайт.ru/

Если в ответе Server certificate: CN=*.сайт.ru и HTTP/1.1 200 OK — вы невидимы.

Фичи, которых нет в mtg

  1. Индивидуальные секреты: Удаляйте утекшие ключи без смены пароля для всех остальных.

  2. SOCKS5 upstream: Возможность перенаправлять трафик через Tor или другой прокси.

  3. Hardening: Distroless-образ и запуск от non-root пользователя максимально усложняют взлом сервера.

Какой домен выбрать для маскировки

Хорошие варианты

Плохие варианты

сайт.ru (Много трафика)

google.com (Слишком сложный CDN)

сайт.ru (Популярно)

example.com (Вызывает подозрение)

сайт.ru (Стандарт для РФ серверов)

gov.ru (Лишнее внимание спецслужб)

Итоги

Мы подняли MTProxy, который при active probing ведет себя как настоящий веб-сервер. Telemt закрывает главную дыру Fake TLS и добавляет возможности для полноценного администрирования.

В третьей части выйдем за рамки Telegram. Поднимем Hysteria 2 — прокси на QUIC, который обходит TCP-троттлинг. Следите!

🎁 Бонус: Где взять готовые прокси?

Если у вас сейчас нет под рукой свободного сервера или вы хотите просто протестировать, как работает MTProto с Fake TLS на практике, можно воспользоваться готовыми решениями от сообщества.

Одним из самых популярных агрегаторов является канал @ProxyMTProto.

Как это работает:

  1. Заходите в канал @ProxyMTProto.

  2. Выбираете любой свежий пост с прокси.

  3. Нажимаете кнопку «Connect».

В появившемся окне Telegram (как на скриншоте ниже) нажимаете «Включить».

🛑🛑🛑Важно понимать: Бесплатные прокси часто спонсируются. Это значит, что после подключения в самом верху вашего списка чатов может появиться «Спонсорский канал». Это стандартная механика Telegram, которая позволяет владельцам прокси окупать аренду серверов. Ваш трафик при этом остается зашифрованным и недоступным для владельца прокси.