VLESS долго подключается: почему соединение зависает перед запуском

VLESS долго подключается или зависает на Connect

Если VLESS долго подключается, это ещё не то же самое, что полный timeout.

Типичный сценарий выглядит так:

Connect
↓
5–20 секунд ожидания
↓
Connected
↓
дальше всё работает нормально

Или немного иначе:

Connect
↓
Connected появляется быстро
↓
первый сайт долго думает
↓
после этого интернет работает нормально

В обоих случаях пользователь видит одну общую проблему:

VPN очень долго запускается.

Но причины могут находиться на совершенно разных этапах.

Перед тем как VLESS начнёт передавать обычный пользовательский трафик, клиенту потенциально требуется:

найти IP VLESS сервера
↓
установить базовое TCP соединение
↓
выполнить TLS/REALITY handshake
↓
поднять выбранный transport
↓
передать VLESS запрос
↓
серверу подключиться к нужному ресурсу

Если каждый этап занимает доли секунды, пользователь просто нажимает Connect и сразу получает интернет.

Если один из них ждёт несколько секунд, возникает ощущение:

VLESS зависает при подключении.

Разберём, как понять, где именно появляется задержка.

Короткий ответ

Если VLESS долго подключается, проверяйте в таком порядке:

  1. Другой VLESS сервер.
  2. Wi-Fi против LTE/5G.
  3. TCP Ping и Via Proxy в HAPP.
  4. Обновление подписки.
  5. DNS адреса самого VLESS сервера.
  6. IPv4/IPv6.
  7. TUN против Proxy на компьютере.
  8. Другой transport/server path.
  9. Серверные логи, если сервер ваш.

Особенно полезно сравнить:

TCP Ping → 30 мс
Via Proxy → 2500 мс

Такой результат уже показывает, что базовое TCP соединение устанавливается быстро, а задержка появляется позже.

HAPP прямо разделяет эти тесты: TCP Ping проверяет установление TCP соединения, тогда как Via Proxy проходит через более полный путь, включая DNS, TCP, TLS и обращение через сам proxy.


Что происходит после нажатия Connect

Снаружи всё выглядит как одна операция:

подключить VPN.

Внутри это несколько разных действий.

Упрощённо:

HAPP
↓
DNS VLESS сервера
↓
IP
↓
TCP connection
↓
TLS / REALITY
↓
XHTTP / RAW / gRPC / другой transport
↓
VLESS
↓
Xray сервер

И только после этого начинается обычная передача пользовательского трафика.

Project X отдельно разделяет:

  • proxy protocol;
  • transport method;
  • transport security;
  • дополнительные socket-настройки.

Например, VLESS может работать поверх XHTTP и REALITY или поверх другого совместимого transport/security сочетания.

Поэтому фраза:

VLESS подключается 10 секунд

сама по себе ещё не говорит, что именно VLESS аутентификация заняла десять секунд.


Первый вопрос: что именно долго происходит

Есть несколько разных вариантов.

Вариант 1. Долго висит Connect

Например:

Connecting...
↓
10 секунд
↓
Connected

Здесь стоит проверять путь до VLESS сервера и процесс установления transport connection.

Вариант 2. Connected появляется сразу, но интернета несколько секунд нет

Здесь уже интереснее:

  • TUN;
  • routing;
  • DNS;
  • первый proxy request.

Вариант 3. Сервер подключается быстро, но первый сайт открывается 10 секунд

Это ещё меньше похоже на задержку самого VLESS handshake.

Проверяйте:

  • DNS конечного сайта;
  • server outbound;
  • IPv4/IPv6;
  • маршрут до destination.

Вариант 4. Долго обновляется список серверов

Это вообще может быть не VLESS connection.

HAPP в этот момент обращается к серверу подписки.


Подписка и VLESS сервер — разные вещи

Очень полезно разделять два пути:

HAPP
↓
subscription URL
↓
получить список серверов

и:

HAPP
↓
VLESS сервер
↓
интернет

Если HAPP долго показывает обновление подписки, это не означает, что VLESS handshake медленный.

Официальная документация HAPP указывает отдельный timeout для добавления и обновления подписки: если subscription server не ответил в течение 9 секунд, приложение показывает соответствующую ошибку.


Поэтому сначала определите: Connect или Refresh

Это очень простая, но полезная диагностика.

Медленный Refresh

Проверяем:

  • subscription host;
  • DNS;
  • CDN подписки;
  • доступность URL.

Медленный Connect

Проверяем:

  • VLESS endpoint;
  • transport;
  • TLS/REALITY;
  • сеть.

Это совершенно разные серверы и совершенно разные сетевые соединения.


Первый реальный тест — другой сервер

Допустим:

Netherlands
→ подключение 12 секунд
France
→ подключение 1 секунда
Turkey
→ подключение 1 секунда

В такой ситуации вряд ли нужно начинать с:

  • переустановки HAPP;
  • Windows Firewall;
  • глобального отключения IPv6.

У вас уже есть два сервера, которые на том же устройстве работают быстро.

Проверять нужно конкретный NL endpoint или маршрут до него.


Если все серверы подключаются медленно

Тогда становится интереснее общая часть:

  • сеть;
  • DNS;
  • HAPP;
  • TUN;
  • устройство.

Следующий сильный тест:

Wi-Fi ↔ LTE/5G

Wi-Fi медленно, LTE быстро

Например:

Домашний Wi-Fi
→ Connect 15 секунд
LTE
→ Connect 1 секунда

VLESS профиль явно способен подключаться быстро.

Изменился только сетевой путь.

Проверяйте:

  • домашнего провайдера;
  • DNS;
  • IPv6;
  • роутер;
  • маршрут до сервера.

LTE медленно, Wi-Fi быстро

Логика та же.

Подозреваем:

  • мобильного оператора;
  • 4G/5G;
  • CGNAT не сам по себе, а реальный маршрут;
  • IPv6;
  • конкретный server IP.

Попробуйте также другую VLESS локацию.


DNS VLESS сервера может задерживать подключение

Допустим, VLESS endpoint указан не IP адресом:

203.0.113.10

а доменом:

server.example.com

Перед установлением соединения этот домен нужно разрешить.

Если DNS отвечает медленно, клиент ещё даже не начал полноценный transport handshake.

Получается:

Connect
↓
DNS...
↓
DNS...
↓
получен IP
↓
TCP

Пользователь всё это время просто видит:

Connecting.


Xray отдельно управляет разрешением адреса proxy сервера

У sockopt есть параметр:

domainStrategy

Для VLESS outbound он отвечает именно за разрешение домена proxy сервера, потому что базовое outbound соединение устанавливается с VLESS endpoint.

По умолчанию используется:

AsIs

В этом режиме Xray передаёт домен Go, а тот использует системные DNS-настройки операционной системы.

Это важно: медленный системный DNS способен напрямую увеличить время запуска VLESS.


Как проверить DNS на Windows

Если известен домен сервера:

Resolve-DnsName server.example.com

Посмотрите:

  • отвечает ли запрос сразу;
  • возвращается ли IPv4;
  • возвращается ли IPv6;
  • нет ли нескольких секунд ожидания.

Можно повторить несколько раз.

Если первый запрос занимает пять секунд, а последующие мгновенные, DNS/cache становится очень интересным кандидатом.


На Linux и macOS

Можно использовать:

dig server.example.com

или:

host server.example.com

Опять же важен не только ответ:

IP найден.

Но и:

насколько быстро.


Не меняйте домен сервера на IP вручную в готовом VLESS профиле

Это плохой универсальный совет.

TLS/REALITY и transport configuration могут использовать:

  • ServerName;
  • SNI;
  • другие параметры, связанные с доменом.

Поэтому тестировать DNS лучше диагностическими инструментами.

Не нужно переписывать provider-managed VLESS ссылку.


IPv6 может создавать дополнительную задержку

Представим, DNS возвращает:

AAAA → IPv6
A    → IPv4

но реальный IPv6 путь работает плохо.

Клиент может сначала попытаться подключиться по одному address family, а затем перейти к другому.

Это уже способно добавить заметную паузу.


В актуальном Xray здесь есть важный нюанс

При стандартном:

domainStrategy = AsIs

Xray передаёт подключение сетевой реализации Go.

Для TCP Go использует собственную Happy Eyeballs логику: если предпочтительное семейство адресов не устанавливает соединение нормально, попытка с другим family начинается примерно через 300 мс.

То есть современная реализация не обязана ждать полного многосекундного IPv6 timeout перед IPv4.

Но это не гарантирует отсутствие любых IPv6 проблем.


Когда задержка IPv6 всё равно возможна

Например:

  • DNS вернул только проблемный AAAA;
  • DNS сам работает плохо;
  • проблема находится позже TCP connect;
  • применяется другая domainStrategy;
  • network stack ведёт себя иначе;
  • endpoint действительно доступен только по проблемному маршруту.

Поэтому тест:

временно сравнить IPv4 и IPv6

остаётся полезным.

Но выключать IPv6 навсегда первым действием не нужно.


Xray имеет и собственный Happy Eyeballs

Если domainStrategy отличается от AsIs, Xray может использовать собственный механизм Happy Eyeballs.

Он запускает гонку между подходящими IP адресами и использует первый успешный.

В текущей документации рекомендуемая задержка между попытками:

250 мс

при этом функция выключена по умолчанию, пока соответствующая настройка не задана.

Это уже скорее область настройки собственного сервера, чем обычного пользователя HAPP.


Дальше идёт TCP connection

После получения IP клиент должен установить TCP соединение.

Упрощённо:

Client
↓ SYN
Server
↓ SYN-ACK
Client
↓ ACK

Если маршрут хороший, это занимает примерно один сетевой RTT.

Если пакеты теряются, TCP вынужден повторять попытки.

Тогда даже обычный connect может заметно задерживаться.


Ping 40 мс не гарантирует TCP connect за 40 мс

ICMP Ping и TCP connection — разные операции.

Сеть может:

  • нормально пропускать ICMP;
  • хуже работать с конкретным TCP портом.

И наоборот.

Поэтому HAPP отдельно предлагает:

  • ICMP Ping;
  • TCP Ping;
  • Via Proxy Ping.

Что показывает TCP Ping в HAPP

TCP Ping измеряет именно время установления TCP connection до сервера.

Это уже намного ближе к реальному запуску VLESS, чем обычный ICMP.

Например:

ICMP → 35 мс
TCP  → 40 мс

Базовый путь выглядит нормально.

Если VLESS всё равно подключается 8 секунд:

задержку стоит искать позже TCP.


Но TCP Ping через CDN имеет ограничение

Если сервер стоит за CDN, HAPP предупреждает:

TCP Ping может фактически измерять задержку только до ближайшей CDN точки, а не до конечного origin сервера.

Например:

Client
↓ 15 мс
CDN
↓ ???
Origin Xray

TCP Ping показывает:

15 мс

но реальный proxy path при этом может быть значительно медленнее.


Поэтому Via Proxy полезнее

HAPP Via Proxy проходит гораздо более полный путь.

Официальная документация описывает последовательность примерно так:

разрешить домен VLESS сервера
↓
установить TCP соединение
↓
выполнить TLS handshake, если нужен
↓
на сервере разрешить домен тестового ресурса
↓
подключиться к ресурсу
↓
получить ответ

Именно поэтому HAPP называет Via Proxy наиболее показательным вариантом оценки реального пользовательского соединения.


Очень полезная комбинация результатов

Например:

TCP Ping      → 35 мс
Via Proxy     → 2200 мс

Что мы уже знаем?

TCP путь до первой точки устанавливается быстро.

Задержка появляется где-то дальше:

  • TLS/REALITY;
  • transport;
  • CDN/origin;
  • server outbound;
  • DNS на сервере;
  • тестовый destination.

Это уже значительно лучше, чем:

VPN почему-то тормозит.


А если TCP Ping тоже несколько секунд

Например:

TCP Ping → 4000 мс

Тогда проблема возникает очень рано.

Проверяйте:

  • маршрут;
  • server IP;
  • port;
  • IPv4/IPv6;
  • сеть.

TLS ещё даже не является главным подозреваемым.


Следующий этап — TLS или REALITY

После базового соединения может потребоваться transport security.

Xray поддерживает:

TLS

и:

REALITY

как отдельный transport-security layer.

То есть:

TCP уже есть

ещё не означает:

VLESS готов к работе.

TLS требует отдельного handshake

Клиент и сервер должны:

  • согласовать параметры TLS;
  • обменяться handshake data;
  • проверить сертификат, если используется обычный TLS;
  • создать защищённое соединение.

Xray использует TLS реализацию Go; документация отмечает, что в обычном случае согласовывается TLS 1.3.

На хорошем соединении это происходит быстро.

Но packet loss или неправильная server configuration способны заметно увеличить время либо полностью сорвать handshake.


REALITY тоже имеет handshake

REALITY изменяет TLS поведение и использует характеристики целевого сайта для внешнего вида соединения.

То есть REALITY не устраняет этап handshake.

Он меняет его реализацию и проверку.

Если TCP устанавливается моментально, но Via Proxy долго ждёт, transport security становится одним из кандидатов.


Не меняйте SNI и public key ради скорости

Если профиль в итоге успешно подключается, случайная смена:

  • ServerName;
  • SNI;
  • public key;
  • fingerprint;

скорее создаст новую проблему, чем ускорит соединение.

Для готового сервиса эти параметры должны приходить из подписки.


После security идёт transport

VLESS может использовать разные способы передачи.

Например:

  • RAW;
  • XHTTP;
  • WebSocket;
  • gRPC.

Project X рассматривает transport method как отдельный слой под proxy protocol.

Поэтому даже после TCP/TLS transport может потребовать дополнительной инициализации.


WebSocket требует HTTP Upgrade

Для WebSocket клиент сначала выполняет HTTP handshake/upgrade.

Только после него появляется рабочий двунаправленный WebSocket stream.

Если перед Xray стоит:

  • CDN;
  • Nginx;
  • другой reverse proxy,

в цепочку добавляются дополнительные сетевые компоненты.


XHTTP тоже может проходить через промежуточную инфраструктуру

Например:

HAPP
↓
CDN
↓
Nginx
↓
Xray

TCP connection пользователя может быть очень быстрым до CDN.

Но дальше CDN должен:

  • обработать HTTP request;
  • выбрать origin;
  • установить или переиспользовать origin connection;
  • передать stream Xray.

Поэтому low TCP Ping до CDN ещё не гарантирует мгновенный XHTTP Connect.


Direct endpoint и CDN endpoint могут подключаться по-разному

Если вы администрируете собственный сервер, полезный A/B тест:

Client
↓
Xray напрямую

против:

Client
↓
CDN/reverse proxy
↓
Xray

Если direct запускается моментально, а proxied path каждый раз думает пять секунд:

проблема уже заметно локализована.


Но обычному пользователю direct endpoint может быть недоступен

И это нормально.

Пользователь готового VPN не обязан:

  • знать origin IP;
  • обходить CDN;
  • редактировать transport.

Его диагностический вариант проще:

другой server/profile из той же подписки.


Аутентификация VLESS обычно не должна сама занимать десять секунд

VLESS — лёгкий stateless proxy protocol.

Project X описывает его как лёгкий stateless transport protocol между client и server.

Если один и тот же профиль каждый раз долго ждёт перед подключением, чаще полезнее искать задержку в:

  • DNS;
  • network connect;
  • TLS/REALITY;
  • transport path;

чем считать, что сервер десять секунд «проверяет UUID».


Что означает Xray handshake = 60 секунд

Здесь легко сделать неправильный вывод.

В Xray policy есть параметр:

handshake: 60

По умолчанию он действительно равен 60 секундам.

Но это не означает:

каждый VLESS client должен ждать до 60 секунд перед подключением.


60 секунд — это лимит inbound handshake

Документация Xray уточняет:

когда inbound обрабатывает новое соединение и handshake занимает больше заданного времени, connection прерывается.

То есть это защитный верхний лимит на стороне Xray policy.

Это не нормальная длительность handshake.

Рабочее соединение должно установиться значительно быстрее.


И connIdle = 300 секунд здесь тоже почти не при чём

Xray по умолчанию имеет:

connIdle: 300

Он закрывает connection, если в течение 300 секунд не передавались данные.

Это настройка уже существующего idle connection.

Она не объясняет:

почему новый VPN запускается 15 секунд.

Не смешивайте startup delay и idle timeout.


Почему VLESS может долго подключаться только первый раз

Например:

первый Connect → 6 секунд
следующий Connect → 1 секунда

Такое поведение часто заставляет посмотреть на:

  • DNS cache;
  • TLS state;
  • CDN connection;
  • ОС network state.

Первый запуск может требовать больше подготовительных операций.

Но если разница воспроизводится постоянно, это уже полезный диагностический паттерн.


DNS cache способен сильно изменить второй тест

Первый запрос:

server.example.com
↓
DNS lookup

Второй:

server.example.com
↓
готовый cached IP

Если второй Connect резко быстрее, DNS становится особенно интересен.


Но не делайте вывод по одному запуску

Сеть случайна.

Один Connect может занять:

  • 300 мс;
  • второй 1 секунду;
  • третий 400 мс.

Проверяйте несколько раз.

Именно HAPP в документации также советует повторять ping tests, потому что разовые всплески задержки возможны из-за нагрузки сети.


VLESS Connected быстро, но первый сайт долго открывается

Тогда нужно разделить:

tunnel startup

и:

первый destination connection.

Схема уже такая:

VLESS tunnel готов
↓
пользователь вводит example.com
↓
DNS
↓
routing
↓
server outbound
↓
destination

Проблема может появиться после полноценного подключения VLESS.


DNS конечного сайта тоже может тормозить

В зависимости от routing/config домен может разрешаться:

  • локально;
  • встроенным DNS Xray;
  • на стороне proxy сервера.

Xray отдельно различает разрешение домена самого proxy endpoint и домена целевого proxied request.

Поэтому:

DNS VLESS сервера быстрый

ещё не доказывает:

DNS всех сайтов быстрый.


Как отличить эти два DNS

Если HAPP долго висит прямо на Connect:

больше интересен VLESS endpoint.

Если Connected уже появился, а новый сайт долго не открывается:

интересен DNS/destination после tunnel.

Это очень полезное различие.


Private DNS тоже способен влиять

На Android пользователь может одновременно использовать:

  • HAPP;
  • Android Private DNS;
  • сторонний DNS resolver.

Если после включения конкретного Private DNS запуск или первый доступ к сайтам стал заметно медленнее, временно верните:

Automatic

и повторите тест.

Не как постоянное лечение, а как A/B диагностику.


Browser DoH тоже может давать другой результат

Например:

Chrome
→ собственный DoH

а:

Discord
→ системный DNS

Один начинает работать сразу, другой думает пять секунд.

Это уже не похоже на медленный VLESS handshake.


Медленный старт только в TUN Mode

Очень важный Windows сценарий.

Например:

HAPP Proxy Mode
→ подключается сразу
HAPP TUN
→ 8 секунд запуска

Сам VLESS server при этом одинаковый.

Разница находится локально:

  • создание tunnel;
  • routes;
  • firewall;
  • network stack.

HAPP имеет два режима TUN stack

В текущей документации HAPP для desktop указаны:

system

и:

gvisor

system использует системный сетевой stack и зависит от корректных routes/firewall.

gvisor работает в userspace и меньше зависит от части kernel/network rules.

Поэтому сравнение двух режимов может быть очень полезным диагностическим тестом.


system медленный, gVisor быстрый

Тогда чинить VLESS сервер в первую очередь нелогично.

Проверяйте локальную Windows networking configuration:

  • старые VPN adapters;
  • firewall;
  • network filters;
  • маршруты.

И наоборот

Если оба TUN режима одинаково долго ждут, но другой VLESS server подключается быстро:

снова возвращаемся к server path.


Другие VPN могут замедлять запуск

На компьютере могут одновременно остаться компоненты:

  • WireGuard;
  • WARP;
  • OpenVPN;
  • Amnezia;
  • корпоративного VPN;
  • сетевого антивируса.

Даже если интерфейс другого VPN сейчас показывает Disconnect, его:

  • adapter;
  • service;
  • filter driver

может оставаться установленным.

Для контрольного теста лучше перезагрузить систему и запустить только HAPP.


Не удаляйте все сетевые адаптеры сразу

Сначала доказать проблему.

Если:

Proxy → быстро
TUN → медленно

локальная сетевaя часть действительно подозрительна.

Если и Proxy медленный:

массовое удаление адаптеров вряд ли первый разумный шаг.


Серверная нагрузка тоже влияет на Connect

Если Xray сервер перегружен:

  • CPU;
  • RAM;
  • файловыми дескрипторами;
  • большим количеством connections;

обработка нового соединения может замедлиться.

Особенно показательно:

утром → Connect 1 секунда
вечером → Connect 8 секунд

каждый день.


Но высокий ping и нагрузка сервера — не одно и то же

Сеть до VPS может отвечать быстро:

TCP Ping → 30 мс

а процесс Xray или reverse proxy быть перегружен.

Тогда Via Proxy уже покажет значительно более плохой результат.


Именно поэтому TCP и Via Proxy полезно сравнивать вместе

Например:

TCP PingVia ProxyЧто подозревать
30 мс40 мсВсё выглядит быстро
30 мс2000 мсЗадержка после TCP
1500 мс1600 мсСеть/endpoint
TimeoutTimeoutСервер/порт/маршрут
30 мсTimeoutTransport/TLS/server outbound

Это не абсолютный диагноз, но очень хороший первый фильтр.


Via Proxy включает и target site

Нужно учитывать ещё одну тонкость.

HAPP Via Proxy проверяет не только сам VLESS endpoint.

Он также обращается через VPN к тестовому ресурсу.

Поэтому очень большой Via Proxy может быть связан и с:

  • server outbound;
  • DNS тестового сайта;
  • самим check URL.

Официальная последовательность HAPP прямо включает resolution и TLS соединение с тестовым ресурсом.


Поэтому попробуйте несколько серверов одним и тем же методом

Если:

NL Via Proxy → 1800 мс
FR Via Proxy → 70 мс
TR Via Proxy → 80 мс

проблема почти наверняка специфична для NL path.


Низкий Ping не означает высокую скорость

И наоборот.

HAPP отдельно предупреждает, что Ping показывает latency, а не bandwidth.

Статья сейчас именно про время установки соединения.

Не нужно ожидать, что сервер:

20 мс

обязательно даст:

1 Гбит/с.

Это другая характеристика.


Медленный Connect после сна компьютера

Ещё один бытовой паттерн:

Windows sleep
↓
wake
↓
первый Connect очень долгий
↓
следующий нормальный

После сна могут измениться:

  • Wi-Fi state;
  • IP;
  • routes;
  • DNS;
  • virtual adapter state.

Простой тест:

  1. Disconnect.
  2. Подождать несколько секунд.
  3. Перезапустить HAPP.
  4. Подключиться снова.

Если проблема возникает только после sleep/wake, server config становится менее вероятным кандидатом.


Аналогично после Wi-Fi → Ethernet

Смена underlying network может оставить старые:

  • connections;
  • routes;
  • DNS state.

Переподключение клиента после смены интерфейса — нормальный диагностический шаг.


Медленный Connect только после смены Wi-Fi → LTE на телефоне

Та же логика.

Существовавший network path больше не подходит.

Если ручной Disconnect/Connect после смены сети сразу исправляет ситуацию, это отличается от постоянного медленного server handshake.


Transport тоже имеет значение

Допустим один и тот же сервер предоставляет:

VLESS XHTTP

и:

VLESS RAW

Если один вариант стартует моментально, а второй постоянно ждёт несколько секунд, стоит исследовать transport path.

Особенно если XHTTP проходит через:

  • CDN;
  • reverse proxy.

Но transport нужно сравнивать на одном сервере

Плохой тест:

XHTTP → Netherlands
RAW → Turkey

Вы одновременно поменяли:

  • transport;
  • страну;
  • IP;
  • route.

Так нельзя понять, что вызвало разницу.


Не меняйте XHTTP на WebSocket случайно

Transport клиента и сервера должен совпадать.

Project X прямо указывает, что transport settings сторон должны быть совместимы; например, WebSocket с одной стороны должен соответствовать WebSocket с другой.

Поэтому type не является переключателем:

попробую другой — вдруг быстрее.


Старый профиль тоже может долго пытаться подключиться

Например оператор:

  • заменил IP;
  • изменил server path;
  • обновил transport.

А HAPP использует сохранённую старую конфигурацию.

Вместо немедленного success клиент пытается достучаться до старого endpoint и ждёт сетевые timeout/retry.

Первое действие:

Refresh subscription.


Если после Refresh стало быстро — причина найдена

Не было необходимости:

  • менять DNS Windows;
  • отключать IPv6;
  • переустанавливать клиент.

Просто локальная копия профиля устарела.


Один профиль может быть резервным, но мёртвым

Если subscription содержит старый server entry, он способен:

  • отвечать DNS;
  • иметь открытый port;
  • но уже не обслуживать VLESS корректно.

Такой node может создавать длинный Connect.

Если другие серверы работают быстро — используйте их и сообщите оператору.


Что делать администратору собственного VLESS сервера

Если инфраструктура ваша, можно разделить подключение по этапам.

DNS

dig server.example.com

TCP

time nc -vz server.example.com 443

Listening socket

ss -lntp

Xray log

journalctl -u xray -f

Название systemd unit может отличаться.


Смотрите, когда запрос появляется в server log

Очень полезный тест.

Нажимаем Connect в:

10:00:00

а Xray впервые видит клиента только:

10:00:08

Задержка находится до Xray.

Проверяйте:

  • DNS;
  • сеть;
  • CDN;
  • reverse proxy.

Если Xray видит клиента мгновенно, а Connected появляется через 8 секунд

Тогда проблема уже ближе к:

  • transport processing;
  • VLESS handshake;
  • server outbound;
  • приложению.

Это намного более узкая область.


Если перед Xray стоит Nginx

Смотрите одновременно:

tail -f /var/log/nginx/access.log

и:

tail -f /var/log/nginx/error.log

Если Nginx видит запрос сразу, а Xray только через несколько секунд:

задержка находится между reverse proxy и backend.


Если используется CDN

Сравните временные точки:

клиент
↓
CDN
↓
origin
↓
Xray

Низкий client → CDN latency ещё ничего не говорит о CDN → origin.

Это одна из причин, почему HAPP предупреждает об ограниченности TCP Ping при CDN.


Packet loss особенно неприятен во время handshake

Обычная загрузка умеет продолжать поток после retransmission.

Во время установки соединения потеря одного важного packet способна задержать весь следующий этап.

Например:

TCP established
↓
TLS ClientHello потерян
↓
retransmission
↓
handshake продолжился

Пользователь видит только:

Connecting…


Поэтому стабильность важнее идеального ping

Сервер:

25 мс + packet loss

может подключаться хуже:

55 мс + стабильный route.

Для VPN это очень типичный случай.


Как проверить packet loss

Можно начать с обычного длительного ping до server IP, если ICMP разрешён.

Но отсутствие ICMP loss не гарантирует отсутствие потерь TCP.

Для серьёзной диагностики полезнее:

  • mtr;
  • packet capture;
  • статистика TCP retransmissions.

Обычному пользователю это редко требуется.


Когда достаточно просто сменить сервер

Если:

  • один node подключается 15 секунд;
  • остальные — моментально;

самое рациональное решение:

использовать другой node.

Не нужно превращать бытовую проблему в исследование маршрутизации интернета, если сервис уже даёт рабочую альтернативу.


А поддержке отправить результат сравнения

Например:

HAPP на Windows. NL подключается 10–15 секунд, TCP Ping 32 мс, Via Proxy 1800–2500 мс. FR и TR через ту же сеть подключаются за секунду и Via Proxy около 70 мс.

Это очень полезное описание.


Что написать, если проблема зависит от сети

Например:

Тот же NL профиль через домашний Wi-Fi подключается около 12 секунд, через LTE hotspot — примерно за секунду. Остальные настройки не менялись.

Тут уже стоит проверять ISP route.


Что не стоит писать

VPN тупит.

Из этого совершенно непонятно:

  • Connect;
  • скорость;
  • ping;
  • DNS;
  • server.

Чем точнее этап, тем быстрее находится причина.


Быстрая таблица диагностики

СимптомЧто проверить первым
Один сервер долго подключаетсяКонкретный server/route
Все серверы долго подключаютсяNetwork/client
Wi-Fi медленно, LTE быстроISP/router/DNS
LTE медленно, Wi-Fi быстроMobile route
TCP Ping быстрый, Via Proxy медленныйTLS/transport/server path
TCP Ping медленныйDNS/TCP/network
TCP Ping до CDN быстрыйЕщё не доказывает скорость origin
Connect быстрый, первый сайт медленныйDNS/destination
Refresh занимает около 9 секунд и падаетSubscription server
Только TUN долго стартуетTUN/routes/firewall
Proxy быстрый, TUN медленныйЛокальная система
После Refresh стало быстроСтарый profile
Только первый Connect медленныйDNS/cache/network state
После sleep медленноAdapter/routes/network state
Один transport медленныйTransport/reverse proxy path
Сервер видит клиента через 10 секундПроблема до Xray
Xray видит сразу, клиент ждётServer/transport processing

Самая полезная последовательность для обычного пользователя

Если VLESS долго подключается, не начинайте с глубокой настройки Xray.

Сделайте:

  1. Другой сервер.
  2. Повторить Connect несколько раз.
  3. Wi-Fi ↔ LTE.
  4. TCP Ping.
  5. Via Proxy.
  6. Refresh subscription.
  7. Proxy ↔ TUN на компьютере.
  8. Перезапустить HAPP.
  9. Только потом смотреть DNS/IPv6 глубже.

В большинстве случаев уже первые пять пунктов сильно сужают поиск.


Чего делать не нужно

Из-за медленного Connect не нужно сразу:

  • менять UUID;
  • менять SNI;
  • менять public key;
  • менять flow;
  • отключать IPv6 навсегда;
  • переключать XHTTP на WebSocket;
  • переустанавливать Windows;
  • менять десять DNS серверов.

Сначала определите:

на каком этапе появляется задержка.


Почему смена UUID обычно бессмысленна

Если VLESS в итоге успешно Connected:

server уже принял соответствующую конфигурацию.

Неправильный credential чаще приводит к невозможности нормального подключения, а не к стабильному сценарию:

десять секунд ждёт, а потом каждый раз отлично работает.


Почему отключение IPv6 — только тест

Если IPv4-only вдруг уменьшает Connect:

10 секунд → 1 секунда

это очень хороший диагностический результат.

Но правильный вывод:

нужно исследовать IPv6 path/address selection.

А не:

IPv6 всегда плохой.

Современный Xray и Go специально имеют механизмы выбора между address families.


Почему смена DNS — тоже тест

Если новый resolver ускорил Connect, нужно понять:

  • старый DNS отвечал медленно;
  • возвращал другой endpoint;
  • была проблема IPv6;
  • изменился CDN route.

Не всякое улучшение после смены DNS означает:

этот DNS объективно быстрее для всего интернета.


Если нужен готовый VLESS без ручной диагностики сервера

В готовом сервисе пользователю полезно иметь несколько серверных локаций.

Тогда при проблеме:

один server → Connect 15 секунд

можно переключиться:

другой server → Connect 1 секунда

и продолжить работу, пока оператор разбирается с проблемным маршрутом.

VLESS.ART использует готовую подписку для HAPP и совместимых клиентов с несколькими локациями и без необходимости вручную собирать Xray конфигурацию.

Актуальные варианты доступа находятся в разделе «Тарифы» на VLESS.ART.


Какой Connect можно считать нормальным

Нет универсального стандарта:

ровно 300 мс.

Слишком многое зависит от:

  • расстояния;
  • DNS;
  • transport;
  • TLS/REALITY;
  • CDN;
  • сети.

Но при хорошем маршруте пользователь обычно не должен регулярно смотреть на Connecting... десять-двадцать секунд.

Если такая задержка:

  • стабильна;
  • воспроизводится;
  • заметно отличается от других серверов;

это уже хороший повод для диагностики.


А разовый Connect на пять секунд?

Сам по себе ничего не доказывает.

Сеть могла:

  • потерять packet;
  • обновить DNS;
  • сменить Wi-Fi state.

Повторите тест.

Если следующие подключения занимают секунду — возможно, ничего чинить вообще не нужно.


Когда точно стоит обращаться в поддержку

Если:

один и тот же сервер
↓
каждый Connect 10–20 секунд

при этом:

  • другие серверы быстрые;
  • проблема есть на нескольких устройствах;
  • через разные сети результат похожий.

Тогда у оператора уже достаточно оснований смотреть:

  • endpoint;
  • reverse proxy;
  • Xray;
  • server route.

Итог

Если VLESS долго подключается, сама надпись Connecting... не показывает, какой именно этап тормозит.

До рабочего proxy connection может происходить целая цепочка:

DNS VLESS сервера
↓
TCP connection
↓
TLS / REALITY
↓
transport
↓
VLESS
↓
server outbound

HAPP позволяет частично разделить эти этапы с помощью разных способов проверки.

TCP Ping измеряет базовое установление TCP соединения.

Via Proxy проходит более полный путь: HAPP разрешает домен сервера, устанавливает TCP, выполняет TLS handshake при необходимости, а затем через proxy обращается к тестовому ресурсу. Поэтому Via Proxy обычно намного полезнее для оценки реального подключения.

Очень показательный результат:

TCP Ping → быстро
Via Proxy → медленно

Он говорит:

базовая сеть до endpoint в порядке, задержку нужно искать позже.

Если TCP Ping сам занимает секунды:

начинайте раньше — DNS, IP, route, IPv4/IPv6.

Не путайте и Xray policy timeout с нормальным временем подключения. Стандартный handshake действительно равен 60 секундам, но это верхний лимит handshake для inbound, после превышения которого соединение разрывается. Это не целевое время запуска VLESS. connIdle по умолчанию равен 300 секундам и относится уже к простою существующего connection.

Если endpoint задан доменом, DNS тоже является частью запуска. При стандартном sockopt.domainStrategy = AsIs Xray передаёт разрешение Go и системному DNS. Для TCP Go использует Happy Eyeballs и при проблеме предпочтительного address family начинает альтернативную попытку примерно через 300 мс. Xray также имеет собственный Happy Eyeballs для других domainStrategy.

Практически диагностика сводится к очень простой последовательности:

другой VLESS сервер → другая сеть → TCP Ping → Via Proxy → Refresh subscription → Proxy/TUN → DNS/IPv6 → серверные логи.

Если другой node подключается мгновенно — не ломайте клиент.

Если LTE быстро, а Wi-Fi медленно — смотрите network path.

Если Proxy быстро, а TUN медленно — проверяйте локальную систему.

Если Xray server видит входящий request только через десять секунд после нажатия Connect — задержка находится ещё до Xray.

А если Xray видит клиента моментально, но HAPP продолжает долго ждать — уже нужно смотреть transport, security и server-side обработку.

Главное — не пытаться исправить «медленный VLESS» одной случайной настройкой. Когда Connect разделён на конкретные сетевые этапы, задержка обычно перестаёт быть загадочной.