Hysteria 2, TUIC, QUIC-based туннели

Reality — это TCP. На плохом канале (мобильный интернет, роуминг, потери 5-10%) TCP страдает: одна потеря тормозит весь поток (head-of-line blocking). QUIC поверх UDP решает это на уровне дизайна. Hysteria 2 и TUIC — два главных QUIC-туннеля 2024-2026, которые умеют делать то, что Reality не умеет: порт-хоппинг, BBR Brutal, обфускацию каждого пакета.

Что узнаешь
Вспомни из прошлых уроков

Reality (урок 7) идеален на стабильном канале, но это TCP — а head-of-line blocking из разбора TCP и TLS-in-TLS модели противника (урок 5) на плохих сетях бьют именно по TCP. QUIC ты уже видел в HTTP/3: независимые потоки, connection migration, 0-RTT. Здесь тот же QUIC becomes фундаментом туннеля, а masquerade — это тот же fallback-приём, что у Reality.

1. QUIC — почему он так удачно подходит

QUIC (Quick UDP Internet Connections) — транспортный протокол от Google, потом стандарт IETF (RFC 9000, 2021). Это «новый TCP», но поверх UDP. Главные свойства:

Для VPN это идеально: меньше latency, лучше работает на потерях, легко обновлять без kernel patches.

Одна потеря пакета: TCP-в-TCP против QUIC-туннеля
TCP-туннель (Reality на потерях) QUIC-туннель (Hysteria) поток 1 поток 2 — ЖДЁТ поток 3 — ЖДЁТ потеря в потоке 1 останавливает ВСЕ (HoL) + внутренний TCP тоже ретрансмитит → meltdown поток 1 поток 2 — ИДЁТ ✓ поток 3 — ИДЁТ ✓ переспрашивается только поток 1 остальные не замечают потери
Почему QUIC выигрывает на рваном канале: потеря изолирована в своём потоке, нет наслоения двух TCP.
Аналогия

TCP-в-TCP — два водителя за одним рулём

Почему на плохом канале нельзя просто гнать Reality? Представь, что надёжный TCP-туннель несёт внутри себя ещё один надёжный TCP (сайт, который ты открываешь). При потере пакета оба механизма надёжности бросаются переспрашивать и сбрасывать скорость — как два водителя, одновременно жмущие тормоз и газ: машину колотит, таймеры растут, скорость падает в пол (TCP meltdown). QUIC-туннель отдаёт руль одному водителю: надёжность живёт только на внешнем слое, потеря в одном потоке не тормозит остальные (нет head-of-line blocking), а при смене сети (Wi-Fi отеля → 4G) соединение не рвётся, а «переезжает» (connection migration). Отсюда правило: хороший канал — TCP/Reality, рваный мобильный — QUIC/Hysteria.

2. Hysteria 2 — «русская рулетка» для DPI

Hysteria 2 (Apernet, 2023) — переписанный с нуля Hysteria 1. Использует HTTP/3 + QUIC как транспорт. С точки зрения DPI выглядит как обычный HTTP/3-трафик к веб-сайту с поддержкой HTTP/3 (Cloudflare, Google, ...).

2.1. BBR Brutal — «лучший congestion control для туннеля»

Обычный TCP/QUIC использует BBR или Cubic — они подстраивают скорость под канал. Если канал «плохой» (router буферит, есть jitter) — congestion control думает «сеть перегружена» и снижает rate. На реальных каналах в РФ/Иране это убивает скорость.

Brutal (Apernet) — congestion control «забивает на сигналы»: качаем столько-то Mbps и точка. Не реагируем на потери, не уменьшаем при congestion. Это агрессивная стратегия:

Этическая нота

Brutal на bottleneck-канале «отжимает» полосу у других TCP-соединений (которые честно снижают rate). Если у тебя дома один VPN-канал и ты гонишь Brutal на 500 Mbps — твои домашние пользователи Zoom могут ощутить «дрожание». Используй с разумом и не на shared-каналах.

На bandwidth-limited клиентах (мобильный 4G, плохой Wi-Fi отеля) Brutal даёт 2-5x ускорение по сравнению с CUBIC.

2.2. Port hopping — обход блока «по UDP-порту»

Простая защита от UDP-блока: вместо одного фиксированного порта (например, 443) сервер слушает диапазон, скажем, 20000-50000. Клиент каждые N секунд переключается на новый случайный порт.

Эффект

Если DPI заблокирует конкретный UDP-порт — клиент через 5 секунд уже на другом. Чтобы блокнуть всё — нужно блокать диапазон 30000 портов на одном IP. Это в РФ практически не делают (создаст слишком много false positives для нормального UDP-трафика, игр, видеосвязи).

2.3. Salamander Obfuscation

Hysteria 2 поддерживает Salamander — простая XOR-обфускация каждого UDP-пакета с pre-shared key. После этого пакет внешне выглядит как «случайные байты» — не похож на QUIC.

Это решает проблему «прогретого» QUIC-fingerprint (первые байты QUIC имеют стандартный header, который DPI может распознать). С Salamander этого нет.

В конфиге сервера:

listen: :443

tls:
  cert: /etc/ssl/cert.pem
  key:  /etc/ssl/key.pem

obfs:
  type: salamander
  salamander:
    password: super-secret-shared-password

bandwidth:
  up:   100 mbps                  # лимит на пользователя
  down: 1 gbps

auth:
  type: password
  password: user-password-1

masquerade:                       # ← fallback на настоящий сайт
  type: proxy
  proxy:
    url: https://example.com
    rewriteHost: true
  

2.4. Masquerade — fallback как у Reality

Если на сервер прилетит UDP-пакет без правильного password (active probe) — сервер отвечает как обычный HTTP/3-сайт. Probe видит «нормальный сайт» — не подозревает.

Можно настроить masquerade как:

3. TUIC v5

TUIC (EAimTY, 2022, версия 5 в 2023) — другая команда, тоже QUIC-based. Идея похожа на Hysteria, но более «proxy-ориентированная» (без agressive CC, без port hopping). Фокус — простота и стабильность.

СвойствоHysteria 2TUIC v5
БазаHTTP/3 + QUICЧистый QUIC
Congestion ControlBBR/Cubic/BrutalBBR/Cubic
Port hoppingДаНет
ObfuscationSalamanderЧерез QUIC encryption
Masquerade fallbackДаНет
Скорость на плохом каналеЛучше (Brutal)Хорошая
Сложность настройкиПростаяПростая
Поддержка клиентамиВсе основные (sing-box, NekoBox, Hiddify)Все основные

Для большинства задач — Hysteria 2 предпочтительнее. TUIC хорош как «попроще».

4. MASQUE — будущее QUIC-VPN

MASQUE (Multiplexed Application Substrate over QUIC Encryption) — стандарт IETF на «нормальный» способ туннелировать произвольный трафик через QUIC. RFC 9298 (CONNECT-UDP), 9484 (CONNECT-IP), draft-ohai (Oblivious HTTP).

Главная фишка — это стандарт. То есть Cloudflare, Google, Apple — могут добавить поддержку в свои CDN и облачные сервисы. Тогда VPN через MASQUE выглядит как «нормальный HTTP/3 трафик к CF» — статистически неотличим, потому что им же является.

В 2024-2026 пока MASQUE — это:

Почему это «будущее»

MASQUE становится частью legit интернета (CDN, мобильники, корпорат). Если DPI решит блокировать MASQUE — заблокирует iCloud Private Relay для миллионов iPhone-юзеров. Политически невозможно.

Сейчас (2025-2026) пока не массово, но через 2-3 года ожидается, что это станет основным способом обхода блокировок.

5. Когда UDP-туннели лучше / хуже TCP

СценарийПобедительПочему
Стабильный домашний интернетReality (TCP)Меньше overhead, лучше fingerprint
Мобильный 4G/5GHysteria 2 (UDP)Connection migration, нет HoL blocking
Wi-Fi отеля / общественныйHysteria 2 (UDP)Потери лучше переносятся
Сеть с QoS на UDPReality (TCP)UDP режется по приоритету
Видео-вызовы через VPNHysteria 2 (UDP)Низкий jitter
Скачивание больших файловHysteria 2 + BrutalИгнорирует «фальшивый» congestion signal
На корп.сетях с проксиReality (TCP)UDP часто блокируется в офисе
Иран (UDP временно блокируется)RealityКогда Иран рубит UDP — TCP остаётся

6. Мини-лаба: попробуй прямо сейчас

Проверь, доступен ли UDP/QUIC в твоей сети — от этого зависит, заработает ли Hysteria вообще:

# 1. Ходит ли у тебя вообще HTTP/3 (QUIC)? Если да — Hysteria/TUIC имеют шанс.
curl -sI --http3 https://cloudflare.com 2>/dev/null | head -1
curl -sI https://cloudflare.com | grep -i alt-svc   # h3=":443" — сервер зовёт на QUIC

# 2. Не режет ли провайдер UDP/443? Постучись UDP-пробой (нужен nmap)
sudo nmap -sU -p 443 cloudflare.com
# open|filtered — UDP проходит; filtered/closed везде — QUIC душат, выбирай Reality

# 3. Идея port hopping вручную: посмотри, сколько UDP-портов «живут» у крупного сервиса
# игры и видеозвонки используют широкие UDP-диапазоны — именно в этой толпе прячется Hysteria
ss -u -a | head          # свои UDP-сокеты (Zoom/Discord/игры создают их пачками)

# 4. Сравни задержку TCP vs предполагаемого UDP-пути
ping -c 5 cloudflare.com
Ожидаемый результат

Если пункт 1 показал HTTP/3 и alt-svc: h3, а пункт 2 — что UDP/443 проходит, значит QUIC-туннель в твоей сети поднимется, и Hysteria 2 с Brutal даст выигрыш на потерях. Если же UDP везде filtered — провайдер душит QUIC (частый приём), и надо идти на TCP-Reality: это ровно тот выбор из таблицы раздела 5. Пункт 3 показывает, почему port hopping работает: твой UDP-трафик теряется среди сотен портов игр и видеозвонков, и заблокировать диапазон без ущерба легитимным сервисам провайдер не может.

7. Задачи самопроверки — реши, потом раскрой ответ

Задача 1. Пользователь жалуется: Reality на домашней оптике летает, а с того же ноутбука в поезде (LTE, потери 5–8%) еле шевелится. Почему и что предложить?

На канале с потерями TCP-туннель страдает вдвойне: внешний TCP и внутренний TCP сайта наслаивают ретрансмиты и урезание окна (TCP meltdown + head-of-line blocking), а при скачках сети соединение рвётся. Предложить QUIC-туннель (Hysteria 2/TUIC): независимые потоки не блокируют друг друга, connection migration переживает смену вышек, а Brutal не сбрасывает скорость от «фальшивых» сигналов перегрузки. На оптике же оставить Reality — там QUIC-оверхед не нужен.

Задача 2. Brutal даёт 2–5× ускорение, «игнорируя congestion control». Почему это не «бесплатный обед» и где Brutal вредит?

Brutal не подстраивается под сеть, а гонит заданный битрейт, игнорируя потери и сигналы перегрузки. На bottleneck-канале он отжимает полосу у честных TCP-соединений, которые снижают скорость (несправедливость): дома это ударит по Zoom/играм соседей по каналу, на shared-линке — по всем. Плюс если реальная перегрузка настоящая, Brutal усугубляет потери. Это инструмент для собственного узкого мобильного канала, а не для общих линий.

Задача 3. Провайдер блокирует конкретный UDP-порт твоего Hysteria. Как port hopping это переживает и почему провайдер не блокирует «весь диапазон»?

Сервер слушает широкий диапазон (например, 20000–50000), клиент каждые несколько секунд переходит на новый порт — заблокированный порт уже не используется. Блокировать весь диапазон 30 000 UDP-портов на IP провайдер не станет: там живёт легитимный UDP (онлайн-игры, видеозвонки, WebRTC), и глухой блок дал бы массу ложных срабатываний и жалоб. Hysteria прячется именно в этой «толпе».

Задача 4. Чем Salamander obfuscation отличается от masquerade, и против какого эшелона DPI работает каждый?

Salamander — XOR-обфускация каждого UDP-пакета общим ключом: убирает узнаваемый QUIC-заголовок, чтобы passive-DPI не опознал «это QUIC/Hysteria» по первым байтам (против пассивного отпечатка). Masquerade — поведение сервера на пробу без валидного пароля: он отвечает как настоящий HTTP/3-сайт (против active probing), ровно как fallback у Reality. Разные эшелоны из урока 5: один прячет форму пакета, другой — реакцию сервера на проверку.

Задача 5. Почему MASQUE называют «будущим», хотя сегодня Reality/Hysteria практичнее — и в чём его политическая сила?

MASQUE — стандарт IETF (CONNECT-UDP/CONNECT-IP поверх HTTP/3), который уже встроен в массовые сервисы: iCloud Private Relay, частично Cloudflare WARP. Его трафик НЕ имитирует легитимный HTTP/3, а является им, идя через реальные CDN. Политическая сила: заблокировать MASQUE = сломать iCloud Private Relay миллионам обычных iPhone-пользователей, что бьёт по всей стране, а не по «обходчикам». Пока не массово как инструмент обхода, но по мере распространения его цена блокировки растёт.

8. Словарик урока

QUICтранспорт поверх UDP со встроенным TLS 1.3; независимые потоки, миграция, 0-RTT
Hysteria 2QUIC/HTTP-3-туннель с Brutal, port hopping, Salamander, masquerade
TUIC v5более простой QUIC-туннель: стабильность без агрессивного CC и port hopping
TCP meltdownдеградация «TCP поверх TCP»: два слоя надёжности конфликтуют на потерях
head-of-line blockingв TCP одна потеря тормозит весь поток; QUIC разводит потоки независимо
connection migrationQUIC-сессия переживает смену IP/сети без переустановки
BBR Brutalагрессивный congestion control: держит заданный битрейт, игнорируя сигналы перегрузки
port hoppingпостоянная смена UDP-порта из широкого диапазона против блока по порту
SalamanderXOR-обфускация UDP-пакетов, скрывающая QUIC-сигнатуру
masqueradefallback: ответ на пробу как настоящий HTTP/3-сайт (против active probing)
MASQUEIETF-стандарт проксирования UDP/IP поверх HTTP/3; основа iCloud Private Relay
QUIC даёт туннелю то, чего нет у TCP: независимые потоки без HoL, миграцию соединения и подменяемый congestion control. Hysteria 2 добавляет Brutal (скорость на потерях), port hopping (против блока по порту), Salamander (против passive-детекта) и masquerade (против active probing). Но UDP — «необязателен»: где провайдер душит QUIC, побеждает TCP-Reality. Выбор туннеля — это выбор под сеть, а не «что новее». MASQUE — стратегическая ставка на будущее.

9. Дальше

Это «топ-1%» современных протоколов. Следующий урок (09) — Shadowsocks-AEAD-2022, ShadowTLS, AmneziaWG. Это решения попроще, но всё ещё уверенно работающие в РФ. Полезно знать их как fallback, когда Reality/Hysteria по какой-то причине не подходят.