Telegram через IPv6 прокси: настройка MTProto и SOCKS5 для каналов и ботов
Содержание
- Проблема блокировок
- MTProto: архитектура и настройка
- Установка MTProto на IPv6
- Проблемы MTProto
- SOCKS5: универсальное решение
- Dante на IPv6
- 3proxy — лёгкая альтернатива
- Кейс: канал с 50 000 подписчиков
- Кейс: бот для мониторинга криптобирж
- Мониторинг курсов
- Кейс: массовый парсинг каналов
- ... ещё 8 прокси
- MTProto vs SOCKS5: сравнение
- Практические советы
- Выводы
Проблема блокировок
Telegram блокируют по IP-адресам. Роскомнадзор регулярно пополняет реестр запрещённых подсетей. Стандартные IPv4-прокси живут от нескольких часов до пары дней. Потом — бан.
IPv6 решает эту проблему. Адресное пространство огромное — 2^128. Заблокировать все подсети невозможно. Даже если один адрес попал в реестр, переключиться на другой — дело секунды.
MTProto — собственный протокол Telegram для обхода блокировок. SOCKS5 — универсальный прокси-протокол, работает с любым трафиком. Разберём оба варианта.
MTProto: архитектура и настройка
MTProto использует шифрование поверх TCP. Клиент отправляет запрос на прокси-сервер, тот упаковывает трафик в MTProto-конверт и шлёт на сервера Telegram. Блокировщик видит только зашифрованный поток на нестандартном порту.
Установка MTProto на IPv6
Берём сервер с IPv6. Ставим Python 3.9+, клонируем репозиторий:
```bash
git clone https://github.com/TelegramMessenger/MTProxy
cd MTProxy
make
```
Генерируем секретный ключ:
```bash
head -c 16 /dev/urandom | xxd -ps
```
Получаем 32-символьную строку. Запускаем прокси:
```bash
./objs/bin/mtproto-proxy -p 443 -H 8080 -S
```
Флаг `-6` — форсировать IPv6. Порт 443 — маскировка под HTTPS. Порт 8080 — статистика.
Клиент подключается через `t.me/proxy?server=
Проблемы MTProto
Протокол специфичный. Только Telegram. Для веб-сёрфинга не подходит. Если нужен универсальный прокси — смотрим SOCKS5.
Второй момент — нагрузка. MTProxy потребляет около 100-200 МБ RAM на 1000 подключений. На слабых VPS — проблема.
SOCKS5: универсальное решение
SOCKS5 работает на транспортном уровне. Не важно, что передаётся — HTTP, WebSocket, кастомный протокол. Прокси просто пересылает пакеты.
Dante на IPv6
Dante — классический SOCKS5-сервер. Ставится из репозиториев:
```bash
apt install dante-server
```
Конфиг `/etc/dante.conf`:
```
internal: 0.0.0.0 port = 1080
external: eth0
socksmethod: username
user.privileged: root
user.unprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error
}
socks pass {
from: 0.0.0.0/0 to: ::/0
socksmethod: username
log: error
}
```
Особенность: `to: ::/0` — разрешает трафик на любые IPv6-адреса. Если оставить `0.0.0.0/0`, IPv6-трафик будет резаться.
Запускаем:
```bash
systemctl start danted
```
Проверяем через curl:
```bash
curl --socks5 user:pass@proxy.example.com:1080 --socks5-hostname https://api.telegram.org
```
Задержка: через IPv4 — 15-20 мс, через IPv6 — 20-25 мс. Разница в 5 мс на маршрутизации. Для Telegram — незаметно.
3proxy — лёгкая альтернатива
3proxy весит меньше мегабайта. Конфиг минималистичный:
```
daemon
nserver 8.8.8.8
nserver 2001:4860:4860::8888
auth iponly
allow * * * * 2 * *
proxy -6 -p1080
```
Флаг `-6` — слушать только IPv6. `auth iponly` — без пароля, доступ по IP. Удобно для ботов на одном сервере.
Кейс: канал с 50 000 подписчиков
Проблема: админ канала про экономику сидел в РФ. Через месяц после запуска — блокировка по IP. IPv4-прокси менял раз в 3 дня.
Причина: агрегатор новостей парсил канал раз в 5 минут. 288 запросов в сутки. Плюс 500-1000 переходов по ссылкам из постов. Нагрузка — 15-20 Мбит/с.
Решение: подняли SOCKS5 на IPv6 через 3proxy. Сервер — Hetzner CX22 (2 vCPU, 4 GB RAM, IPv6 /64). За 6 месяцев — ни одной блокировки.
Технические детали:
- MTU: 1500 байт (стандартный Ethernet)
- TCP window scaling: включено
- Keepalive: 60 секунд
Задержка на публикацию поста: через прокси — 1.2 секунды, напрямую — 0.8 секунды. Разница в 0.4 секунды — пользователи не заметили.
Кейс: бот для мониторинга криптобирж
Проблема: бот на Python собирал курсы с 5 бирж. Каждые 10 секунд — GET-запросы. Через 2 недели — блокировка по IP.
Причина: частые запросы на биржевые API. Антибот-системы Cloudflare блокировали по IP.
Решение: MTProto-прокси на IPv6. Код бота:
```python
import requests
from telethon import TelegramClient
api_id = 12345
api_hash = 'abcdef1234567890'
proxy = ('socks5', '2001:db8::1', 1080, True, 'user', 'pass')
client = TelegramClient('session', api_id, api_hash, proxy=proxy)
client.start()
Мониторинг курсов
while True:
response = requests.get('https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT')
price = response.json()['price']
print(f'BTC: {price}')
time.sleep(10)
```
Прокси менял IP раз в 24 часа через cron. 3 месяца — ни одной блокировки.
Кейс: массовый парсинг каналов
Проблема: нужно собрать посты из 200 каналов. Каждый канал — 500-1000 сообщений. Парсер на aiohttp падал после 50 запросов.
Причина: Telegram ограничивает количество запросов с одного IP. Лимит — 30 запросов в минуту на канал.
Решение: пул из 10 IPv6-прокси. Ротация через каждый запрос:
```python
import aiohttp
import itertools
proxies = [
'socks5://user:pass@2001:db8::1:1080',
'socks5://user:pass@2001:db8::2:1080',
... ещё 8 прокси
]
proxy_cycle = itertools.cycle(proxies)
async def fetch_channel(channel_id):
proxy = next(proxy_cycle)
async with aiohttp.ClientSession() as session:
async with session.get(
f'https://t.me/s/{channel_id}',
proxy=proxy
) as response:
return await response.text()
```
Результат: 200 каналов за 15 минут. 0 блокировок. Без прокси — 45 минут и 3 блокировки.
MTProto vs SOCKS5: сравнение
| Параметр | MTProto | SOCKS5 |
|----------|---------|--------|
| Протокол | Специфичный (только Telegram) | Универсальный |
| Шифрование | Встроенное | Опционально |
| Задержка | +10-15 мс | +5-10 мс |
| Нагрузка на CPU | 15-20% на 1000 коннектов | 5-10% |
| Сложность настройки | Средняя | Низкая |
| Обнаружение блокировщиком | Сложно (шифрованный поток) | Легко (DPI видит SOCKS5) |
MTProto лучше для обхода DPI. SOCKS5 — для универсальности и низкой нагрузки.
Практические советы
**Выбор порта.** Не ставь на 443, если там уже висит nginx. Используй 8443, 9443, 10443. Блокировщики редко сканируют нестандартные порты.
**IPv6-адреса.** Бери /64 подсеть. 2^64 адресов. Менять можно каждый час. На lexic.ml как раз такие прокси — с автоматической ротацией.
**Мониторинг.** Ставь netdata или prometheus. Смотри на количество подключений, ошибки, задержки. Если ошибок больше 5% — пора менять конфиг.
**Безопасность.** SOCKS5 без пароля — дыра. Китайские боты найдут за час. Ставь `auth username` или `auth iponly`.
Выводы
IPv6 — единственный рабочий способ обойти блокировки Telegram в РФ. MTProto даёт максимальную скрытность, SOCKS5 — универсальность и производительность.
Для каналов с аудиторией до 100k — SOCKS5 на 3proxy. Для ботов с частыми запросами — MTProto. Для массового парсинга — пул IPv6-прокси с ротацией.
Сервер бери с нативным IPv6. Не через туннели — задержка вырастет в 2-3 раза. Hetzner, DigitalOcean, Scaleway — все дают /64 подсеть бесплатно.
Настраивай, тестируй, забывай про блокировки.