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

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

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

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

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

Hysteria 2 развивается и уже дошёл до второй версии, которая предлагает улучшенную производительность и дополнительные настройки. Многие администраторы выбирают его наряду с Shadowsocks, XTLS-Reality и другими протоколами, чтобы не зависеть от одного решения.

Подготовка VPS: требования и выбор операционной системы

Для установки Hysteria 2 подойдёт VPS с минимальными характеристиками: один виртуальный CPU, 512 МБ RAM и 5 ГБ дискового пространства. Рекомендуемые операционные системы — Ubuntu 22.04/24.04 или Debian 11/12. Перед началом настройки убедитесь, что у вас есть SSH-доступ с правами root или sudo.

Необходимо открыть порты, которые вы планируете использовать. По умолчанию Hysteria 2 слушает порт 443 для TCP и UDP. Убедитесь, что файрвол (например, UFW) разрешает входящие соединения на этих портах. Если вы используете другой порт, настройте его в конфигурации.

Перед установкой рекомендуется обновить систему и установить базовые пакеты:

sudo apt update && sudo apt upgrade -y
sudo apt install curl wget nano

Эти команды подготовят сервер к дальнейшей работе и установке необходимых компонентов.

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

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

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

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

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

Альтернативный способ — установка в Docker. Для этого создайте папку для конфигурации, загрузите образ и запустите контейнер:

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

После установки проверьте версию командой hysteria version. Если всё прошло успешно, можно переходить к созданию конфигурации.

Создание конфигурации сервера и TLS-сертификата

Hysteria 2 требует TLS-сертификат для шифрования трафика. Есть два основных варианта: использовать реальный домен и получить сертификат Let's Encrypt, либо сгенерировать самоподписанный сертификат для тестирования.

Для самоподписанного сертификата выполните:

mkdir -p /etc/hysteria
openssl req -x509 -nodes -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -keyout /etc/hysteria/server.key -out /etc/hysteria/server.crt -days 365 -subj "/CN=your-server-ip"

Замените your-server-ip на IP вашего VPS. Затем создайте файл конфигурации /etc/hysteria/config.yaml:

listen: :443
tls:
  cert: /etc/hysteria/server.crt
  key: /etc/hysteria/server.key
auth:
  type: password
  password: your-strong-password

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

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

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

Запуск сервера и настройка systemd

После создания конфигурации можно запустить сервер вручную:

hysteria server -c /etc/hysteria/config.yaml

Если запуск прошёл успешно, вы увидите сообщение о том, что сервер слушает порт. Для автоматического запуска при загрузке системы создайте systemd-сервис. Создайте файл /etc/systemd/system/hysteria.service:

[Unit]
Description=Hysteria2 Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/hysteria server -c /etc/hysteria/config.yaml
Restart=on-failure

[Install]
WantedBy=multi-user.target

Затем выполните:

sudo systemctl daemon-reload
sudo systemctl enable hysteria
sudo systemctl start hysteria
sudo systemctl status hysteria

Проверьте, что сервис активен и не содержит ошибок в логах. Если что-то пошло не так, обратите внимание на пути к сертификатам и правильность синтаксиса конфигурации.

Настройка клиента: базовые параметры и URI-схема

Клиент Hysteria 2 доступен для Windows, macOS, Linux, Android и iOS. Для подключения можно использовать графические приложения, такие как NekoRay или v2rayN, либо настроить клиент вручную через конфигурационный файл.

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

server: your-server-ip:443
auth: your-strong-password
tls:
  insecure: true

Если вы используете самоподписанный сертификат, установите insecure: true, чтобы отключить проверку подлинности. При использовании реального сертификата уберите эту опцию или укажите правильный sni.

Для удобства распространения настроек используется URI-схема. Она выглядит следующим образом:

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

Пример:

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

В URI можно указать параметры обфускации, SNI, отпечаток сертификата и другие настройки. Это удобно для быстрого импорта в клиентские приложения.

Обфускация трафика и маскировка под HTTP/3

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

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

obfs:
  type: salamander
  salamander:
    password: cry_me_a_r1ver

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

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

Проброс портов и многопортовые подключения

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

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

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

Интервал переключения задаётся параметром hopInterval в транспортной секции:

transport:
  udp:
    hopInterval: 30s

На стороне сервера Hysteria 2 не поддерживает прослушивание нескольких портов напрямую. Вместо этого рекомендуется использовать iptables для перенаправления трафика с диапазона портов на основной порт сервера:

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

Этот подход позволяет клиенту подключаться к любому порту в диапазоне, а сервер продолжает слушать только 443.

Дополнительные настройки: аутентификация, bandwidth и маскировка

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

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

HTTP-аутентификация позволяет интегрировать Hysteria 2 с внешней системой управления пользователями. При подключении клиента сервер отправляет POST-запрос на указанный URL с данными о соединении, а внешний сервер отвечает, разрешить ли доступ.

Также можно ограничить пропускную способность для каждого пользователя или всего сервера. В конфигурации сервера добавьте:

bandwidth:
  up: 100 mbps
  down: 100 mbps

Секция masquerade определяет, как сервер отвечает на HTTP-запросы, когда к нему обращаются как к обычному веб-серверу. Это помогает маскировать прокси под легитимный сайт. Доступны режимы: file (статический файловый сервер), proxy (обратный прокси) и string (возврат заданной строки). Например:

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

Выбор подходящего сайта для маскировки может повысить устойчивость к блокировкам.

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

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

Порт закрыт в файерволе. Убедитесь, что порт 443 (или выбранный вами) открыт для UDP и TCP. Для UFW выполните:

sudo ufw allow 443/tcp
sudo ufw allow 443/udp

Неправильный путь к сертификату или пароль. Проверьте, что пути в конфигурации корректны, а пароль совпадает на сервере и клиенте. Ошибки в отступах YAML также могут вызывать проблемы.

Несовместимость версий протокола. Убедитесь, что сервер и клиент используют одну и ту же версию Hysteria 2. Обновите оба компонента до последней версии.

Блокировка QUIC/UDP провайдером. Если соединение не устанавливается, возможно, провайдер блокирует UDP-трафик. Попробуйте включить обфускацию Salamander или использовать проброс портов.

Проблемы с systemd. Если сервер не запускается после перезагрузки, проверьте статус сервиса и логи: journalctl -u hysteria -e. Убедитесь, что ExecStart указывает на правильный путь к бинарнику и конфигурации.

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

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

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

Нет, домен не обязателен. Можно использовать самоподписанный сертификат, но тогда в клиенте потребуется отключить проверку TLS (insecure: true). Если у вас есть домен, вы можете получить бесплатный сертификат Let's Encrypt через встроенный ACME-клиент, что повысит безопасность и совместимость.

Какой порт использует Hysteria 2 по умолчанию?

По умолчанию Hysteria 2 слушает порт 443 (как для TCP, так и для UDP). Этот порт можно изменить в конфигурации сервера, указав параметр listen. Убедитесь, что выбранный порт открыт в файерволе.

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

Да, для роутеров Keenetic с поддержкой USB и установленным Entware существует готовый пакет Hysteria 2. Он устанавливается через opkg и позволяет использовать прокси на уровне маршрутизации. Для работы требуются модули ядра Netfilter (xt_TPROXY, xt_socket, xt_multiport).

Что делать, если провайдер блокирует QUIC/UDP?

Если провайдер блокирует QUIC или UDP-трафик, можно включить обфускацию Salamander, которая преобразует пакеты в случайные байты. Однако на некоторых операторах это может привести к блокировке. Альтернативный вариант — использовать проброс портов (port hopping), чтобы подключаться через разные порты.

Как настроить несколько пользователей на сервере Hysteria 2?

Для нескольких пользователей используйте тип аутентификации userpass. В конфигурации сервера укажите:

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

Каждый пользователь получит свои учётные данные для подключения.

Почему соединение устанавливается, но трафик не проходит?

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

Как обновить Hysteria 2 на сервере?

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

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

После обновления перезапустите сервис: sudo systemctl restart hysteria.