Разбор архитектуры, 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)


  1. over_Dude
    10.03.2026 10:50

    Материал подан интересно, в практическом плане чего ожидать?


    1. cyberscoper Автор
      10.03.2026 10:50

      Реализуемо! Можете оформить фолоу (чтобы не пропустить) на мой профиль и обязательно как у меня освободится окошко я напишу практическую часть.


      1. hochbar
        10.03.2026 10:50

        Ждем


      1. Kimblee
        10.03.2026 10:50

        А вот как чайнику, который с ИИ заводил xray будет очень сложно самому поднять истерию?


        1. neodavinchi
          10.03.2026 10:50

          Возможно поможет: https://habr.com/ru/articles/776402/, но статье 2 года. Сам не ставил.


  1. Dhwtj
    10.03.2026 10:50

    Соревнование брони и снаряда


    1. hochbar
      10.03.2026 10:50

      Соревнование брони и самоблокированного а*уса


  1. 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 просто отключать?


    1. cyberscoper Автор
      10.03.2026 10:50

      Спасибо за ревью и вопросы, отвечаю вам по пунктам.

      1. Salamander vs AWG

      AWG на практике сейчас стабильнее и ты это сам видишь. 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 теряешь скорость, но трафик становится ближе к нормальному браузеру. На стабильном канале это честный и рабочий компромисс.


      1. 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 в инбаундах
        вроде, интегрировали, должны сделать


        1. s5384
          10.03.2026 10:50

          Trust tunnel, naive, awg - это всё рушится белым списком IP. Стоит приглядеться к DNSTT и похожим разработкам. Например, к slipstream, который разительно быстрее DNSTT.

          На некоторых операторах данные протоколы, если их так можно назвать, даже без оплаты связи работают и во время действия белых списков.

          Поэтому, на мой взгляд, будущее за технологиями по типу DNSTT или IP из белого списка. А имея подходящий IP, сам туннель душить меньше будут, любой простейший vless конфиг подойдёт


          1. ChilliWil
            10.03.2026 10:50

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


  1. David_Osipov
    10.03.2026 10:50

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


    1. runetfreedom
      10.03.2026 10:50

      В QUIC SNI передаётся в TLS ClientHello, а первый ClientHello идёт в Initial-пакетах QUIC. Эти пакеты формально защищены, но их ключи выводятся из значений, видимых на сети, и спецификация прямо говорит, что Initial не имеют эффективной конфиденциальности. На уровне MitM возможно восстановить ключи и прочитать содержимое, включая SNI.

      ТСПУ это поддерживает, но это требует ресурсов, так что по умолчанию QUIC блокируется. Но на ТСПУ можно разблокировать внеся в QUIC List


  1. maxwolf
    10.03.2026 10:50

    Я, конечно, не настоящий сварщик, но, на мой взгляд, разговоры про ML-классификаторы трафика - это (пока, по крайней мере) наукообразные страшилки. Если приборы не справляются с простой сборкой порезанных/перемешанных пакетов, то как они будут в ML-классификацию?

    Когда речь идёт о "паттернах запросов", то, как правило, имеется в виду содержимое ключевых пакетов в сессии (Client/Server Hello etc.). Там, если кто не в курсе, передаётся дофига информации, её легко/быстро выпарсить и проверить. Она устойчива и отличается для разных клиентов (FF/Chrome/Curl/Win/Android etc.), если, конечно, не предпринимать специальных усилий по "имперсонации". Максимум - длины первых N пакетов. В проверку же "межпакетных интервалов", как массовое явление, лично я - не верю. Если для проводного интернета тут ещё можно делать какие-то предположения, то для мобильного - крайне сомнительно.

    А с практической точки зрения, думаю, будет работать или брутфорс (что-нибудь типа port hopping) или мимикрия под "легальный" трафик. Причём, не полированная под какой-то один шаблон, а перебирающая разные (типа поиска sni или параметров вивисекции пакетов в запрете).


    1. ne_pridumal_nik
      10.03.2026 10:50

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


    1. Alexufo
      10.03.2026 10:50

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


  1. runetfreedom
    10.03.2026 10:50

    Ряд российских провайдеров режет UDP трафик на 443 порту или замедляет QUIC в целом.

    На самом деле не ряд провайдеров, а буквально все. Это архитектурная особенность ТСПУ. HTTP/3 по умолчанию блокируется и его нужно разрешить явно добавлением в QUIC list

    Так что протокол совершенно бесполезен в РФ.


  1. zarazaexe
    10.03.2026 10:50

    naive proxy лучше


    1. ne_pridumal_nik
      10.03.2026 10:50

      Чем?


      1. nidalee
        10.03.2026 10:50

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


      1. zarazaexe
        10.03.2026 10:50

        всем

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


        1. Diverso
          10.03.2026 10:50

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


  1. Ban228
    10.03.2026 10:50

    Текст нейрона писала? Чувство такое есть


    1. rimashi
      10.03.2026 10:50

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


    1. trojan-tj
      10.03.2026 10:50

      И мне заметно это сильно. Комменты за автора тоже нейросеть пишет.

      Эх, оказывается, до недавнего времени хабр был ещё "торт", хотя много говорили, что уже нет.


      1. cyberscoper Автор
        10.03.2026 10:50

        Нет.

        Просто есть какой то феномен когда везде начинают мерещиться – нейросети, такое время.

        «напиши пж комментарий чтобы ему ответить»


        1. trojan-tj
          10.03.2026 10:50

          Я ежедневно час-полтора в день читаю Хабр (с 2009 года), а также множество других ресурсов и литературы. Да, нейросети уже более-менее сносно пишут и многим даже незаметно это, но поверьте, пока ещё сильно бросается в глаза этот робо-стиль текста) я подумал, что может я ошибся все таки, глянул одним глазом на другие ваши статьи - нет, не ошибся.

          А юмор оценил))


  1. 12345egor
    10.03.2026 10:50

    Спасибо за статью. Как раз хотел почитать понятным языком про истерию, но было лень искать - а тут статья сама меня нашла.

    Правда так и не смог для себя определить стоит ли попробовать поднять отдельный сервер с ней. Вроде бы и так имею хорошо замаскированный обратный прокси с VLESS, на скорость не жалуюсь даже на парковке (разве что задержка при открытии страниц и обновлении ленты высоковата как будто бы).


    1. cyberscoper Автор
      10.03.2026 10:50

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


  1. qwertypromes
    10.03.2026 10:50

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


  1. Brunettake1
    10.03.2026 10:50

    Если вам нужна помощь в восстановлении разрушенных отношений или брака, или вы хотите вернуть любимого человека, вы можете обратиться за помощью к доктору Оману.

    Электронная почта: miraculoussolutionhome@yahoo.com

    Вы также можете позвонить ему или написать в WhatsApp:
    http://wa.me/+66836855474


    1. cyberscoper Автор
      10.03.2026 10:50

      Сложно что то вам ответить.

      Буду честен.


    1. VADemon
      10.03.2026 10:50

      У меня оборваны все связи с сервером. Доктор Оман из спамерского сообщения поможет "в восстановлении разрушенных отношений"?


      1. cyberscoper Автор
        10.03.2026 10:50

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


  1. ChilliWil
    10.03.2026 10:50

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


  1. KivApple
    10.03.2026 10:50

    Интересно, почему массово не используют обычные веб-сокеты. В них же можно гнать произвольный бинарный трафик. А реализацию самого веб-сокета брать готовую и не нужно специально маскироваться. Плюс можно попытаться спрятаться за каким-нибудь российским CDN, так как трафик легальный HTTP по всем стандартам.