Разбор архитектуры, Brutal-алгоритма, Salamander-обфускации и честный ответ — почему это работает в 2026-м и при каких условиях падает.
Большинство статей про Hysteria 2 написаны по одному шаблону: «быстро, просто, ставится за 5 минут, вот конфиг». Это не такая статья.
Я хочу разобрать что именно происходит на уровне протокола, почему выбранные инженерные решения работают против современных DPI-систем, и где у этого протокола настоящие слабые места — которые вендор в документации деликатно обходит стороной.
Если тебе нужен гайд «скопируй конфиг и запусти» — закрывай вкладку. Если интересно почему это работает — читай дальше.
Фундамент: почему QUIC, а не TCP
Hysteria 2 построена поверх QUIC. Это не случайный выбор и не дань моде — это инженерное решение с конкретными последствиями.
QUIC (RFC 9000) — протокол транспортного уровня, разработанный Google и стандартизированный в 2021-м. Работает поверх UDP. Внутри реализует всё то, что раньше было в TCP + TLS: мультиплексирование потоков, контроль перегрузки, надёжная доставка, шифрование. HTTP/3 — это HTTP поверх QUIC.
Зачем это нужно для обхода блокировок?
TCP-соединение блокируется легко. Цензор видит SYN-пакет, решает что соединение подозрительное, посылает RST в обе стороны — всё, соединение разорвано. Дёшево, надёжно, работает годами.
С UDP история другая. UDP stateless: нет рукопожатия, нет установки соединения, нет очевидного «момента начала». Послать RST некуда. Чтобы заблокировать UDP-поток, надо либо заблокировать весь UDP на порту (грубо, с коллатеральными потерями), либо анализировать содержимое каждого пакета (дорого, с задержкой). Hysteria 2 эксплуатирует именно эту разницу в стоимости блокировки.
Но есть нюанс, к которому мы вернёмся.

Brutal: когда потери пакетов работают на тебя
Стандартные алгоритмы контроля перегрузки — BBR, CUBIC, Reno — при обнаружении потерь пакетов снижают скорость отправки. Логика: потери значат перегрузку сети, надо уступить.
Hysteria использует собственный алгоритм — Brutal.
Brutal работает наоборот. При обнаружении потерь он увеличивает скорость отправки, компенсируя потери избыточным количеством пакетов. Клиент объявляет серверу желаемую скорость получения (rx rate) при аутентификации. Сервер пытается её обеспечить любой ценой — в том числе через избыточную отправку с расчётом на то, что часть пакетов доберётся.

Это полезно в двух сценариях:
Нестабильные каналы — мобильный интернет, спутник, сети с реальными потерями пакетов. Там, где обычный TCP деградирует до черепашьей скорости, Brutal держит заявленную пропускную способность.
Искусственные потери — некоторые провайдеры в Китае и России применяют rate limiting через намеренные потери пакетов вместо прямой блокировки. Brutal это ломает: провайдер дропает 30% пакетов, Hysteria просто отправляет в 1.4x больше.
Звучит агрессивно — потому что так и есть. На стороне сервера Brutal легко создаёт нагрузку на аплинк, которая заметна. При неправильной настройке bandwidth параметра сервер будет флудить канал независимо от реальной ситуации с сетью.
# Без этого Brutal не включается — используется BBR bandwidth: up: 20 mbps down: 100 mbps
Маскировка: два режима с разной философией
Здесь начинается самое интересное — и самое часто неправильно понимаемое.
У Hysteria 2 два принципиально разных подхода к маскировке трафика. Они несовместимы между собой. И выбор между ними — это выбор между разными моделями угроз.

Режим 1: Masquerade (без obfs)
Сервер работает как настоящий HTTP/3 сервер. Если к нему подключиться браузером или curl — он отвечает. По умолчанию возвращает 404, но можно настроить реверс-прокси на реальный сайт.
masquerade: type: proxy proxy: url: https://www.bing.com rewriteHost: true
В этом режиме сервер буквально отдаёт страницы HackerNews любому, кто зайдёт на него браузером. DPI-система делает активное зондирование — получает валидный HTTP/3-ответ. Подозрений нет.
Слабое место: стандартный QUIC-трафик с правильными сертификатами и fingerprint всё равно имеет статистические отличия от трафика реального браузера. Межпакетные интервалы другие. Паттерн запросов другой. ML-классификатор это замечает — не сейчас, но в перспективе.
Режим 2: Salamander obfuscation
Salamander оборачивает QUIC-пакеты в дополнительный слой, который инжектирует рандомные «шумовые» пакеты рядом с легитимными данными (меняет структуру начала соединения) . Классификатор трафика не может построить надёжную статистическую модель — данные слишком зашумлены.
textobfs: type: salamander salamander: password: your_obfs_password
Но есть критический момент из документации:
https://github.com/apernet/hysteria/discussions/1115
Enabling obfuscation will make your server incompatible with standard QUIC connections and it will no longer function as a valid HTTP/3 server.
С включённой Salamander сервер не отвечает на стандартные QUIC-запросы. Активное зондирование — молчание. Это само по себе подозрительно для продвинутых DPI-систем: сервер не говорит ни на одном известном протоколе.

Дилемма: masquerade без obfs — хорошая маск��ровка, но уязвим к статистическому анализу. Salamander с obfs — хаотичный трафик, но нет легенды при зондировании.
Правильный выбор зависит от того, против чего именно ты защищаешься. На большинстве российских провайдеров в 2026-м Salamander даёт лучший результат — ТСПУ активно детектирует QUIC-паттерны, и obfs на уровне Initial пакетов ломает эту детекцию раньше, чем она случается.
Port hopping: изящное решение, которое требует рук
Разработчики Hysteria заметили специфику китайского GFW: при детектировании подозрительного протокола блокируется не IP-адрес целиком, а пара IP+порт. Это даёт лазейку.
Port hopping — клиент прыгает между портами при неудачных соединениях. Важно понять архитектуру: сервер не слушает на диапазоне портов самостоятельно. Он слушает на одном порту (например 443), а диапазон настраивается через перенаправление на уровне iptables/nftables:
# nftables на сервере — обязательно, без этого port hopping не работает define INGRESS_INTERFACE = "eth0" define PORT_RANGE = 20000-50000 define HYSTERIA_PORT = 443 table inet hysteria_porthopping { chain prerouting { typtexte nat hook prerouting priority dstnat; policy accept; iifname $INGRESS_INTERFACE udp dport $PORT_RANGE \ counter redirect to :$HYSTERIA_PORT } }
На клиенте нужна секция transport с hopInterval:
transport: udp: hopInterval: 30s # минимум 5s, дефолт 30s server: your.server.com:20000-50000

Важный практический момент: sing-box как клиент port hopping для Hysteria2 не поддерживает и поддерживать не планирует. Если используешь sing-box — эта фича недоступна. Нужен нативный hysteria2 клиент.
В российском контексте port hopping менее эффективен чем в Китае: ТСПУ блокирует по паттерну трафика, а не по IP+порт. Но против провайдеров, которые режут конкретные порты — работает.
Где Hysteria 2 ломается в 2026-м
Честная часть, которую обычно не пишут.
Проблема 1: QUIC-блокировки
Ряд российских провайдеров режет UDP трафик на 443 порту или замедляет QUIC в целом. Hysteria 2 в базовой конфигурации на таких провайдерах работает хуже TCP-based протоколов или не работает вообще. Это не баг — это фундаментальное ограничение UDP-based архитектуры. FakeTCP режим (когда UDP-пакеты маскируются под TCP-заголовки) теоретически решает эту проблему — но поддерживается только на Linux и требует root. На практике это не «включил и забыл» опция.
Проблема 2: аномальный bandwidth
Brutal генерирует трафик-паттерн, который статистически нетипичен для браузерного HTTPS. Постоянный высокий throughput без пауз, характерных для рендеринга страниц — это подпись. ML-классификатор, обученный на реальном HTTP/3 трафике браузеров, отличит Hysteria 2 от Chrome с хорошей точностью.
Проблема 3: obfs несовместимость
При включённом Salamander сервер не отвечает на стандартные запросы. Активное зондирование возвращает тишину. ТСПУ умеет интерпретировать молчание как подозрение — именно так детектируется часть Shadowsocks-серверов. Это не решённая проблема.
Неудобный вопрос без ответа
Hysteria 2 с Brutal работает отлично в нестабильных сетях с реальными потерями. Но в стабильной московской или питерской сети с низкими потерями — Brutal избыточен и создаёт аномальный трафик-паттерн.
Получается: сильнейшая фича протокола одновременно является его главной детектируемой сигнатурой при хорошем канале.
Я не знаю, как это правильно решить в рамках текущей архитектуры. Возможно, никак — это фундаментальный компромисс.
Когда использовать Hysteria 2, а когда нет
Сценарий |
Hysteria 2 |
Альтернатива |
|---|---|---|
Нестабильный канал, потери >5% |
Отлично |
VLESS деградирует |
Провайдер режет UDP/QUIC |
Плохо |
VLESS + XHTTP |
Нужна максимальная скрытность |
Средне |
VLESS + Reality |
Скорость важнее стелса |
Отлично |
— |
Мобильный интернет |
Хорошо |
— |
Корпоративный файрвол без UDP |
Не работает |
Любой TCP-based |
Конфиг, который реально работает в 2026-м
# Сервер listen: :443 tls: cert: /path/to/cert.pem key: /path/to/key.pem auth: type: password password: strong_password_here masquerade: type: proxy proxy: url: https://www.bing.com rewriteHost: true quic: initStreamReceiveWindow: 26843545 maxStreamReceiveWindow: 26843545 initConnReceiveWindow: 67108864 maxConnReceiveWindow: 67108864
# Клиент — с port hopping server: your.server.com:20000-50000 auth: strong_password_here tls: sni: your.server.com insecure: false bandwidth: up: 20 mbps down: 100 mbps transport: udp: hopInterval: 30s socks5: listen: 127.0.0.1:1080
Что дальше
Hysteria 2 — это не замена VLESS+Reality для максимального стелса. Это другой инструмент с другими компромиссами: скорость и устойчивость к потерям в обмен на более заметный трафик-паттерн.
В арсенале имеет смысл держать оба. Hysteria 2 на хорошем UDP-канале даёт скорости, которые TCP-based протоколы просто не могут обеспечить физически. VLESS+Reality — когда нужна маскировка.
Код открытый: github.com/apernet/hysteria.
Документация честная — слабые места там признаются, что само по себе редкость в этой экосистеме :)
Если есть идеи для разбора, нашёл ошибку в конфиге
или хочешь предложить тему — пиши на
aleksandr@murzin.digital. Отвечаю.
Комментарии (37)

vegas_daniel
10.03.2026 10:50Спасибо Вам за пост!
Подскажите пожалуйста:
1) "Masquerade без obfs — хорошая маскировка, но уязвим к статистическому анализу
Salamander с obfs — хаотичный трафик, но нет легенды при зондировании"
Правильный выбор зависит от того, против чего именно ты защищаешься.
На большинстве российских провайдеров в 2026-м Salamander даёт лучший результат — ТСПУ активно детектирует QUIC-паттерны, и obfs на уровне Initial пакетов ломает эту детекцию раньше, чем она случается."
На основании вышесказанного, делаю вывод, что в текущих реалиях вариант с обфускацией в приоритете. Подскажите пожалуйста, в сравнении Salamander с obfs VS AmneziaWG 2.0.
Я понимаю логику, что внешне шум, внутри разное, но в контексте реальных блокировок в чем Hysteria2 выигрывает или наоборот?
На практике, как вижу, awg вполне себе хорошо справлчется с блокировками, хочется понимать разницу.
2) Насколько критично, какой sni указан в Hysteria2? Как это анализируется?
3) Hysteria2 = VLESS+XHTTP+QUIC
на данный момент это так или нет?
4) Я был склонен именно к первому варианту (Masquerade без obfs), ввиду мимикрии под что-то реальное, а не шум. Я Вас правильно понял, что в текущих реалиях по паттернам будет видно, что это не реальный QUIC HTTP/3?
И сюда же, возможно, чтобы сливаться с толпой, Brutal просто отключать?
cyberscoper Автор
10.03.2026 10:50Спасибо за ревью и вопросы, отвечаю вам по пунктам.
1. Salamander vs AWGAWG на практике сейчас стабильнее и ты это сам видишь. Hysteria 2 берёт своё только там, где канал нестабильный и Brutal реально нужен. На нормальном канале в РФ AWG проще, меньше движущихся частей, меньше что сломается.
2. SNI
Важно, но не критично само по себе. Проблема в несоответствии: если SNI говорит «я Apple», а IP твоего сервера из Hetzner Frankfurt — это видно. Выбирай донора, чьи серверы физически рядом с твоим VPS по географии.
3. Hysteria 2 vs VLESS+XHTTP
Нет, это разное. Hysteria 2 это отдельный протокол со своей кодовой базой, своим QUIC и Brutal. VLESS+XHTTP — это Xray-core с HTTP/2-3 транспортом. Внешне похоже, внутри совсем другое.
4. Твоя интуиция про Masquerade + без Brutal
Правильная. Masquerade даёт живой HTTP/3-ответ при зондировании — это реальная защита. Brutal этот же трафик демаскирует поведенчески. Если убрать Brutal и оставить BBR теряешь скорость, но трафик становится ближе к нормальному браузеру. На стабильном канале это честный и рабочий компромисс.

vegas_daniel
10.03.2026 10:50Супер, спасибо
Ну вот да, AmneziaWG, вроде норм, а мало как-то про нее в целом и в сравнение сейчас, больше про более сложные варианты.
По поводу SNI вообще сложная эта грань)
Вроде, и вообще особо упарываться не нужно по подбору, даже в реалити - с одной стороны, а с другой - кто-то наоборот сильно парится и даже в Hysteria2.
Я думаю, сейчас по простоте и проходимости логично использовать AWG 2.0, Reality и Hysteria2 именно без obfs. Это как 3 основные варианта при разных блокировках в моменте.
Также опционально тестить Brutal на нестабильных каналах.
На перспективу еще бы смотрел на TrustTunnel, Naive, TUIC
ну и в целом как подходы VLESS "steal from yourself" и каскадная цепочка.
Еще чем хороша AWG - что много трафа не блочат такого рода (неопознанного UDP) - например игры, WebRTC, VoIP, Torrents, IoT и т.д., а на этом поле AWG действительно хорош и особо нет смысла в той же Hysteria2+obfs.
Подскажи плиз подробнее про вот эту часть: "Masquerade без obfs — хорошая маскировка, но уязвим к статистическому анализу".
Я понял эту часть, будто не совсем честный QUIC выдаёт Hysteria2 голая, или не в этом мысль?
"ТСПУ активно детектирует QUIC-паттерны" - все же блочится честный QUIC? Ведь он и в vk и прочих "хороших" сервисах
Еще жду, чтоб Hysteria2 появилась в 3x-ui в инбаундах
вроде, интегрировали, должны сделать
s5384
10.03.2026 10:50Trust tunnel, naive, awg - это всё рушится белым списком IP. Стоит приглядеться к DNSTT и похожим разработкам. Например, к slipstream, который разительно быстрее DNSTT.
На некоторых операторах данные протоколы, если их так можно назвать, даже без оплаты связи работают и во время действия белых списков.
Поэтому, на мой взгляд, будущее за технологиями по типу DNSTT или IP из белого списка. А имея подходящий IP, сам туннель душить меньше будут, любой простейший vless конфиг подойдёт

ChilliWil
10.03.2026 10:50Если пропихивать TCP трафик через TXT или A-записи DNS запросов (по 200 байт на пакет), то получим дичайшие задержки и скорость на уровне модемов 90. Хватит только на чтение текстового телеграма, ютуб вы через это не посмотрите)

David_Osipov
10.03.2026 10:50Интересная штука, но всё ломается о проблему 1 - QUIC. Там SNI зашифрован и цензор просто блочит всё, что без SNI. Правда с таким подходом эта тулза конкурирует с WG по скорости, только подтянута обфускация и логика (и не заброшена)

runetfreedom
10.03.2026 10:50В QUIC SNI передаётся в TLS ClientHello, а первый ClientHello идёт в Initial-пакетах QUIC. Эти пакеты формально защищены, но их ключи выводятся из значений, видимых на сети, и спецификация прямо говорит, что Initial не имеют эффективной конфиденциальности. На уровне MitM возможно восстановить ключи и прочитать содержимое, включая SNI.
ТСПУ это поддерживает, но это требует ресурсов, так что по умолчанию QUIC блокируется. Но на ТСПУ можно разблокировать внеся в QUIC List

maxwolf
10.03.2026 10:50Я, конечно, не настоящий сварщик, но, на мой взгляд, разговоры про ML-классификаторы трафика - это (пока, по крайней мере) наукообразные страшилки. Если приборы не справляются с простой сборкой порезанных/перемешанных пакетов, то как они будут в ML-классификацию?
Когда речь идёт о "паттернах запросов", то, как правило, имеется в виду содержимое ключевых пакетов в сессии (Client/Server Hello etc.). Там, если кто не в курсе, передаётся дофига информации, её легко/быстро выпарсить и проверить. Она устойчива и отличается для разных клиентов (FF/Chrome/Curl/Win/Android etc.), если, конечно, не предпринимать специальных усилий по "имперсонации". Максимум - длины первых N пакетов. В проверку же "межпакетных интервалов", как массовое явление, лично я - не верю. Если для проводного интернета тут ещё можно делать какие-то предположения, то для мобильного - крайне сомнительно.
А с практической точки зрения, думаю, будет работать или брутфорс (что-нибудь типа port hopping) или мимикрия под "легальный" трафик. Причём, не полированная под какой-то один шаблон, а перебирающая разные (типа поиска sni или параметров вивисекции пакетов в запрете).

ne_pridumal_nik
10.03.2026 10:50Я предполагаю, что случайные пакеты будут обрабатываться - с помощью какой-нибудь ПЛИС подключат с записанной на него моделью

Alexufo
10.03.2026 10:50"наукообразные страшилки" - соглашусь, ведь при этом подходе должны быть ложноположительные срабатывания, а это поломает интернет.

runetfreedom
10.03.2026 10:50Ряд российских провайдеров режет UDP трафик на 443 порту или замедляет QUIC в целом.
На самом деле не ряд провайдеров, а буквально все. Это архитектурная особенность ТСПУ. HTTP/3 по умолчанию блокируется и его нужно разрешить явно добавлением в QUIC list
Так что протокол совершенно бесполезен в РФ.

zarazaexe
10.03.2026 10:50naive proxy лучше

ne_pridumal_nik
10.03.2026 10:50Чем?

nidalee
10.03.2026 10:50Тем, что не QUIC, который блочится просто потому, что QUIC. Не совсем понятно, для каких целей вообще разрабатывать способ обхода на изначально заблокированном протоколе. Может быть не для РФ?

zarazaexe
10.03.2026 10:50всем
почти что единственный в мире протокол который почти невозможно заблокировать не задев деф трафик / не применяя эвристики по времени подключения и размеру пакетов

Diverso
10.03.2026 10:50Так всем, или только этим? Как-то сомнительно, что, например, иметь оверхед, которого нет в xtls, или tcpшные задержки, которых нет в протоколах на udp - это прям лучше, чем их не иметь.

Ban228
10.03.2026 10:50Текст нейрона писала? Чувство такое есть

rimashi
10.03.2026 10:50Мне кажется какую-то часть) тоже заметил. Может автор в моменте решил добавить "воды" или дополнить текст. В любом случае, не вся статья написана ИИ, что уже отчасти редкость для хабра..

trojan-tj
10.03.2026 10:50И мне заметно это сильно. Комменты за автора тоже нейросеть пишет.
Эх, оказывается, до недавнего времени хабр был ещё "торт", хотя много говорили, что уже нет.

cyberscoper Автор
10.03.2026 10:50Нет.
Просто есть какой то феномен когда везде начинают мерещиться – нейросети, такое время.
«напиши пж комментарий чтобы ему ответить»
trojan-tj
10.03.2026 10:50Я ежедневно час-полтора в день читаю Хабр (с 2009 года), а также множество других ресурсов и литературы. Да, нейросети уже более-менее сносно пишут и многим даже незаметно это, но поверьте, пока ещё сильно бросается в глаза этот робо-стиль текста) я подумал, что может я ошибся все таки, глянул одним глазом на другие ваши статьи - нет, не ошибся.
А юмор оценил))

12345egor
10.03.2026 10:50Спасибо за статью. Как раз хотел почитать понятным языком про истерию, но было лень искать - а тут статья сама меня нашла.
Правда так и не смог для себя определить стоит ли попробовать поднять отдельный сервер с ней. Вроде бы и так имею хорошо замаскированный обратный прокси с VLESS, на скорость не жалуюсь даже на парковке (разве что задержка при открытии страниц и обновлении ленты высоковата как будто бы).

cyberscoper Автор
10.03.2026 10:50Всегда лучше иметь в запасе, «план Б» чтобы уже по ситуации не решать.

qwertypromes
10.03.2026 10:50Поставил эту истерию месяц назад и она отпала уже через пару дней, что на ВПС что у провайдера.

Brunettake1
10.03.2026 10:50Если вам нужна помощь в восстановлении разрушенных отношений или брака, или вы хотите вернуть любимого человека, вы можете обратиться за помощью к доктору Оману.
Электронная почта: miraculoussolutionhome@yahoo.com
Вы также можете позвонить ему или написать в WhatsApp:
http://wa.me/+66836855474
VADemon
10.03.2026 10:50У меня оборваны все связи с сервером. Доктор Оман из спамерского сообщения поможет "в восстановлении разрушенных отношений"?

cyberscoper Автор
10.03.2026 10:50Давайте попробуем не раздумывать об этом, но если это бот то интересно как он технически реализован.

ChilliWil
10.03.2026 10:50Прыжки по портам шикарная фича для Китая, но в РФ ТСПУ анализирует протоколы, а не порты, поэтому у нас не имеет особого практического смысла заворачивать iptables на сервере ради хоппинга в 2026 году , только лишняя нагрузка на netfilter

KivApple
10.03.2026 10:50Интересно, почему массово не используют обычные веб-сокеты. В них же можно гнать произвольный бинарный трафик. А реализацию самого веб-сокета брать готовую и не нужно специально маскироваться. Плюс можно попытаться спрятаться за каким-нибудь российским CDN, так как трафик легальный HTTP по всем стандартам.
over_Dude
Материал подан интересно, в практическом плане чего ожидать?
cyberscoper Автор
Реализуемо! Можете оформить фолоу (чтобы не пропустить) на мой профиль и обязательно как у меня освободится окошко я напишу практическую часть.
hochbar
Ждем
Kimblee
А вот как чайнику, который с ИИ заводил xray будет очень сложно самому поднять истерию?
neodavinchi
Возможно поможет: https://habr.com/ru/articles/776402/, но статье 2 года. Сам не ставил.