Hysteria2
Все настройки Hysteria2 в редакторе профиля, как нода обращается с трафиком и что получают и что требуют приложения.
На этой странице
Hysteria2 — протокол поверх UDP на основе QUIC. В Mistgate это протокол приложений по ссылке: человек добавляет одну ссылку и получает все серверы Hysteria2 своей группы. У каждого человека свой секретный токен; нода знает только его хеш. На этой странице — настройки профиля Hysteria2 и что они делают; как профиль создаётся и ставится на ноды, описано в разделе Профили.
Настройки#
Редактор раскладывает настройки по группам Основное, Обфускация и Продвинутое. Критичные настройки ломают уже выданные людям серверы, пока их приложение не обновит подписку; перед их сохранением редактор переспрашивает (см. Профили).
| Настройка | По умолчанию | Критичная | Что делает |
|---|---|---|---|
| Порт | 443 | да | UDP-порт, на котором слушает нода. Нода может взять для себя другой. |
| Прыжки по портам | выключено (0 и 0) | да | Диапазон UDP, который нода перенаправляет на порт. См. ниже. |
| Домен (SNI) | пусто | да | Имя сервера в сертификате — его видит приложение. Пусто — адрес ноды. |
| Сертификат | Let's Encrypt | да | Let's Encrypt или Самоподписанный (с пином). См. Профили. |
| Обфускация | Salamander | да | Нет, Salamander или Gecko (эксперимент.). |
| Пароль обфускации | сгенерирован | да | 8–128 символов, одинаковый у ноды и в приложении. |
| Маскировка | Встроенный сайт | нет | Что нода отвечает всем, кто не клиент Hysteria2: Встроенный сайт или Ничего (404). |
| Не доверять заявленной скорости клиента (всегда BBR) | включено | нет | См. «Скорость и честность». |
| Профиль BBR | Обычный | нет | Обычный, Осторожный или Агрессивный. |
| Потолок отдачи | 0 (без ограничения) | нет | Мбит/с, до 100000: с какой скоростью один клиент может отправлять на ноду. |
| Потолок загрузки | 0 (без ограничения) | нет | Мбит/с, до 100000: с какой скоростью нода может отправлять одному клиенту. |
| Пропускать UDP | включено | нет | Выключено — клиенты смогут туннелировать только TCP. |
| Выход | Напрямую | нет | Напрямую или WARP. См. WARP. |
Новый профиль всегда начинается со сгенерированного пароля Salamander и с выключенным доверием к заявленной скорости клиента.
Обфускация#
Salamander оборачивает каждый пакет так, что рукопожатие QUIC перестаёт быть похожим на QUIC; пароль общий у ноды и приложения. Gecko — другая обфускация того же ядра Hysteria2, она помечена как экспериментальная. С Нет трафик — обычный QUIC.
Смена типа или пароля ломает сервер у всех, пока их приложение не обновит подписку. Сгенерировать создаёт новый пароль.
Маскировка#
Всякий, кто подключается не как клиент Hysteria2, видит сайт. С Встроенный сайт нода показывает нейтральный встроенный сайт по HTTP/3 на UDP-порту и по HTTPS на TCP 443 рядом с ним и, как настоящий сайт, сообщает, что на UDP-порту есть HTTP/3. С Ничего (404) на любой такой запрос приходит обычный 404.
На TCP 443 нода ещё и отвечает Let's Encrypt, поэтому на нодах с профилями Let's Encrypt этот порт должен быть свободен.
Скорость и честность#
Клиент Hysteria2 может заявить свою скорость и попросить сервер слать с ней (Brutal). Тогда один клиент, заявивший огромную скорость, способен занять весь канал ноды. Если включено Не доверять заявленной скорости клиента (всегда BBR), нода не учитывает заявленную скорость и использует управление перегрузкой BBR, которое делит канал поровну. Профиль BBR настраивает, насколько быстро BBR разгоняется.
Потолок отдачи и Потолок загрузки ограничивают каждого клиента профиля. Ограничение на одного человека задаётся у пользователя: Лимит скорости в карточке пользователя (экспериментально; действует на Hysteria2). См. Пользователи и группы.
Прыжки по портам#
Если задан диапазон, нода перенаправляет каждый UDP-пакет, пришедший на любой порт из диапазона, на порт профиля. Клиент может менять порты посреди соединения, и фильтр, который закрыл один порт, его не остановит. Нода делает это перенаправлением в файрволе.
Правила:
- диапазон начинается с 1024 или выше и содержит не больше 20000 портов;
- порт профиля должен быть вне диапазона;
- диапазон не должен пересекаться с портом или диапазоном другого профиля на ноде — панель откажет до нажатия кнопки;
- нода тоже откажется от диапазона, который задел бы её SSH-порт или порт другого профиля. Сам профиль будет слушать свой порт, но диапазон не установится: у профиля будет ошибка «port hop rejected: …», а в событиях ноды — «профиль не принял прыжки по портам».
диапазон передаёт только формат Mihomo: приложения на ядре mihomo получают порты и интервал прыжка 30 секунд. Список ссылок (Happ и другие приложения, которые читают ссылки) передаёт один порт. У двойника профиля с WARP прыжков нет.
Домен (SNI) и сертификаты#
Домен, сертификат и то, как они связаны с адресом ноды, описаны в разделе Профили. Коротко: Let's Encrypt нужен домен, у которого A-запись указывает на ноду, и открытые порты 80 и 443; самоподписанный сертификат работает и по IP, приложение сверяет его отпечаток.
Как нода обращается с трафиком#
- Сниффинг. Нода читает имя назначения в первых байтах соединения (HTTP Host или имя сервера в TLS) и использует его вместо IP, который прислало приложение. DNS-ответу на стороне приложения нода не доверяет, поэтому подменённый или заблокированный DNS у человека не мешает.
- DNS ноды. Эти имена нода разрешает сама, резолверами из настройки DNS для трафика пользователей у ноды; пусто — резолвер самого сервера. Предпочитается IPv4; IPv6 — для имени без A-записи. Выход через WARP разрешает имена так же. См. Ноды и DNS.
- Закрытые адреса. Через туннель нельзя попасть в частные сети, на loopback, link-local, адреса метаданных облака и на любой адрес самой ноды.
- Пользователи. Добавление, удаление или отключение человека меняет только список токенов на ноде: больше никто не отключается. Удалённый человек или человек с закончившимся сроком отрезается на следующем же пакете.
Что получают приложения#
Hysteria2 передают два формата; какой достанется приложению, решают правила на странице Подписки.
Список ссылок. По ссылке на каждый сервер; его читают Happ и большинство других приложений:
hysteria2://<токен>@de1.example.com:443/?obfs=salamander&obfs-password=<пароль>&sni=de1.example.com#<название сервера>obfsиobfs-passwordесть, когда включена обфускация;sniесть, когда имя сервера — домен;- при самоподписанном сертификате в ссылке есть
insecure=1вместе сpinSHA256=<64 шестнадцатеричные цифры>: приложение примет только сертификат с этим отпечатком; #<название сервера>— название по шаблону, в URL-кодировке.
Mihomo YAML. Приложения на ядре mihomo (Clash Verge, FlClash и другие) получают по прокси на каждый сервер:
- name: "🇩🇪 Германия"
type: hysteria2
server: "de1.example.com"
port: 443
ports: "20000-30000"
hop-interval: "30"
password: "<токен>"
obfs: salamander
obfs-password: "<пароль>"
sni: "de1.example.com"
skip-cert-verify: false
alpn: [h3]ports и hop-interval есть только при прыжках по портам. При самоподписанном сертификате вместо проверки домена в прокси указан fingerprint с пином.
Что нужно приложениям#
- Приложение, которое читает ссылки Hysteria2 (Happ и похожие), или приложение на ядре mihomo (Clash Verge, FlClash).
- UDP до порта (и до диапазона прыжков, если он есть) должен доходить до ноды. Если хостер его режет, проверки глазами клиента падают по таймауту, а нода получает статус Трафик не идёт; смените порт. См. Здоровье.
- Для профиля с самоподписанным сертификатом нода должна один раз его запустить: пин сообщает нода. До этого в ссылке нет пина, приложения отвергают сертификат, а формат Mihomo этот сервер пропускает.
панель пишет, что самоподписанный сертификат проверен с официальным клиентом Hysteria2 и с Mihomo, а в Happ — ещё нет. Сначала проверьте на своём телефоне.