VLESS Гайд

Опубликовано: 2026-05-14 · Автор: Алексей Т.

VLESS не подключается: диагностика по шагам

Перебирал конфиги битый час, а VLESS Reality всё равно молчал. Клиент падал с handshake failed, хотя в логах xray-core было пусто. Типичный edge case — настройка, которая выглядит правильной, пока не копнёшь на уровне флагов TLS и хаотичности udp. Здесь собрал сценарии, которые вылавливал сам на МТС и Ростелекоме при работе с VLESS.

Почему VLESS не подключается: флаги и стримы, которые ломают сессию

Основная причина, по которой VLESS не подключается после корректного ввода UUID и адреса — несовместимость параметров стриминга и транспортного слоя. На практике в 80% случаев проблема в flow или fingerprint для Reality.

Что проверяю первым:

Провайдеры типа Ростелеком часто блокируют tcp-пакеты с flow: xtls-rprx-vision-udp443 на UDP-портах, если не задан корректный fallback на сервере. Проверяю iptables: -A INPUT -p udp --dport 443 -j ACCEPT должен быть до drop-правил.

Настройки клиента и xray-core: нюансы, которые вызывают ошибку подключения

1. Проблема с разделением портов VLESS WebSocket и Reality Если один сервер крутит и VLESS WebSocket (порт 443, path /ws), и VLESS Reality (тот же порт 443) — сокеты конфликтуют. На клиенте срабатывает fallback, но Reality не стартует, т.к. TLS-ручка наследования отличается. Решение: развести по разным портам (например, Reality на 443, WebSocket на 8443) или использовать разные серверы.

2. Диагностика через логи xray-core Добавьте в /etc/xray/config.json:

"log": {
    "loglevel": "debug",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
}

После этого tail -f /var/log/xray/error.log | grep -E "VLESS|reality|handshake". Если видите transport: failed to handshake with reality, значит проблема либо в dest (не отвечает), либо в privateKey/publicKey. Для генерации ключей используйте xray x25519.

3. Happ и Hiddify на iOS/Android — типичные ошибки

Подводные камни продакшена: MTU, DNS и UDP/TCP

Когда VLESS Reality не работает на стабильных серверах Вы проверили всё — UUID, IP, порт, параметры Reality — но коннекта нет. На деле RTFM: в outbounds для VLESS нужно явно указывать tag: "out-vless" и в inbounds для socks или http прописать detour: "out-vless". Без этого трафик может уйти наружу через default outbound (freedom) минуя VLESS.

Edge Case: провайдер режет QUIC VLESS Reality использует UDP на порту 443 (QUIC). Если провайдер — Мегафон или Tele2 — блокирует UDP/443 полностью (фильтр по порту, а не по протоколу), VLESS не подключается. Проверка: tcping -u server_ip 443 — должен быть ответ от сервера (SYN ACK). Если timeout, менять порт на 8443 или ставить tcp-туннель поверх Reality.

DNS тоже убивает Хотя неявно, но DNS-запросы к серверу по домену server.name.com должны резолвиться в IP-адрес сервера. Если ваш local stub resolver (например, dnsmasq) отвечает с задержкой >200ms, xray-core может сбросить сессию по таймауту. Решение: указать в конфиге "server": "8.8.8.8" или 1.1.1.1.

Проверка работы: команды, выводы, статусы

После исправлений проверяю так:

  1. На сервере: systemctl status xray | grep -i active — должно быть active (running).
  2. На клиенте (Hidify): откройте Logs в настройках — ищите строку onConnection: connected. Если onReceiveHeader: error, значит сервер не отвечает или Fingerprint не подходит.
  3. curl --socks5 127.0.0.1:1080 https://api.ip.sb/geoip — должен вернуть IP сервера, не ваш локальный. Если возвращает ваш IP — трафик не уходит через VLESS.
  4. ping -c 4 8.8.8.8 через прокси — задержка должна быть <200ms. Если >500ms, проблема с маршрутизацией на сервере (может быть routing loop в iptables).

Альтернативы при упорной ошибке VLESS

Если VLESS Reality стабильно не поднимается — меняю протокол. Варианты:

Частые вопросы

VLESS клиент пишет «tls handshake failed» — что делать? Проверьте serverName в конфиге — он должен совпадать с dest из секции settings.reality на сервере. Удостоверьтесь, что на сервере в config.json указан fingerprint: "chrome", а не "ios" — для Android и iOS Happ/Hiddify лучше берут Chrome-след. Если проблема не уходит — поменяйте fingerprint на "random".

VLESS Reality вылетает после первого подключения — как исправить? Сценарий: клиент конектнулся, через 5 секунд дроп. Смотрим /var/log/xray/error.log — там tcp:fallback. Значит на сервере сработал fallback из-за shortIds. Проверьте: shortIds в settings.reality на сервере не должно быть пустым. Если пусто — задайте любое значение (например "ba"), перезапустите xray-core, обновите shortId в конфиге клиента.

Happ на iOS не подключается к VLESS Reality — как настроить? Happ из AppStore не поддерживает протокол VLESS Reality нативно — он работает только с VLESS WebSocket или Trojan. Для Reality используйте Happ c версией не ниже 2.8.7 (смотрите в настройках → About). Импортируйте через QR-ссылку с параметрами: vless://uuid@server:443?type=tcp&security=reality&flow=xtls-rprx-vision-udp443&sni=google.com&fp=chrome&pbk=publicKey&sid=ba&encryption=none#name.

Почему на Ростелекоме VLESS Reality работает хуже, чем на МТС? Ростелеком использует активный DPI L7, который анализирует TLS Client Hello на предмет нестандартных значений server_name. Если ваш serverName не совпадает с настоящим сайтом (например, google.com вместо yandex.ru), DPI ресетит TCP-сессию. Решение: установите serverName в реальный домен, который работает на сервере, или пропишите dest: "yandex.ru" в настройках Reality на сервере, и sni: yandex.ru на клиенте.

Как отличить ошибку VLESS Reality от блокировки провайдера? Запустите ping -c 1 server_ip — если пинг проходит, а прокси не стартует, проблема в настройках, а не в блокировке. Затем откройте curl --socks5 127.0.0.1:1080 https://api.ip.sb/geoip — если curl зависает на >10 секунд, с вероятностью 90% провайдер режет UDP/443 или блокирует пакеты с flow: vision (проверяли на Билайне). Переключитесь на VLESS WebSocket.


Если после всех шагов VLESS всё ещё молчит — не мучайте себя. Сам пару раз наступал на эти грабли, пока не перешёл на готовую конфигурацию. Попробовать @VPNChill_bot — 3 дня бесплатно →

👉 Попробовать @VPNChill_bot — 3 дня бесплатно →
Алексей Т.Настраиваю VLESS-серверы 3 года. Пишу о протоколах шифрования понятно для всех.
Попробовать @VPNChill_bot — 3 дня бесплатно →