VLESS и Hysteria2 на одной ноде
Где слушают Hysteria2 и VLESS на общей ноде, что происходит, когда обоим нужен TCP 443, как от этого зависит продление Let's Encrypt и как сначала попробовать VLESS на нескольких людях.
На этой странице
На одной ноде могут работать и Hysteria2, и VLESS. Транспорты у них разные (Hysteria2 — UDP, VLESS — TCP), поэтому пересекаются они редко. Единственное место, где это случается, — TCP 443; эта страница про него.
Что где слушает#
| Порт | Кто | Для чего |
|---|---|---|
| UDP 443 (или порт профиля) | Hysteria2 | Туннель и сайт по HTTP/3, который видит любой не-клиент |
| TCP 443 | Hysteria2 | Её сайт по HTTPS и ответ Let's Encrypt |
| TCP, порт профиля (по умолчанию 443) | VLESS | Туннель |
| TCP 80 | Нода | Let's Encrypt, если порт больше никто не занимает |
Два профиля не могут занять один и тот же порт одной сети на ноде, но UDP 443 и TCP 443 — разные порты, а профиль VLESS на другом TCP-порту Hysteria2 вообще не задевает.
Пока профиль VLESS на TCP 443 включён, нода закрывает HTTPS-сайт Hysteria2 на этом порту и открывает снова, когда порт освободится: профиль VLESS удалён, выключен или переехал на другой порт. Сам Hysteria2 по UDP и её сайт по HTTP/3 продолжают работать. Тот, кто откроет https://de1.example.com на TCP 443, теперь попадает в REALITY, а она передаёт всех, кто не клиент VLESS, на цель REALITY. Если целью служит собственный сайт ноды (по умолчанию), человек увидит тот же сайт, что показывает Hysteria2, с сертификатом самой ноды. Если целью служит другой сайт — увидит его, с его сертификатом.
Когда вы добавляете профиль VLESS на TCP 443 к ноде с включённым профилем Hysteria2 или наоборот, диалог предупреждает об этом (hy2_decoy_paused): в нём имена обоих профилей, порт и цель. Предупреждение не мешает продолжить.
Как поделить ноду#
| Способ | Что остаётся у Hysteria2 | Что нужно знать |
|---|---|---|
| VLESS на другом TCP-порту, например 8443 | Всё: её сайт на TCP 443 и продление сертификата | Порт нужно открыть у хостера. Некоторые сети фильтруют порты, кроме 443, — через такой порт VLESS в них не подключится. |
| VLESS на TCP 443, целью REALITY служит другой сайт | Туннель. Её HTTPS-сайт приостановлен | Сертификат профиля Hysteria2 с Let's Encrypt теперь продлевается только через TCP 80: см. ниже. |
| VLESS на TCP 443, целью REALITY служит собственный сайт ноды (по умолчанию) | Туннель, тот же сайт, который теперь показывает REALITY, и продление сертификата | Нужны домен на ноде и агент v0.1.35 или новее. См. VLESS REALITY. |
Первый способ ничего не стоит и ничего не меняет для Hysteria2 — выбирайте его, если порт можно открыть. Третий отдаёт VLESS порт, который пропускают все сети, и сохраняет сайт и продление: берите его на любой ноде с доменом. Второй делает то же для ноды без домена, ценой сайта и ценой TCP 80. О VLESS через TLS, напрямую или за CDN, — в разделе TLS и CDN.
Сертификаты#
Let's Encrypt-сертификат для профиля Hysteria2 нода получает, отвечая на проверку Let's Encrypt одним из двух способов: через TCP 80 или через TCP 443 — сайтом Hysteria2. Если целью REALITY служит собственный сайт ноды, REALITY передаёт проверку с TCP 443 этому сайту, и нода отвечает на неё сама: продление работает, TCP 80 не нужен. Если целью служит другой сайт, проверка, пришедшая на TCP 443, попадает на него и не проходит, пока сайт Hysteria2 приостановлен. Остаётся TCP 80:
- Держите TCP 80 открытым из интернета на каждой ноде, где есть профиль Hysteria2 с Let's Encrypt и профиль VLESS на TCP 443 с чужим сайтом в роли цели, и не занимайте его другими программами.
- Неудачная попытка на 443 ничему не вредит: со следующим заказом нода переходит на проверку по 80, а Let's Encrypt допускает пять неудачных проверок на имя в час.
- Профилю Hysteria2 с самоподписанным сертификатом продлевать нечего, его это не касается. Самой REALITY сертификат не нужен.
Предупреждение Сертификат скоро истечёт (cert_expiry, см. Здоровье) срабатывает за 14 дней. Пока TCP 443 занят VLESS, доктор не может прочитать сертификат, который там отдаёт профиль Hysteria2; тогда он берёт срок, который сообщает нода для сертификата, выданного последним. После продления, когда с тех пор никто не заходил, эта дата отстаёт, и предупреждение может прийти раньше времени; следующий посетитель его снимает.
Что Mistgate проверяет в портах#
Проверка портов измеряет UDP: шлёт датаграммы на ноду и считает, сколько дошло. Дошёл ли до ноды TCP-порт, она не показывает и TCP 80 не проверяет. Добавив профиль VLESS, проверьте его порт из другой сети, например nc -vz de1.example.com 8443, или подключитесь с телефона.
Пробуем VLESS на нескольких людях#
VLESS можно сначала выдать нескольким людям и посмотреть, как он ведёт себя рядом с Hysteria2.
- Создайте группу, например «VLESS-тест», и дайте ей профиль Hysteria2 и новый профиль VLESS. Переведите тестирующих в эту группу: человек состоит ровно в одной группе, и именно группа определяет, какие серверы он видит.
- Создайте профиль VLESS. В блоке Сразу после создания → Добавить в группы Mistgate отмечает группы, где ещё нет профиля этого протокола, а для первого профиля VLESS это все группы. Оставьте отмеченной только «VLESS-тест».
- Поставьте профиль на ноды, которые хотите проверить. Люди из тестовой группы получат новые серверы при очередном обновлении подписки — рядом с серверами Hysteria2, отсортированными по стране, расположению и ноде, причём Hysteria2 идёт перед VLESS.
Имя сервера строится по шаблону имён подписки (по умолчанию страна, затем имя профиля), так что профиль «VLESS · 443» будет виден как «🇩🇪 DE · VLESS · 443» рядом с «🇩🇪 DE · Hysteria2 · 443». Happ ещё дописывает в конце имени загрузку ноды.
Чтобы сравнить, откройте человека на странице Пользователи: трафик за период перечислен по нодам и протоколам, а графики на обзоре тоже разбиты по протоколам. Два профиля VLESS на одной ноде считаются вместе; чтобы сравнить VLESS по TCP и по XHTTP, поставьте их на разные ноды.
Если результат устроил, добавьте профиль VLESS в остальные группы; если нет — уберите его из тестовой группы и удалите.