IPv6 для MTProxy: обход блокировок через масштаб адресного пространства
Когда власти блокируют MTProxy, они чаще всего блокируют конкретные IP-адреса серверов. Этот подход работает против IPv4, но имеет принципиальное ограничение против IPv6. Разберём, почему — и как это использовать.
IPv4 vs IPv6: в чём принципиальная разница
Интернет работает на двух поколениях адресации. IPv4 и IPv6 сосуществуют, но у них разные свойства, важные для обхода блокировок.
Ключевой факт: стандартный блок IPv6, который провайдер выдаёт одному серверу, — это /64 префикс. В нём содержится 2^64 = 18 446 744 073 709 551 616 адресов. Даже если цензурный орган заблокирует 1 000 000 адресов в день, ему потребуется более 50 000 лет, чтобы перебрать весь /64 блок.
Важное уточнение: IPv6 не «невидим» для DPI
Распространённое заблуждение: «DPI-системы не умеют анализировать IPv6». Это неправда.
Современные DPI-комплексы (включая ТСПУ в России и аналоги в Иране) в полной мере анализируют IPv6-трафик на уровне содержимого. Fake TLS маскировка остаётся необходимой вне зависимости от версии IP.
Преимущество IPv6 — не в «невидимости», а в неперечислимости адресов:
| Метод блокировки | Против IPv4 | Против IPv6 |
|---|---|---|
| Блокировка по IP | Эффективна (ограниченное число адресов) | Неэффективна (2^64 адресов в одном /64) |
| DPI по содержимому | Работает | Работает так же |
| Fake TLS обход DPI | Нужен | Нужен |
Как работает dual-stack в контексте MTProxy
Dual-stack означает, что ваш сервер одновременно слушает на IPv4 и IPv6 адресах. Клиент (Telegram) автоматически выбирает протокол.
Если IPv4-адрес вашего прокси заблокирован, а IPv6 — нет (что типично для первых этапов блокировок), клиент с IPv6 будет продолжать работать.
Как проверить поддержку IPv6 на сервере
# Проверить наличие IPv6-адреса
ip -6 addr show
# Проверить подключение к интернету по IPv6
ping6 google.com
# Узнать свой IPv6-адрес
curl -6 ifconfig.me
Если сервер имеет IPv6-адрес (начинается с 2 или fc/fd), он готов к dual-stack настройке.
Настройка Docker для IPv6
По умолчанию Docker не поддерживает IPv6 для контейнеров. Нужно явно включить это.
Шаг 1: Включить IPv6 в Docker daemon
Отредактируйте /etc/docker/daemon.json:
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80",
"ip6tables": true,
"experimental": true
}
Перезапустите Docker:
systemctl restart docker
Шаг 2: Запустить MTProxy с явным указанием всех адресов
docker run -d \
--name mtproxy \
--restart always \
-p 0.0.0.0:443:443 \
-p [::]:443:443 \
-e SECRET="ВАШ_СЕКРЕТ_EE..." \
-e WORKERS=1 \
-v proxy-config:/data \
telegrammessenger/proxy:latest
Флаг -p [::]:443:443 привязывает порт 443 к IPv6 любому адресу (аналог 0.0.0.0 для IPv4).
Шаг 3: Проверить dual-stack прослушивание
docker exec mtproxy ss -tlnp | grep 443
Должны видеть и 0.0.0.0:443, и [::]:443.
Настройка файрвола для IPv6
# Ubuntu/Debian с ufw
sudo ufw allow 443/tcp
sudo ufw allow 443/tcp comment 'MTProxy'
# Убедиться что IPv6 включён в ufw
grep IPV6 /etc/default/ufw
# Должно быть: IPV6=yes
Для iptables/ip6tables напрямую:
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
ip6tables-save > /etc/iptables/rules.v6
IPv6 адрес в ссылке для подключения
Ссылка для подключения с IPv6-адресом выглядит так:
tg://proxy?server=2a01:4f8:c2c:1234::1&port=443&secret=ee...
Telegram-клиент корректно обрабатывает IPv6-адреса в поле server. При необходимости можно предоставить оба варианта:
# IPv4-ссылка
tg://proxy?server=1.2.3.4&port=443&secret=ee...
# IPv6-ссылка
tg://proxy?server=2a01:4f8:c2c:1234::1&port=443&secret=ee...
Пользователи могут выбрать ту, которая работает в их сети.
Практическая ценность в реальных сценариях блокировок
Опыт пользователей из Ирана и России показывает определённую закономерность: когда начинается волна блокировок, провайдеры сначала блокируют IPv4-адреса серверов. IPv6-адреса попадают в блокировки позже — иногда с задержкой в несколько дней или недель.
Это не гарантия, но dual-stack повышает устойчивость прокси в период активных блокировок.
Подробнее о настройке IPv6 в Docker — в официальной документации Docker. Спецификации IPv6 — в RFC 4291 (IETF). О Telegram-инфраструктуре — на core.telegram.org/mtproto.
FAQ
Действительно ли DPI пропускает IPv6? Нет, это миф. Современные DPI анализируют и IPv6. Преимущество IPv6 — в масштабе адресного пространства, не в "невидимости".
Обязателен ли IPv6? Нет. MTProxy работает на IPv4. IPv6 — дополнительный инструмент устойчивости.
Как проверить IPv6 на сервере?
ip -6 addr show — если видите адрес, IPv6 доступен.
Нужно ли открывать IPv6-порты в файрволе отдельно?
Да. ufw allow 443/tcp по умолчанию охватывает оба протокола только при IPV6=yes в /etc/default/ufw.
Что такое dual-stack? Одновременное прослушивание на IPv4 и IPv6. Клиент автоматически выбирает протокол.
Разобрались с IPv6? Читайте, как оптимизировать производительность сервера и как работает DPI, которому противостоит IPv6.
Список рабочих прокси — без настройки, обновляется каждые 60 секунд.