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

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

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

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

Конфигурация — это файл YAML или ссылка вида hysteria2://, которые описывают все параметры соединения: адрес сервера, порт, пароль, TLS-настройки, параметры полосы пропускания и обфускацию. Без правильно составленного конфига ни сервер, ни клиент не заработают. Понимание структуры конфигов позволяет быстро разворачивать собственные серверы, диагностировать проблемы и адаптировать настройки под конкретную сеть.

Протокол поддерживает несколько режимов работы: SOCKS5, HTTP-прокси, пересылка TCP/UDP и Linux TProxy. Это делает его гибким инструментом как для индивидуального использования, так и для развёртывания на роутерах или серверах. Благодаря маскировке под HTTP/3 Hysteria 2 сложнее обнаружить и заблокировать, чем многие другие протоколы.

Установка сервера Hysteria 2: Docker и классический способ

Перед установкой сервера вам понадобится VPS с Debian или Ubuntu, доступ по SSH и права root. Также желательно иметь доменное имя — его можно купить у регистратора или получить бесплатно, например, через dynu.com. Домен нужен для получения TLS-сертификата, который обеспечивает шифрование и маскировку трафика.

Существует два основных способа установки: через Docker и напрямую в систему. Docker-вариант удобен для изоляции и простоты обновлений. Сначала установите Docker Engine, затем выполните:

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

Классическая установка выполняется с помощью официального скрипта:

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

Если скрипт не запускается от обычного пользователя, скачайте его и выполните с sudo:

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

После установки конфигурационный файл по умолчанию находится в /etc/hysteria/config.yaml. Его нужно отредактировать под свои параметры. Обратите внимание: в YAML недопустимы табуляции, только пробелы — частая причина ошибок.

Базовая конфигурация сервера: listen, TLS и ACME

Минимальный рабочий конфиг сервера выглядит так:

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

Поле listen задаёт адрес и порт, на котором сервер будет принимать соединения. По умолчанию это :443 — стандартный порт для HTTP/3, что делает трафик менее подозрительным. Можно указать конкретный IP, например 0.0.0.0:443 для IPv4 или [::]:443 для IPv6.

Секция acme отвечает за автоматическое получение и продление TLS-сертификатов через протокол ACME. Укажите ваш домен и email. По умолчанию используется центр сертификации Let's Encrypt, но для российских доменов может потребоваться явно указать ca: letsencrypt. Сертификаты сохраняются в /var/lib/hysteria/acme/certificates.

Если у вас уже есть собственные сертификаты, используйте секцию tls вместо acme:

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

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

Аутентификация: пароль, userpass, HTTP и командная

Hysteria 2 поддерживает несколько способов аутентификации клиентов. Самый простой — единый пароль:

auth:
  type: password
  password: o9s+p5+sR5Bi13XWBjjf2ymW

Для многопользовательского режима используйте userpass:

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

HTTP-аутентификация позволяет интегрировать проверку с внешним сервисом. При подключении клиента сервер отправляет POST-запрос с JSON, содержащим адрес, пароль и объём переданных данных. Ответ должен содержать {"ok": true, "id": "john_doe"}.

Командная аутентификация запускает указанную команду с аргументами addr auth tx. Команда должна вывести уникальный идентификатор клиента в stdout и вернуть код 0 для разрешения подключения.

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

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

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

Доступны три режима:

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

Пример с proxy:

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

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

Для дополнительной защиты от DPI, когда QUIC или HTTP/3 блокируется целиком, используется обфускация. В Hysteria 2 доступны два типа: Salamander и экспериментальный Gecko. Salamander преобразует пакеты в случайные байты без паттернов, а Gecko дополнительно фрагментирует пакеты рукопожатия. Включение обфускации делает сервер несовместимым со стандартными QUIC-соединениями, поэтому маскировка под HTTP/3 перестаёт работать.

Пример настройки Salamander:

obfs:
  type: salamander
  salamander:
    password: cry_me_a_r1ver

Параметры QUIC и полосы пропускания

Hysteria 2 позволяет тонко настраивать параметры QUIC-соединений через секцию quic. Основные поля:

  • initStreamReceiveWindow и maxStreamReceiveWindow — размеры окон приёма для потоков (по умолчанию 8 МБ).
  • initConnReceiveWindow и maxConnReceiveWindow — окна приёма для соединения (по умолчанию 20 МБ).
  • maxIdleTimeout — максимальное время бездействия, после которого клиент считается отключённым.
  • maxIncomingStreams — лимит параллельных входящих потоков.

Изменять эти значения рекомендуется только при полном понимании последствий. Соотношение окна потока к окну соединения должно быть примерно 2:5.

Секция bandwidth задаёт полосу пропускания для каждого клиента:

bandwidth:
  up: 1 gbps
  down: 1 gbps

Значения up и down на сервере ограничивают скорость отправки и приёма данных. Важно помнить: скорость загрузки сервера — это скорость скачивания клиента, и наоборот. Если параметры не указаны или равны нулю, ограничения отсутствуют.

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

Клиентские конфигурации: ссылка hysteria2:// и YAML

Настройки клиента передаются двумя способами: единой ссылкой или YAML-файлом. Ссылка имеет формат:

hysteria2://ВашПароль@203.0.113.10:443/?insecure=0&sni=example.com&obfs=salamander&obfs-password=ОбфускацияПароль#my-server

Разбор параметров:

  • ВашПароль — пароль аутентификации, должен совпадать с серверным.
  • 203.0.113.10:443 — адрес и порт сервера.
  • sni — доменное имя для TLS-рукопожатия, обычно совпадает с доменом сертификата.
  • insecure1, если сервер использует самоподписанный сертификат, иначе 0 или отсутствует.
  • obfs и obfs-password — параметры обфускации Salamander, если она включена на сервере.

YAML-конфиг для консольного клиента выглядит так:

server: 203.0.113.10:443
auth: ВашПароль
tls:
  sni: example.com
  insecure: false
bandwidth:
  up: 20 mbps
  down: 100 mbps
socks5:
  listen: 127.0.0.1:1080

Многие GUI-клиенты позволяют импортировать YAML напрямую или вставить его в раздел «Custom config». При ручном заполнении формы убедитесь, что все поля заполнены точно, особенно пароль и SNI.

Выбор GUI-клиента для Windows и импорт конфигурации

Официальный клиент Hysteria 2 — консольный бинарник, который неудобен для повседневного использования. Поэтому на Windows чаще применяют универсальные GUI-клиенты, поддерживающие Hysteria2 как один из протоколов:

  • NekoRay / NekoBox — популярная обёртка с поддержкой плагинов, включая hysteria2. Умеет импортировать ссылки и редактировать профили в форме.
  • Hiddify Next — кроссплатформенный клиент на базе sing-box, поддерживает Hysteria2 из коробки. Удобен, если нужен один клиент для Windows и телефона.
  • v2rayN — в актуальных сборках работает с hysteria2://-ссылками через встроенное ядро.

При выборе обращайте внимание на поддержку актуальной версии протокола (не путайте с первой версией Hysteria), наличие трея, TUN-режима и открытый исходный код.

Импорт в NekoRay:

  1. Скачайте архив с GitHub, распакуйте в папку без кириллицы и пробелов.
  2. Запустите клиент, при необходимости разрешите скачать ядра (hysteria2-core).
  3. Скопируйте ссылку hysteria2:// целиком.
  4. Выберите «Добавить профиль из буфера обмена».
  5. Дважды кликните по профилю для подключения.

В Hiddify Next логика аналогична: «Добавить профиль» → вставить ссылку или отсканировать QR-код.

Режимы работы клиента: локальный прокси, системный прокси и TUN

Клиент Hysteria 2 на Windows может работать в трёх режимах:

Локальный прокси. Клиент поднимает SOCKS5/HTTP-прокси на 127.0.0.1 (порт по умолчанию часто 2080 или 1080). На этот адрес нужно направить браузер или конкретное приложение. Проверить, что прокси слушает порт, можно командой:

netstat -ano | findstr 2080

Системный прокси. Многие GUI-клиенты автоматически прописывают системный прокси при подключении и возвращают настройки при отключении. Это покрывает большинство приложений, уважающих системные параметры.

TUN-режим. Создаёт виртуальный сетевой адаптер и заворачивает весь трафик системы, включая приложения, игнорирующие прокси. Требует запуска от имени администратора. Самый надёжный способ, но может конфликтовать с другими VPN-клиентами (например, OpenVPN) из-за маршрутов.

Типичные проблемы и их решение

Клиент подключён, но интернета нет или скорость низкая. Чаще всего проблема в завышенных параметрах bandwidth. Алгоритм Brutal будет слать больше трафика, чем канал может переварить, что выглядит как потери пакетов. Начните с честной оценки скорости и занизьте значения.

TLS handshake не проходит. Проверьте согласованность sni и insecure. Если сервер использует самоподписанный сертификат, insecure должен быть true/1. Если сертификат от Let's Encrypt, insecure должен быть выключен, а sni совпадать с доменом сертификата.

Соединение обрывается, TCP работает. Это почти всегда означает блокировку UDP. Некоторые сети режут UDP целиком или занижают приоритет QUIC. Включите обфускацию Salamander или смените порт на 443, где UDP реже подвергается спецобработке.

Порт закрыт. Проверьте доступность порта: Test-NetConnection -ComputerName 203.0.113.10 -Port 443. Учтите, что команда проверяет TCP, а Hysteria2 работает по UDP. «Неуспех» на TCP-порту часто указывает на закрытый файрвол.

Клиент не импортирует ссылку. Убедитесь, что ссылка скопирована целиком, без переносов строк и пробелов. Также проверьте, что установлено ядро hysteria2.

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

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

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

Hysteria 2 — это полностью переработанная версия протокола. Главные отличия: аутентификация по единому паролю вместо логина/пароля, улучшенная производительность, поддержка новых режимов маскировки и обфускации. Конфиги и ссылки первой и второй версий несовместимы между собой.

Можно ли использовать Hysteria 2 без домена?

Технически можно, но тогда придётся использовать самоподписанный сертификат и указывать insecure: true в конфиге клиента. Однако это снижает маскировку и может вызвать подозрения у DPI-систем. Рекомендуется приобрести домен или получить бесплатный, например, через dynu.com.

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

На сервере добавьте в конфиг секцию obfs с типом salamander и паролем. На клиенте укажите те же параметры в ссылке (obfs=salamander&obfs-password=...) или в YAML. Пароль должен совпадать на обеих сторонах.

Почему скорость ниже ожидаемой?

Чаще всего из-за завышенных значений bandwidth в конфиге клиента. Алгоритм Brutal пытается удержать заданную полосу, но если она выше реальной пропускной способности канала, возникают потери и просадки. Уменьшите значения up и down до реальных.

Что делать, если UDP-трафик блокируется провайдером?

Попробуйте включить обфускацию Salamander, которая маскирует пакеты под случайные байты. Также можно сменить порт сервера на 443 — на нём UDP реже подвергается спецобработке. Если блокировка тотальная, Hysteria 2 не имеет TCP-фолбэка, поэтому придётся использовать другой протокол.

Как проверить, что сервер Hysteria 2 работает?

Посмотрите логи сервера: sudo journalctl -u hysteria или sudo docker logs hysteria. При успешном запуске в логах будет сообщение о прослушивании порта. Также можно проверить доступность UDP-порта с помощью специализированных инструментов, например nc -u -vz server_ip 443.

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

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