Hysteria 2 и Xray: настройка современного прокси-протокола для обхода блокировок

Разбираемся, как работает Hysteria 2, чем он отличается от Xray, как настроить сервер и клиент, использовать обфускацию и обойти ограничения.

Что такое Hysteria 2 и зачем он нужен

Hysteria 2 — это прокси-протокол, построенный на основе модифицированного QUIC. Он разработан для сетей с высокой потерей пакетов и нестабильным соединением. В отличие от традиционных TCP-прокси, Hysteria 2 использует UDP, что позволяет быстрее восстанавливать соединение и эффективнее использовать доступную полосу пропускания.

Основная особенность Hysteria 2 — алгоритм управления перегрузкой Brutal. Он не подстраивается под потери пакетов, как стандартный TCP, а поддерживает заданную скорость, что особенно полезно при нестабильном соединении. Это делает протокол популярным для обхода блокировок и использования в регионах с агрессивной фильтрацией трафика.

Hysteria 2 маскируется под HTTP/3, что затрудняет его обнаружение. Однако в некоторых сетях QUIC блокируется целиком, поэтому предусмотрена обфускация Salamander, превращающая трафик в случайные байты. Это помогает обойти блокировки, но может привлечь внимание, если в сети блокируют неизвестные UDP-протоколы.

Как Hysteria 2 интегрируется с Xray

Xray-core — это платформа для проксирования, поддерживающая множество протоколов. Начиная с версии 26.1.23, в Xray добавлена поддержка Hysteria 2 как входящего и исходящего протокола. Это позволяет использовать Hysteria 2 в связке с другими протоколами Xray, например, для балансировки нагрузки или маршрутизации.

Интеграция реализована через библиотеку apernet/quic-go — модифицированную версию QUIC с поддержкой управления перегрузкой Brutal. В Xray Hysteria 2 разделён на два уровня: транспортный (установка QUIC-соединения, TLS, аутентификация) и прокси-уровень (обработка TCP и UDP). Такое разделение упрощает поддержку и позволяет использовать Hysteria 2 в качестве транспорта для других протоколов.

Важно понимать: в Xray Hysteria 2 работает как самостоятельный протокол, а не как транспорт для VLESS или Trojan. Это означает, что вы можете создать отдельный входящий или исходящий узел Hysteria 2, но не сможете, например, завернуть VLESS в Hysteria 2 так же, как в WebSocket или gRPC. Некоторые пользователи отмечают, что реализация Hysteria 2 в Xray может работать менее стабильно, чем оригинальный клиент, но в целом она пригодна для использования.

Установка Hysteria 2 на сервер

Для установки Hysteria 2 на сервер с Linux (Debian/Ubuntu) проще всего использовать официальный скрипт. Выполните от root:

bash <(curl -fsSL https://get.hy2.sh/)

Если вы работаете от обычного пользователя с sudo, скрипт может не сработать из-за ограничений доступа. В этом случае скачайте скрипт и запустите его с sudo:

wget https://get.hy2.sh/install_server.sh
chmod 755 install_server.sh
sudo ./install_server.sh

Скрипт установит бинарник Hysteria, создаст systemd-сервис и базовую конфигурацию. После установки вам нужно будет отредактировать файл конфигурации, обычно расположенный в /etc/hysteria/config.yaml.

Альтернативный способ — запуск в Docker. Образ tobyxdd/hysteria доступен на Docker Hub. Создайте папку для конфигурации и запустите контейнер:

sudo docker pull tobyxdd/hysteria
sudo mkdir -p /etc/hysteria
sudo docker run -d -p 443:443/udp --name hysteria --restart=always -e TZ=Europe/Moscow -v /etc/hysteria:/etc/hysteria tobyxdd/hysteria

Не забудьте открыть порт 443/udp в файрволе, если он активен.

Базовая конфигурация сервера Hysteria 2

Конфигурация сервера Hysteria 2 записывается в YAML-формате. Обратите внимание: отступы должны быть только пробелами, табуляция не допускается. Минимальная конфигурация выглядит так:

listen: :443

tls:
  cert: /etc/ssl/private/fullchain.cer
  key: /etc/ssl/private/private.key

auth:
  type: password
  password: ваш_пароль

masquerade:
  type: proxy
  proxy:
    url: https://example.com/
    rewriteHost: true

Вместо указания файлов сертификата можно использовать автоматическое получение через ACME. Для этого укажите домен и email:

acme:
  domains:
    - your.domain.com
  email: your@email.com

Hysteria 2 автоматически получит и будет продлевать сертификат. Для российских доменов рекомендуется указывать центр сертификации Let's Encrypt: ca: letsencrypt.

Секция masquerade маскирует сервер под обычный веб-сервер. Если цензура не вызывает опасений, её можно опустить — тогда на HTTP-запросы сервер будет возвращать 404.

Аутентификация и управление пользователями

Hysteria 2 поддерживает несколько способов аутентификации:

  • По паролю — единый пароль для всех пользователей. Простейший вариант.
  • По логину и паролю — многопользовательский режим, где каждому пользователю задаётся своя пара логин/пароль.
  • HTTP-аутентификация — сервер отправляет POST-запрос на указанный URL с данными клиента, а ваш бэкенд возвращает JSON с результатом.
  • Командная аутентификация — сервер выполняет указанную команду с аргументами (адрес, пароль, трафик) и проверяет код возврата.

Пример многопользовательской конфигурации:

auth:
  type: userpass
  userpass:
    user1: pass1
    user2: pass2

HTTP-аутентификация удобна для интеграции с биллинговыми системами. Сервер отправляет POST на ваш URL с JSON вида {"addr": "ip:port", "auth": "пароль", "tx": 123456}, а ваш сервер должен ответить {"ok": true, "id": "user_id"}.

Обфускация трафика и маскировка

По умолчанию Hysteria 2 имитирует HTTP/3, что делает его похожим на обычный веб-трафик. Однако если в вашей сети блокируется QUIC, можно включить обфускацию Salamander. Она преобразует пакеты в случайные байты без шаблона, что затрудняет детектирование.

Для включения обфускации добавьте в конфигурацию сервера:

obfs:
  type: salamander
  salamander:
    password: ваш_пароль_обфускации

Пароль должен совпадать на сервере и клиенте. Важно: при включении обфускации сервер перестаёт быть совместимым со стандартными QUIC-соединениями, то есть маскировка под HTTP/3 теряется.

Некоторые пользователи сообщают, что обфускация может вызывать проблемы на мобильных операторах: они распознают трафик как неизвестный UDP и блокируют его. Поэтому перед включением обфускации стоит протестировать соединение без неё.

Настройка клиента Hysteria 2

Клиент Hysteria 2 доступен для Windows, macOS, Linux, Android и iOS. Официальный GUI-клиент называется Hysteria. Также можно использовать сторонние приложения, например, NekoRay или v2rayN.

Для подключения к серверу используется URI-схема:

hysteria2://пароль@server.com:443/?obfs=salamander&obfs-password=пароль_обфускации&sni=server.com

Если используется аутентификация по логину и паролю, формат будет hysteria2://логин:пароль@server.com:443/.

В клиенте также можно настроить параметры QUIC, например, размер пакета или интервал смены порта. Для порт-хоппинга (смена порта для обхода блокировок) укажите несколько портов через запятую или диапазон:

server.com:1234,5678,9012
server.com:20000-50000

Клиент будет случайным образом выбирать порт для подключения и периодически переключаться на другой. Интервал переключения задаётся параметром hopInterval в транспортной секции.

Использование Hysteria 2 на роутерах Keenetic

Hysteria 2 можно установить на роутеры Keenetic с поддержкой USB и установленным Entware. Это позволяет организовать проксирование всего трафика домашней сети без необходимости настраивать каждое устройство отдельно.

Для установки потребуется:

  • Роутер Keenetic с USB-портом
  • Внешний USB-накопитель
  • Установленный Entware
  • Доступ по SSH

Включите модули ядра Netfilter (xt_TPROXY, xt_socket, xt_multiport) в веб-интерфейсе: Управление → Параметры системы → Общие настройки системы → Изменить набор компонентов → Пакеты OPKG → Модули ядра подсистемы Netfilter.

Затем установите пакет Hysteria из репозитория H-wave:

opkg install https://github.com/for6to9si/H-wave/releases/download/v2.12.2/hysteria_2.12.2_mipsle.ipk

Для роутеров с архитектурой arm64 используйте соответствующий пакет. После установки отредактируйте конфигурацию в /opt/etc/hysteria/config.json. Управление осуществляется командами:

/opt/etc/init.d/S96hysteria status
/opt/etc/init.d/S96hysteria restart
/opt/etc/init.d/S96hysteria stop

Обратите внимание: включение обфускации на роутерах Keenetic может привести к неработоспособности на сотовых операторах, так как они блокируют неизвестный UDP-трафик.

Проброс портов и обход блокировок UDP

В некоторых сетях провайдеры блокируют или ограничивают постоянные UDP-соединения. Чтобы обойти это, Hysteria 2 поддерживает проброс портов (port hopping). Клиент может подключаться к разным портам сервера, периодически меняя их.

Сервер Hysteria 2 не поддерживает прослушивание нескольких портов напрямую, поэтому для проброса портов используются правила iptables. Например, чтобы перенаправить порты 20000-50000 на порт 443:

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 20000:50000 -j DNAT --to-destination :443

Для IPv6 аналогично с ip6tables. Клиент при этом может указывать диапазон портов в адресе сервера.

Этот метод особенно полезен, если провайдер блокирует только конкретные порты, но не весь UDP-трафик.

Сравнение Hysteria 2 с другими протоколами

Hysteria 2 часто сравнивают с Shadowsocks, VLESS+Reality и другими современными протоколами. Вот основные отличия:

  • Скорость: Hysteria 2 за счёт QUIC и алгоритма Brutal может показывать более высокую скорость на нестабильных каналах.
  • Маскировка: Hysteria 2 имитирует HTTP/3, что сложнее обнаружить, чем Shadowsocks.
  • Сложность настройки: Hysteria 2 требует наличия домена и TLS-сертификата, что может быть сложнее для новичков.
  • Поддержка в панелях: Для Hysteria 2 пока мало готовых панелей управления, в отличие от Shadowsocks или Xray.

Некоторые пользователи отмечают, что реализация Hysteria 2 в Xray работает менее стабильно, чем оригинальный клиент. Поэтому, если вам нужна максимальная надёжность, рекомендуется использовать официальный клиент Hysteria 2.

Выбор протокола зависит от конкретных условий: если у вас стабильное соединение и нет агрессивной блокировки, можно использовать Shadowsocks или VLESS. Если же сеть нестабильна или блокировки серьёзные, Hysteria 2 может быть лучшим выбором.

Вопросы и ответы

Чем Hysteria 2 отличается от Xray?

Hysteria 2 — это самостоятельный прокси-протокол на основе QUIC, а Xray — платформа, поддерживающая множество протоколов. Xray может использовать Hysteria 2 как один из протоколов, но Hysteria 2 также работает отдельно. Основное отличие — в транспортном уровне: Hysteria 2 использует UDP и алгоритм управления перегрузкой Brutal, что даёт преимущества на нестабильных каналах.

Нужен ли домен для Hysteria 2?

Да, для работы Hysteria 2 требуется TLS-сертификат, который обычно привязывается к домену. Вы можете использовать бесплатный домен (например, от freedns.afraid.org) или купить недорогой домен. Сертификат можно получить автоматически через ACME, указав домен и email в конфигурации.

Как включить обфускацию Salamander?

Добавьте в конфигурацию сервера секцию obfs с типом salamander и паролем. На клиенте укажите те же параметры в URI: ?obfs=salamander&obfs-password=ваш_пароль. Учтите, что обфускация может вызвать блокировку на некоторых операторах, поэтому тестируйте соединение.

Можно ли использовать Hysteria 2 на роутере Keenetic?

Да, для роутеров Keenetic с Entware доступны готовые пакеты Hysteria 2. Установка требует USB-накопитель и включение модулей Netfilter. После установки настройте конфигурацию и управляйте сервисом через команды init.d.

Что такое port hopping в Hysteria 2?

Port hopping — это техника, при которой клиент подключается к разным портам сервера, периодически меняя их. Это помогает обойти блокировки, если провайдер блокирует только конкретные порты. На сервере настраивается проброс портов через iptables.

Почему Hysteria 2 может не работать с обфускацией на мобильных операторах?

Некоторые мобильные операторы блокируют неизвестный UDP-трафик, который не похож на стандартные протоколы. Обфускация Salamander делает трафик случайными байтами, что может быть расценено как подозрительное. В таких случаях рекомендуется отключить обфускацию и использовать стандартный QUIC.