mistgate Документация
RU

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.

  1. Создайте группу, например «VLESS-тест», и дайте ей профиль Hysteria2 и новый профиль VLESS. Переведите тестирующих в эту группу: человек состоит ровно в одной группе, и именно группа определяет, какие серверы он видит.
  2. Создайте профиль VLESS. В блоке Сразу после создания → Добавить в группы Mistgate отмечает группы, где ещё нет профиля этого протокола, а для первого профиля VLESS это все группы. Оставьте отмеченной только «VLESS-тест».
  3. Поставьте профиль на ноды, которые хотите проверить. Люди из тестовой группы получат новые серверы при очередном обновлении подписки — рядом с серверами Hysteria2, отсортированными по стране, расположению и ноде, причём Hysteria2 идёт перед VLESS.

Имя сервера строится по шаблону имён подписки (по умолчанию страна, затем имя профиля), так что профиль «VLESS · 443» будет виден как «🇩🇪 DE · VLESS · 443» рядом с «🇩🇪 DE · Hysteria2 · 443». Happ ещё дописывает в конце имени загрузку ноды.

Чтобы сравнить, откройте человека на странице Пользователи: трафик за период перечислен по нодам и протоколам, а графики на обзоре тоже разбиты по протоколам. Два профиля VLESS на одной ноде считаются вместе; чтобы сравнить VLESS по TCP и по XHTTP, поставьте их на разные ноды.

Если результат устроил, добавьте профиль VLESS в остальные группы; если нет — уберите его из тестовой группы и удалите.

Править страницу на GitHub