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, обфускацию каждого пакета.
- Что такое QUIC и почему он идеальная база для VPN-туннеля
- BBR vs CUBIC, и почему Hysteria использует Brutal
- Hysteria 2 — формат пакета, port hopping, salamander obfuscation
- TUIC v5 — альтернатива от другой команды
- MASQUE / HTTP-CONNECT-UDP — стандарт IETF, «нормальный» способ через CDN
- Когда UDP-туннели лучше TCP, когда хуже
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. Главные свойства:
- Шифрование встроено (TLS 1.3 интегрирован в протокол)
- 0-RTT / 1-RTT handshake — быстрый старт
- Multiplexing без head-of-line blocking — потеря в одном стриме не тормозит другие
- Connection migration — клиент сменил IP/Wi-Fi → соединение не рвётся
- Congestion control в userspace — можно подменить алгоритм (BBR, Cubic, Brutal)
Для VPN это идеально: меньше latency, лучше работает на потерях, легко обновлять без kernel patches.
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 как:
proxy— реверс-прокси на настоящий сайт (например, github.com)file— отдавать статический контент из директорииstring— отдавать заданный ответ
3. TUIC v5
TUIC (EAimTY, 2022, версия 5 в 2023) — другая команда, тоже QUIC-based. Идея похожа на Hysteria, но более «proxy-ориентированная» (без agressive CC, без port hopping). Фокус — простота и стабильность.
| Свойство | Hysteria 2 | TUIC v5 |
|---|---|---|
| База | HTTP/3 + QUIC | Чистый QUIC |
| Congestion Control | BBR/Cubic/Brutal | BBR/Cubic |
| Port hopping | Да | Нет |
| Obfuscation | Salamander | Через 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 — это:
- iCloud Private Relay (Apple, уже работает с 2021) — это MASQUE-based
- Cloudflare WARP — частично MASQUE
- Open-source реализации: quic-go/masque-go
MASQUE становится частью legit интернета (CDN, мобильники, корпорат). Если DPI решит блокировать MASQUE — заблокирует iCloud Private Relay для миллионов iPhone-юзеров. Политически невозможно.
Сейчас (2025-2026) пока не массово, но через 2-3 года ожидается, что это станет основным способом обхода блокировок.
5. Когда UDP-туннели лучше / хуже TCP
| Сценарий | Победитель | Почему |
|---|---|---|
| Стабильный домашний интернет | Reality (TCP) | Меньше overhead, лучше fingerprint |
| Мобильный 4G/5G | Hysteria 2 (UDP) | Connection migration, нет HoL blocking |
| Wi-Fi отеля / общественный | Hysteria 2 (UDP) | Потери лучше переносятся |
| Сеть с QoS на UDP | Reality (TCP) | UDP режется по приоритету |
| Видео-вызовы через VPN | Hysteria 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. Словарик урока
9. Дальше
Это «топ-1%» современных протоколов. Следующий урок (09) — Shadowsocks-AEAD-2022, ShadowTLS, AmneziaWG. Это решения попроще, но всё ещё уверенно работающие в РФ. Полезно знать их как fallback, когда Reality/Hysteria по какой-то причине не подходят.