Hysteria2 и TUIC на VPS: когда нужен QUIC
VLESS Reality работает поверх TCP. Hysteria2 и TUIC устроены иначе: они используют QUIC, тот же транспорт на UDP, на котором работает HTTP/3. У них свои сильные стороны и своё слабое место, поэтому их ставят не вместо VLESS, а рядом с ним, как второй вариант подключения.
QUIC-протоколы на OBLAKO
Hysteria2, TUIC и Reality на серверах OBLAKO разрешены для личного использования. Чужие популярные домены в SNI под запретом: такие серверы система выключает автоматически. Ставьте их по нашим инструкциям, с собственным доменом и настоящим сертификатом: такой сервер снаружи выглядит обычным сайтом и полностью соответствует правилам.
Когда QUIC даёт выигрыш
- Плохая сеть. На мобильном интернете с потерями пакетов TCP-соединение резко замедляется. Hysteria2 использует собственный алгоритм управления скоростью и держит высокую скорость там, где TCP проседает.
- Длинный маршрут. При большой задержке до сервера QUIC быстрее устанавливает соединение и лучше переносит смену сети, например переход с Wi-Fi на мобильный интернет.
- Запасной путь. Если у провайдера что-то сломалось именно на TCP, второй протокол на UDP часто продолжает работать.
Когда не поможет
Многие российские операторы ограничивают UDP, причём по-разному: одни режут скорость на нестандартных портах, другие душат QUIC целиком, а в режиме белых списков UDP почти всегда пропадает полностью. Поэтому проверяйте Hysteria2 у своего провайдера, а не ориентируйтесь на чужие отзывы. Основным протоколом разумно оставить VLESS Reality.
Hysteria2 или TUIC
| Hysteria2 | TUIC v5 | |
|---|---|---|
| Развитие | Активно развивается, свой сайт и документация | Оригинальный проект почти не обновляется, развитие идёт в форках |
| Установка | Официальный скрипт и systemd-сервис | Бинарник вручную или в составе sing-box |
| Маскировка | Встроенная: прикидывается HTTP/3-сайтом | Нет отдельного режима маскировки |
| Обфускация | Есть, Salamander | Нет |
| Клиенты | Hiddify, v2rayN, NekoBox и другие на sing-box | Клиенты на sing-box |
Для личного сервера проще и надёжнее Hysteria2. TUIC имеет смысл, только если он уже у вас работает или нужен конкретному клиенту. Дальше настраиваем Hysteria2.
Что понадобится
- VPS с Ubuntu 22.04, 24.04 или Debian 12. Хватит младшего тарифа.
- Домен с A-записью на IP сервера, чтобы получить настоящий сертификат. Купить домен можно в панели, подробнее в статье Домен для self-steal.
- Доступ по SSH.
Hysteria2 слушает UDP-порт, поэтому может работать на 443 одновременно с Xray, который занимает TCP-порт 443. Мешать друг другу они не будут.
Шаг 1. Установите Hysteria2
bash <(curl -fsSL https://get.hy2.sh/)Скрипт поставит бинарник и сервис hysteria-server.service, но сам сервер не запустит: сначала нужен конфиг.
Шаг 2. Выберите режим защиты
Hysteria2 предлагает два взаимоисключающих подхода, и выбрать нужно до написания конфига.
- Маскировка (masquerade). Сервер ведёт себя как обычный HTTP/3-сайт: тот, кто подключится к нему без пароля, получит веб-страницу. Для этого нужен домен и сертификат.
- Обфускация Salamander. Пакеты перемешиваются с паролем и перестают быть похожими на QUIC. Сервер больше не отвечает как HTTP/3-сайт, снаружи это просто UDP-трафик без узнаваемого протокола.
Если провайдер спокойно пропускает QUIC, выбирайте маскировку. Если QUIC режется, а произвольный UDP проходит, пробуйте Salamander.
Шаг 3. Напишите конфиг
Откройте /etc/hysteria/config.yaml и замените содержимое. Пароли придумайте длинные, например через openssl rand -base64 18.
Вариант с маскировкой и автоматическим сертификатом:
listen: :443
acme:
domains:
- ВАШ_ДОМЕН
email: ВАШ_EMAIL
auth:
type: password
password: ВАШ_ПАРОЛЬ
masquerade:
type: string
string:
content: "<!doctype html><title>ВАШ_ДОМЕН</title><p>Personal page</p>"
headers:
content-type: text/html
statusCode: 200Блок masquerade с типом string отдаёт простую страницу любому, кто зайдёт на сервер браузером. Можно указать и тип proxy с адресом сайта, но не берите чужой популярный сайт: немецкий IP, который показывает страницу крупного сервиса, выглядит странно.
Для получения сертификата Let's Encrypt должен достучаться до сервера: на время выпуска нужен свободный TCP-порт 80 или 443. Если на сервере уже работает self-steal, эти порты заняты nginx и Xray. Тогда используйте готовый сертификат: вместо блока acme укажите файлы.
tls:
cert: /etc/letsencrypt/live/ВАШ_ДОМЕН/fullchain.pem
key: /etc/letsencrypt/live/ВАШ_ДОМЕН/privkey.pemСкрипт по умолчанию запускает сервис от отдельного пользователя без доступа к /etc/letsencrypt. В этом случае переустановите Hysteria2 с запуском от root:
HYSTERIA_USER=root bash <(curl -fsSL https://get.hy2.sh/)Certbot продлевает сертификат сам, а Hysteria2 читает файлы сертификата при каждом подключении, поэтому перезапускать сервис после продления не нужно.
Вариант с обфускацией: уберите блок masquerade и добавьте:
obfs:
type: salamander
salamander:
password: ПАРОЛЬ_ОБФУСКАЦИИШаг 4. Запустите и откройте порт
systemctl enable --now hysteria-server.service
systemctl status hysteria-server.service --no-pager
ufw allow 443/udpЕсли сервис не стартует, смотрите лог: journalctl --no-pager -e -u hysteria-server.service. Чаще всего причина в отступах YAML или в том, что сертификат не выпустился.
Шаг 5. Подключите клиента
Ссылка для импорта в клиент:
hysteria2://ВАШ_ПАРОЛЬ@ВАШ_ДОМЕН:443/?sni=ВАШ_ДОМЕН#oblako-hy2Для варианта с Salamander добавьте параметры обфускации:
hysteria2://ВАШ_ПАРОЛЬ@ВАШ_ДОМЕН:443/?sni=ВАШ_ДОМЕН&obfs=salamander&obfs-password=ПАРОЛЬ_ОБФУСКАЦИИ#oblako-hy2Hiddify, v2rayN и NekoBox понимают такие ссылки. Параметр insecure=1 не ставьте: при настоящем сертификате он не нужен и только ослабляет защиту.
Если медленно или не подключается
| Симптом | Что проверить |
|---|---|
| Не подключается совсем | Открыт ли 443/udp, работает ли сервис, совпадают ли пароль и SNI |
| Подключается только по Wi-Fi | Мобильный оператор режет UDP или QUIC. Попробуйте Salamander или вернитесь к VLESS |
| Работает, но медленно | Попробуйте другой UDP-порт, некоторые операторы ограничивают скорость именно на 443/udp |
| Ошибка сертификата | Не выпустился ACME: проверьте A-запись и свободен ли 80 порт |
Порт меняется в строке listen, например listen: :8443. Не забудьте открыть новый порт в UFW и поправить ссылку на клиенте.
Только для личного использования
Правила OBLAKO разрешают личный VPN для себя и домашнего круга. Публичный доступ и перепродажа запрещены, подробнее в статье Личный VPN на VPS.