MTProxyHub
Ко всем статьям
8 мин

IPv6 для MTProxy: почему адресное пространство защищает от блокировок

Зачем поддерживать IPv6 на MTProxy-сервере, как работает dual-stack, почему массовая блокировка IPv6 невозможна и как правильно настроить Docker для IPv6.

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 секунд.