Hysteria 2 конфиг: полное руководство по настройке сервера и клиента

Подробное руководство по настройке Hysteria 2: конфигурация сервера и клиента, обфускация, аутентификация, маскировка, смена портов, установка на роутеры Keenetic и ответы на частые вопросы.

Что такое Hysteria 2 и почему он популярен

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

Ключевые особенности Hysteria 2:

  • Работа поверх UDP — использует QUIC, что обеспечивает быстрое установление соединения и эффективную передачу данных.
  • Встроенная маскировка — имитирует HTTP/3, что затрудняет обнаружение протокола.
  • Поддержка обфускации — режимы Salamander и Gecko позволяют скрыть трафик от DPI.
  • Гибкая аутентификация — пароль, многопользовательский режим, HTTP- или командная проверка.
  • Управление полосой пропускания — алгоритм Brutal позволяет задавать целевые скорости.
  • Смена портов (port hopping) — клиент может переключаться между портами, что помогает обходить блокировки по портам.

Протокол активно развивается, и для него уже существуют готовые клиенты для различных платформ, включая Windows, macOS, Linux, Android и iOS. Также возможна установка на роутеры, например, Keenetic, что позволяет защитить весь домашний трафик.

Требования для установки Hysteria 2

Прежде чем приступать к настройке, убедитесь, что у вас есть всё необходимое:

  • VPS-сервер с операционной системой Linux (рекомендуются Debian или Ubuntu) и доступом по SSH с правами root.
  • Домен — обязателен для получения TLS-сертификата. Можно использовать бесплатные домены, например, от dynu.com или freedns.afraid.org, либо купить недорогой домен.
  • Свободный UDP-порт — по умолчанию используется 443, но можно выбрать любой другой.
  • Клиентское устройство — компьютер, смартфон или роутер, на котором будет настроено подключение.

Если вы планируете использовать Hysteria 2 на роутере Keenetic, дополнительно потребуются:

  • Роутер с поддержкой USB.
  • Внешний USB-накопитель для установки Entware.
  • Доступ к роутеру по SSH.

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

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

Существует два основных способа установки Hysteria 2 на сервер: с помощью официального скрипта или через Docker.

Установка через скрипт

Самый простой способ — использовать официальный скрипт установки. Для пользователя root команда выглядит так:

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

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

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

После установки скрипт создаст конфигурационный файл /etc/hysteria/config.yaml и systemd-сервис для автозапуска.

Установка через Docker

Если вы предпочитаете контейнеризацию, можно использовать Docker:

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

Обратите внимание, что в команде docker run используется образ teddysun/hysteria, а не tobyxdd/hysteria — это разные образы, и важно выбрать тот, который поддерживает вашу конфигурацию. В примере из источника используется teddysun/hysteria, что может быть опечаткой, но в любом случае проверяйте актуальные образы на Docker Hub.

Независимо от способа установки, после запуска сервера необходимо настроить конфигурацию.

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

Конфигурационный файл сервера написан в формате YAML. Важно соблюдать отступы из пробелов — табуляция не допускается. Ошибки в отступах — частая причина неработоспособности конфигурации.

Минимальная конфигурация выглядит так:

# listen: :443
acme:
  domains:
    - your.domain.net
  email: your@email.com
auth:
  type: password
  password: your_strong_password
masquerade:
  type: proxy
  proxy:
    url: https://news.ycombinator.com/
    rewriteHost: true

Разберём основные параметры:

  • listen — адрес и порт, на котором сервер будет принимать соединения. По умолчанию :443. Если нужно слушать на другом порту, раскомментируйте строку и укажите нужный порт.
  • acme — настройки автоматического получения TLS-сертификата. Укажите ваш домен и email. Hysteria 2 использует встроенный ACME-клиент, который автоматически получает и продлевает сертификаты.
  • auth — секция аутентификации. В примере используется пароль, но можно настроить многопользовательский режим или HTTP-аутентификацию.
  • masquerade — маскировка трафика. В режиме proxy сервер будет проксировать запросы на указанный URL, имитируя обычный веб-сервер.

Если у вас уже есть TLS-сертификат, можно указать его пути вместо ACME:

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

Убедитесь, что файлы сертификатов доступны для чтения процессу Hysteria (например, chmod 644).

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

Hysteria 2 поддерживает несколько способов аутентификации клиентов. Выбор зависит от ваших потребностей.

Парольная аутентификация

Самый простой способ — единый пароль для всех клиентов:

auth:
  type: password
  password: your_strong_password

Многопользовательский режим

Если нужно раздавать доступ разным людям с индивидуальными паролями, используйте userpass:

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

HTTP-аутентификация

Для интеграции с внешней системой управления пользователями можно настроить HTTP-аутентификацию. При подключении клиента сервер отправляет POST-запрос на указанный URL с JSON-данными, содержащими адрес клиента, пароль и объём переданных данных. В ответ сервер должен вернуть JSON с полем ok и, при необходимости, идентификатором пользователя.

auth:
  type: http
  http:
    url: http://your.backend.com/auth
    insecure: false

Командная аутентификация

Аналогично HTTP, но вместо запроса выполняется указанная команда. Сервер передаёт команде аргументы (адрес, пароль, трафик) и ожидает код возврата 0 для разрешения подключения.

auth:
  type: command
  command: /etc/some_command

Выбор метода зависит от вашего сценария. Для личного использования достаточно пароля, для коммерческого — HTTP или командная аутентификация.

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

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

Режимы маскировки

  • file — сервер отдаёт статические файлы из указанной директории.
  • proxy — сервер выступает в роли обратного прокси и подменяет контент с другого сайта.
  • string — сервер всегда возвращает заданную строку.

Пример маскировки под прокси:

masquerade:
  type: proxy
  proxy:
    url: https://news.ycombinator.com/
    rewriteHost: true

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

Обфускация

Если ваша сеть блокирует QUIC или HTTP/3, можно включить обфускацию. Доступны два режима:

  • Salamander — преобразует пакеты в случайные байты без паттернов.
  • Gecko (экспериментальный) — дополнительно фрагментирует QUIC-пакеты рукопожатия.

Пример включения Salamander:

obfs:
  type: salamander
  salamander:
    password: cry_me_a_r1ver

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

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

Смена портов (Port Hopping) для обхода блокировок

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

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

Клиент может указывать несколько портов или диапазон портов через запятую:

server: example.com:1234,5678,9012
# или
example.com:20000-50000

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

transport:
  udp:
    hopInterval: 30s

Настройка сервера

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

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

Обратите внимание, что в новых версиях Hysteria 2 сервер также поддерживает диапазон портов в поле listen (например, :20000-50000), и автоматически настраивает правила файрвола. Это работает только на Linux и требует прав root.

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

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

server: your.domain.net:443
auth: your_password

tls:
  sni: your.domain.net
  insecure: false

socks5:
  listen: 127.0.0.1:1080

http:
  listen: 127.0.0.1:8080

Здесь:

  • server — адрес и порт сервера.
  • auth — пароль или строка аутентификации (для userpass — username:password).
  • tls — настройки TLS. Параметр sni должен совпадать с доменом сервера. Если используется самоподписанный сертификат, можно установить insecure: true, но это не рекомендуется.
  • socks5 и http — локальные прокси-серверы, через которые приложения будут подключаться к интернету.

Также можно указать параметры обфускации, если они настроены на сервере:

obfs:
  type: salamander
  salamander:
    password: cry_me_a_r1ver

Для удобства распространения конфигурации используется URI-схема hysteria2://. Она позволяет передать все параметры подключения в одной строке. Формат:

hysteria2://[auth@]hostname[:port]/?[key=value]&[key=value]...

Пример:

hysteria2://letmein@example.com:443/?insecure=0&obfs=salamander&obfs-password=gawrgura&sni=real.example.com

Эта ссылка может быть импортирована в графические клиенты, такие как NekoRay или v2rayN.

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

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

Требования

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

Установка

  1. Установите Entware по официальной инструкции Keenetic.
  2. Включите модули ядра Netfilter: xt_TPROXY, xt_socket, xt_multiport. Для этого в веб-интерфейсе перейдите в «Управление» → «Параметры системы» → «Общие настройки системы» → «Изменить набор компонентов» → «Пакеты OPKG» и включите компонент «Модули ядра подсистемы Netfilter».
  3. Установите пакет Hysteria из репозитория H-wave. Для архитектуры mipsle:
opkg install https://github.com/for6to9si/H-wave/releases/download/v2.12.2/hysteria_2.12.2_mipsle.ipk

Для arm64 используйте соответствующий пакет.

  1. Отредактируйте конфигурационный файл /opt/etc/hysteria/config.json.

Управление

После установки доступны команды:

  • /opt/etc/init.d/S96hysteria status — статус.
  • /opt/etc/init.d/S96hysteria restart — перезапуск с применением маршрутизации.
  • /opt/etc/init.d/S96hysteria fast_restart — быстрый перезапуск без изменения маршрутизации.
  • /opt/etc/init.d/S96hysteria stop — остановка.

Особенности

  • Включение обфускации на роутерах может привести к неработоспособности на сотовых операторах, поэтому рекомендуется использовать стандартный QUIC.
  • Для работы в режиме TPROXY (UDP) необходимо, чтобы порты в конфигурациях Hysteria и H-wave совпадали.
  • Если вы используете Xray-core или sing-box, они также поддерживают Hysteria 2, но, по отзывам, нативная реализация работает стабильнее.

Частые проблемы и их решение

При настройке Hysteria 2 пользователи часто сталкиваются с типичными ошибками. Рассмотрим основные.

Ошибки в YAML-конфигурации

Неправильные отступы или использование табуляции вместо пробелов приводят к ошибкам парсинга. Внимательно проверяйте файл конфигурации.

Проблемы с TLS-сертификатами

Если вы используете собственные сертификаты, убедитесь, что пути указаны верно и файлы доступны для чтения. При использовании ACME проверьте, что домен правильно делегирован на ваш сервер.

Блокировка UDP-трафика

Если провайдер блокирует UDP, Hysteria 2 не будет работать. Попробуйте включить обфускацию или использовать смену портов. Однако на некоторых операторах обфускация может ухудшить ситуацию.

Конфликты портов

При использовании TPROXY на роутере убедитесь, что порт, указанный в конфигурации Hysteria, не занят другим сервисом. Проверить можно командой netstat -tulpn | grep :порт.

Проблемы с маршрутизацией на Keenetic

Если трафик не идёт через туннель, проверьте настройки H-wave и Hysteria. Иногда помогает добавление "ipv4Exclude": "0.0.0.0/0" в конфигурацию Hysteria, чтобы избежать замыкания сети.

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

Что такое Hysteria 2 и чем он отличается от Hysteria 1?

Hysteria 2 — это вторая версия протокола, построенная на QUIC. Основные отличия: улучшенная производительность, более гибкая настройка, встроенная поддержка маскировки под HTTP/3, новые методы обфускации (Salamander, Gecko), а также возможность смены портов. Hysteria 1 считается устаревшим, и разработчики рекомендуют использовать Hysteria 2.

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

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

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

Обфускация настраивается в конфигурации сервера и клиента. На сервере добавьте секцию obfs с типом salamander или gecko и укажите пароль. На клиенте укажите тот же тип и пароль. Обратите внимание, что включение обфускации делает сервер несовместимым со стандартными QUIC-соединениями.

Что такое port hopping и как его настроить?

Port hopping — это механизм, при котором клиент периодически меняет порт подключения, что помогает обходить блокировки по портам. На клиенте укажите несколько портов или диапазон через запятую, например example.com:20000-50000, и задайте hopInterval. На сервере настройте перенаправление портов через iptables или используйте диапазон портов в поле listen (только Linux).

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

Да, для роутеров Keenetic с поддержкой USB и Entware доступны готовые пакеты Hysteria 2. Установка требует настройки модулей ядра Netfilter и использования проекта H-wave. После установки можно управлять сервисом через команды /opt/etc/init.d/S96hysteria.

Почему Hysteria 2 не работает на мобильном интернете?

Чаще всего проблема связана с блокировкой UDP-трафика оператором. Попробуйте отключить обфускацию (если она включена) и использовать стандартный QUIC. Также может помочь смена порта или использование port hopping. Если проблема сохраняется, проверьте, не блокирует ли оператор QUIC целиком.

Как создать конфигурацию для клиента Hysteria 2?

Минимальная конфигурация клиента включает адрес сервера, пароль и настройки TLS. Пример:

server: your.domain.net:443
auth: your_password
tls:
  sni: your.domain.net
socks5:
  listen: 127.0.0.1:1080

Также можно использовать URI-схему hysteria2:// для импорта в графические клиенты.