Что такое 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: pass2HTTP-аутентификация позволяет интегрировать 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.