← Назад в базу знаний

Telegram через IPv6 прокси: MTProto, каналы и замедление в РФ

Telegram через IPv6 прокси: MTProto, каналы и замедление в РФ

Почему Telegram и IPv6 — это отдельная история

Telegram в России живёт в режиме постоянного давления: то замедление голосовых, то блокировка звонков, то региональные фильтры на дата-центры. Пользователи ищут обходные пути, и первое, что приходит в голову — прокси. Но с Telegram есть нюанс: он не работает через SOCKS5 так, как браузер. У него собственный протокол MTProto, и прокси в клиенте — это не HTTP-прокси в привычном смысле.

MTProto-прокси — это сервер, который принимает зашифрованный поток от клиента и пересылает его в дата-центры Telegram. Клиент устанавливает TCP-соединение с прокси, а дальше уже прокси держит соединение с DC. Ключевой момент: Telegram не отправляет через прокси обычный HTTP-трафик. Всё общение идёт бинарным потоком, и DPI-системы видят просто набор байтов без явных сигнатур — если, конечно, не научились их распознавать.

IPv6 здесь даёт неожиданное преимущество. Российские DPI-системы исторически заточены под IPv4. Трафик по IPv6 фильтруется куда реже, а в некоторых регионах — вообще не фильтруется на уровне оператора. Это не панацея, но рабочий рычаг.

Как MTProto-прокси устроен внутри

MTProto-прокси — это не полноценный VPN. Он не туннелирует весь трафик, только соединения Telegram. Архитектура простая: клиент знает адрес прокси и секрет (32 hex-символа), устанавливает TCP-соединение, обменивается с прокси специальным handshake, после чего прокси открывает соединение к одному из дата-центров Telegram.

Секрет — это не пароль в привычном смысле. Он используется для генерации ключа шифрования канала между клиентом и прокси. Прокси не может расшифровать содержимое сообщений — он видит только метаданные: какой DC, какой объём трафика, тайминги. Это важно понимать, если вы поднимаете прокси для других людей.

Дата-центры Telegram разбросаны по миру: DC1 и DC3 в Майами, DC2 и DC4 в Амстердаме, DC5 в Сингапуре. Клиент сам выбирает DC в зависимости от аккаунта. Прокси должен уметь достучаться до нужного DC — иначе соединение не поднимется.

Почему IPv6 меняет расклад

IPv4-адреса закончились, и это не абстрактная проблема. Российские провайдеры всё чаще выдают IPv6 через DS-Lite или 6rd. При этом DPI-оборудование на IPv6 либо отсутствует, либо работает в режиме мониторинга без активной блокировки. Практика показывает: один и тот же MTProto-прокси, доступный по IPv4 и IPv6, на IPv6 работает стабильнее.

Второй момент — стоимость. IPv6-адреса дешёвые. VPS с /64 префиксом стоит столько же, сколько с одним IPv4, а иногда дешевле. Можно поднять несколько прокси на одном сервере, каждый на своём IPv6, и распределять нагрузку. Это особенно полезно, когда один адрес попадает под блокировку — переключаетесь на соседний из того же префикса.

Третий момент — маршрутизация. IPv6 часто идёт по другому маршруту, чем IPv4. Иногда это плюс (меньше хопов до Европы), иногда минус (кривой пиринг). Проверять надо руками.

Проверка связности до дата-центров Telegram

Перед тем как поднимать прокси, убедитесь, что с вашего сервера вообще есть маршрут до DC Telegram. Вот простой скрипт на Python, который проверяет TCP-связность по обоим протоколам.

```python

import socket

import time

DC_IPS = {

"DC1": "149.154.175.50",

"DC2": "149.154.167.51",

"DC3": "149.154.175.100",

"DC4": "149.154.167.91",

"DC5": "91.108.56.130",

}

def check(host, port=443, family=socket.AF_INET, timeout=5):

start = time.time()

try:

infos = socket.getaddrinfo(host, port, family, socket.SOCK_STREAM)

sock = socket.socket(family, socket.SOCK_STREAM)

sock.settimeout(timeout)

sock.connect(infos[0][4])

sock.close()

return round((time.time() - start) * 1000, 2)

except Exception as e:

return f"fail: {e}"

for name, ip in DC_IPS.items():

print(name, "v4:", check(ip, family=socket.AF_INET))

```

Для IPv6 замените `AF_INET` на `AF_INET6` и подставьте AAAA-записи. У Telegram они есть, но не для всех DC публично афишируются. Если IPv6-маршрут до DC отсутствует — прокси по IPv6 работать не будет, даже если клиент к нему подключится.

Секрет, порт и клиентская настройка

Секрет генерируется при создании прокси. Формат — 32 hex-символа. В клиенте Telegram прокси задаётся вручную: тип MTProto, адрес, порт, секрет. Для IPv6-адреса вводится он же, только в квадратных скобках, если интерфейс требует.

Клиент Telegram на Android и iOS поддерживает IPv6 для MTProto-прокси с версии 8.x. На десктопе — с 2.x. Старые версии могут молча игнорировать IPv6-адрес и падать в ошибку соединения. Проверяйте версию клиента, если прокси «не работает».

Порт значения не имеет, но 443 выглядит менее подозрительно для DPI. Хотя MTProto-трафик и так не похож на HTTPS, некоторые фильтры реагируют на нестандартные порты. Если прокси слушает на 8443 или 2053 — это может привлекать внимание.

Пример: прокси на VPS с IPv6-only

Допустим, у вас VPS с одним IPv6-адресом и без IPv4. Поднимаем MTProto-прокси. Популярное решение — mtg (MTProto Proxy на Go). Ставится одной командой, конфигурируется флагом.

```bash

wget -q https://github.com/9seconds/mtg/releases/latest/download/mtg-linux-amd64.tar.gz

tar xzf mtg-linux-amd64.tar.gz

./mtg generate-secret --hex 2>&1 | tee secret.txt

./mtg run \$(cat secret.txt) --bind "[::]:443" --nat-ip "2001:db8::1"

```

Флаг `--bind "[::]:443"` заставляет слушать на всех IPv6-интерфейсах. `--nat-ip` — внешний адрес, если сервер за NAT. После запуска в логах появится ссылка вида `tg://proxy?server=...&port=443&secret=...`. Её можно отправить в Telegram и подключиться одним тапом.

Проверить, что прокси отвечает, можно curl'ом — но не обычным HTTP-запросом. MTProto не поймёт HTTP. Зато можно проверить, что порт открыт:

```bash

curl -6 -v telnet://[2001:db8::1]:443 --max-time 3

```

Если соединение устанавливается и сразу рвётся — это нормально, прокси ждёт MTProto-handshake. Если таймаут — порт закрыт или IPv6-маршрут сломан.

Замедление и что оно делает с MTProto

Замедление Telegram в России — это не блокировка. Трафик проходит, но с искусственной задержкой или ограничением скорости. Технически это выглядит так: DPI пропускает пакеты, но добавляет задержку 100-500 мс на каждый или режет полосу до 100-200 кбит/с.

MTProto чувствителен к задержке. Протокол использует множество параллельных потоков внутри одного TCP-соединения, и рост RTT бьёт по всем сразу. Голосовые сообщения начинают буферизоваться, медиа грузится рывками, а звонки просто не устанавливаются.

IPv6-прокси обходит замедление, если DPI не трогает IPv6-трафик. Но если провайдер замедляет всё подряд — прокси не поможет. Тогда нужен прокси за пределами РФ, и трафик к нему уже не будет замедляться, потому что замедление применяется на уровне российского оператора к адресам Telegram, а не к вашему VPS.

Сравнение вариантов обхода

| Вариант | Задержка | Сложность | Обход DPI |

|---|---|---|---|

| MTProto-прокси IPv4 | +20-50 мс | низкая | частично |

| MTProto-прокси IPv6 | +15-40 мс | низкая | выше |

| SOCKS5 через VPS | +30-80 мс | средняя | зависит от шифра |

| VPN (WireGuard) | +10-30 мс | средняя | заметен по сигнатуре |

| VLESS + Reality | +20-60 мс | высокая | высокий |

Цифры приблизительные, зависят от маршрута. VPN туннелирует весь трафик, что заметнее для DPI. MTProto-прокси маскируется под обычный бинарный поток. VLESS с Reality — самое незаметное, но требует больше настройки.

Кейс: голосовые не работают, текст ходит

Пользователь из Москвы, оператор МТС, IPv4. Текст в Telegram ходит нормально, голосовые сообщения не отправляются — висят в «отправке» и падают через минуту. Причина: МТС замедляет UDP-трафик к подсетям Telegram, а голосовые в MTProto идут через отдельный канал с иной сигнатурой. DPI распознаёт её и режет.

Решение: MTProto-прокси на VPS в Амстердаме с IPv6-адресом. Клиент подключается к прокси по IPv6, прокси держит соединение с DC2 (Амстердам) по IPv4. Задержка выросла с 35 до 60 мс, но голосовые пошли. Через две недели МТС начал фильтровать и IPv6-адрес прокси — пришлось сменить на соседний из /64. Проблема ушла.

Кейс: прокси работает, но медиа не грузится

Сервер на Hetzner, IPv6-only, mtg на порту 443. Текст и звонки работают, фото и видео не загружаются. Причина: mtg по умолчанию использует IPv4 для исходящих соединений к DC Telegram, а на сервере IPv4 нет. Прокси не может достучаться до DC.

Решение: флаг `--prefer-ip "6"` в mtg или настройка маршрутизации через NAT64. После правки медиа пошло. Задержка на загрузку 10-мегабайтного видео — около 4 секунд при полосе 50 Мбит/с.

Кейс: замедление обошли, но прокси палится

Пользователь поднял MTProto-прокси на IPv4, всё работало неделю. Потом оператор начал рвать соединение через 30 секунд после установки. Причина: DPI научился определять MTProto-handshake по характерной длине первых пакетов.

Решение: переезд на IPv6-адрес и смена порта на 8443. Handshake не изменился, но фильтр на IPv6-маршруте отсутствовал. Работает до сих пор, хотя никто не гарантирует, что завтра не закроют. Резервный вариант — VLESS + Reality на том же сервере, порт 443, маскировка под HTTPS к легитимному домену.

Что делать, если IPv6 нет у провайдера

Не у всех операторов есть IPv6. Ростелеком даёт в некоторых регионах, МТС и Мегафон — реже. Если IPv6 нет, MTProto-прокси по IPv6 не подключится. Варианты: туннель через 6in4 (HE.net Tunnelbroker), но он часто блокируется; либо использовать IPv4-прокси с маскировкой.

Второй вариант — прокси на VPS, который сам доступен по IPv4, но исходящие соединения к DC Telegram держит по IPv6. Это не поможет обойти замедление на участке клиент-прокси, но снимет нагрузку с IPv4-маршрута до Telegram. Иногда этого достаточно.

Третий вариант — комбинировать: MTProto-прокси для текста, VLESS для медиа. Клиент Telegram не умеет разделять трафик по типам, так что придётся либо мириться, либо использовать сторонние решения.

Безопасность и что видит прокси

MTProto-прокси не расшифровывает содержимое. Но он видит метаданные: кто, когда, сколько, к какому DC. Если прокси публичный и вы им пользуетесь — владелец может собрать статистику. Для личного использования поднимайте свой.

Секрет — это ключ. Если он утёк, любой может подключиться к вашему прокси. Меняйте секрет при подозрении на утечку. mtg генерирует новый одной командой, старый перестаёт работать.

Логи. mtg по умолчанию пишет в stdout. Если сервер под вашим контролем — логи можно отключить или ротировать. Если прокси чужой — считайте, что всё пишется.

Итог

Telegram через IPv6-прокси — рабочий вариант для российских условий. MTProto не расшифровывается прокси, IPv6 обходит часть DPI, стоимость VPS с IPv6 низкая. Минусы: не у всех есть IPv6, маршруты бывают кривыми, а фильтры постепенно учатся. Держите запасной вариант — VLESS с Reality или смена IPv6-адреса из /64. Прокси на lexic.ml работает с 2015 года, и за это время IPv6-подход доказал жизнеспособность, хотя и требует понимания, что именно вы делаете.

✔️Купить прокси