Что такое 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.comHysteria 2 автоматически получит и будет продлевать сертификат. Для российских доменов рекомендуется указывать центр сертификации Let's Encrypt: ca: letsencrypt.
Секция masquerade маскирует сервер под обычный веб-сервер. Если цензура не вызывает опасений, её можно опустить — тогда на HTTP-запросы сервер будет возвращать 404.
Аутентификация и управление пользователями
Hysteria 2 поддерживает несколько способов аутентификации:
- По паролю — единый пароль для всех пользователей. Простейший вариант.
- По логину и паролю — многопользовательский режим, где каждому пользователю задаётся своя пара логин/пароль.
- HTTP-аутентификация — сервер отправляет POST-запрос на указанный URL с данными клиента, а ваш бэкенд возвращает JSON с результатом.
- Командная аутентификация — сервер выполняет указанную команду с аргументами (адрес, пароль, трафик) и проверяет код возврата.
Пример многопользовательской конфигурации:
auth:
type: userpass
userpass:
user1: pass1
user2: pass2HTTP-аутентификация удобна для интеграции с биллинговыми системами. Сервер отправляет 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.