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

Telegram через IPv6 прокси: настройка MTProto и SOCKS5 для каналов и ботов

Telegram через IPv6 прокси: настройка MTProto и SOCKS5 для каналов и ботов

Зачем вообще IPv6 для Telegram

Блокировки становятся умнее. DPI-системы научились выцеплять MTProto по сигнатурам. IPv4-адреса заканчиваются, провайдеры режут трафик. IPv6 даёт пул в 2^128 адресов — заблокировать их все невозможно физически.

Telegram использует два протокола для прокси: MTProto (родной, шифрованный) и SOCKS5 (обычный, но быстрый). IPv6 добавляет к ним уровень обфускации за счёт редкости адресов.

MTProto: архитектура и подводные камни

MTProto — не просто прокси. Это полноценный транспортный протокол с собственным шифрованием. Клиент шифрует трафик, прокси его передаёт, сервер Telegram расшифровывает.

Проблема: MTProxy легко детектится по портам и поведению. Стандартные порты 443, 80, 8443 — под колпаком. Решение — нестандартные порты и IPv6.

Реальный кейс: блокировка по порту

Пример: сервер на Debian 12, nginx 1.24, MTProxy на порту 8443. Через неделю — полная блокировка. Провайдер (Ростелеком) глушил TCP SYN на 8443.

Причина: DPI отслеживал нестандартные порты с MTProto-трафиком. Решение — перенос на порт 53 (DNS) с IPv6. DNS-трафик через UDP, но TCP/53 тоже разрешён. Маскировка под DNS-запрос.

```bash

Установка MTProxy на порт 53 с IPv6

apt install mtproxy

mtproxy -p 53 -6 -s -a tls -t 443

```

Параметр `-6` форсирует IPv6. `-a tls` — обфускация под TLS. `-t 443` — фейковый TLS-хендшейк на 443 порт цели.

SOCKS5: когда MTProto не нужен

SOCKS5 — транспортный протокол. Он не шифрует данные, только передаёт. Для Telegram это проблема — трафик идёт в открытую. Но SOCKS5 быстрее MTProto на 15-30% из-за отсутствия оверхэда шифрования.

Для каналов и ботов SOCKS5 подходит, если трафик уже зашифрован самим Telegram. Но для личных сообщений — риск.

Кейс: SOCKS5 через IPv6 для бота

Сценарий: бот на Python, библиотека python-telegram-bot 20.7. Нужен стабильный канал для вебхуков. IPv4 блокирован, IPv6 работает.

```python

import asyncio

from telegram import Bot

from telegram.ext import Application

proxy_url = "socks5://[2001:db8::1]:1080"

async def main():

bot = Bot(token="TOKEN", proxy=proxy_url)

app = Application.builder().token("TOKEN").proxy(proxy_url).build()

await app.run_webhook()

asyncio.run(main())

```

Важно: `proxy_url` в квадратных скобках для IPv6. Без них Python выбросит `ValueError: invalid proxy URL`.

Настройка сервера для IPv6 прокси

Сервер должен принимать IPv6-соединения. Проверка:

```bash

ip -6 addr show

```

Если нет глобального IPv6 — арендуйте VPS с поддержкой. Для MTProxy и SOCKS5 нужен только один IPv6-адрес, но для отказоустойчивости — /64 подсеть.

Конфигурация dante-server для SOCKS5

Dante — стандартный SOCKS5-сервер для Linux. Его конфиг под IPv6:

```bash

/etc/danted.conf

internal: 0.0.0.0 port = 1080

internal: ::0 port = 1080

external: eth0

external: eth0

socksmethod: username none

user.privileged: root

user.unprivileged: nobody

client pass {

from: 0.0.0.0/0 to: 0.0.0.0/0

log: connect disconnect

}

client pass {

from: ::/0 to: ::/0

log: connect disconnect

}

socks pass {

from: 0.0.0.0/0 to: 0.0.0.0/0

log: connect disconnect

}

socks pass {

from: ::/0 to: ::/0

log: connect disconnect

}

```

Ключевой момент: два блока `internal` — для IPv4 и IPv6. Без `::0` сервер не примет IPv6-соединения.

Обфускация трафика: почему это критично

Чистый MTProto без обфускации — мёртвый прокси. DPI видит:

1. Нестандартный порт

2. Отсутствие TLS-рукопожатия

3. Фиксированная длина пакетов (MTProto использует 512 байт)

Решение: включить TLS-обёртку. MTProxy с флагом `-a tls` имитирует HTTPS. Добавить random padding для размытия длины.

```bash

MTProxy с TLS и случайным паддингом

mtproxy -p 443 -6 -s -a tls -t 443 --random-padding

```

`--random-padding` добавляет от 0 до 512 байт мусора к каждому пакету. DPI не может определить длину пакета как сигнатуру.

Кейс: обфускация спасла прокси

Сервер: Hetzner, IPv6, MTProxy на порту 443 с TLS. Без обфускации — блокировка через 3 дня. С `--random-padding` и ротацией secret каждые 24 часа — работал 6 месяцев.

Ротация secret делается cron:

```bash

0 3 * * * /usr/bin/mtproxy -p 443 -6 -s \$(openssl rand -hex 16) -a tls -t 443 --random-padding

```

Сравнение протоколов для Telegram

| Протокол | Шифрование | Скорость | Обнаружение | IPv6 |

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

| MTProto | Да (свой) | 70-80% | Среднее | Да |

| MTProto+TLS | Да | 60-70% | Низкое | Да |

| SOCKS5 | Нет | 90-100% | Высокое | Да |

| SOCKS5+TLS | Да | 80-90% | Среднее | Да |

MTProto+TLS — золотая середина. SOCKS5+TLS быстрее, но сложнее в настройке (нужен stunnel или haproxy).

Балансировка между MTProto и SOCKS5

Для каналов с высокой нагрузкой (боты, парсеры) — SOCKS5. Он не тратит ресурсы на шифрование. Для приватных чатов — MTProto с обфускацией.

Гибридная схема: один сервер, два прокси на разных портах. SOCKS5 на 1080, MTProxy на 443. Клиент выбирает нужный.

```bash

Запуск обоих сервисов

systemctl start danted

systemctl start mtproxy

```

Проверка через curl:

```bash

SOCKS5

curl -x socks5://[2001:db8::1]:1080 https://api.telegram.org

MTProto (через Telegram API не проверить, только через клиент)

```

Типичные грабли

**Грабля 1**: MTU для IPv6 меньше. Стандартный MTU для IPv6 — 1280 байт (минимальный для IPv6). Для IPv4 — 1500. Если прокси не настроен на фрагментацию, пакеты теряются.

Решение: установить MTU на интерфейсе:

```bash

ip link set dev eth0 mtu 1280

```

**Грабля 2**: DNS через IPv6. Telegram использует DNS для поиска серверов. Если DNS-запросы идут через IPv4, а прокси через IPv6 — задержка.

Решение: форсировать DNS через IPv6:

```bash

echo "nameserver 2001:4860:4860::8888" > /etc/resolv.conf

```

**Грабля 3**: Secret MTProto утекает. Если secret скомпрометирован, прокси можно использовать для атак.

Решение: ротация secret каждые 24 часа и ограничение по IP через iptables:

```bash

ip6tables -A INPUT -p tcp --dport 443 -s 2001:db8::/32 -j ACCEPT

ip6tables -A INPUT -p tcp --dport 443 -j DROP

```

Метрики и мониторинг

Без мониторинга прокси умирает незаметно. Минимум — проверка доступности порта и задержки.

```bash

Проверка порта через IPv6

nc -zv -6 2001:db8::1 443

Задержка

ping6 -c 5 2001:db8::1

```

Для продвинутого мониторинга — Prometheus + blackbox_exporter. Он умеет проверять SOCKS5 и MTProto через модули.

Итог

IPv6 для Telegram — не панацея, но мощный инструмент. MTProto с обфускацией и ротацией secret даёт стабильность на месяцы. SOCKS5 — для скорости, когда шифрование не критично.

На lexic.ml используют IPv6-прокси с 2015 года. За это время сменилось три поколения DPI, но IPv6-адреса остаются живыми. Причина — провайдерам проще блокировать целые /64 подсети, чем выборочно адреса. А /64 — это 18 квинтиллионов адресов. Не заблокировать.

Настройте обфускацию, ротацию secret и мониторинг. И ваш Telegram-прокси будет жить долго.

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