Skip to content
RUEN

VLESS Reality не работает: диагностика ​

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

Дело не в хостинге

OBLAKO не запрещает Reality: личный VPN с собственным доменом в SNI разрешён правилами. Исключение одно: если сервер отдаёт сертификат популярного чужого сайта, система выключает его автоматически, а в панели появляется баннер «Обнаружена проблема SNI». Если баннера нет, причину ищите в сети или в настройках, по шагам ниже.

Инструкция подходит для Xray, установленного вручную, и для панели 3x-ui. Команды выполняются на сервере по SSH, если не сказано иначе.

Шаг 1. Сервер вообще работает? ​

Откройте панель OBLAKO и посмотрите статус сервера. Если там Остановлен или Приостановлен, дело не в Reality: сервер выключен вручную или закончился оплаченный срок. Что происходит после окончания срока, описано в статье Что будет, если не продлить сервер.

Если сервер работает, но по SSH не пускает, зайдите через вкладку Консоль в карточке сервера. Через неё видно, загрузилась ли система и не закончилось ли место на диске:

bash
df -h /

Заполненный на 100% диск ломает Xray, nginx и продление сертификатов одновременно. Чаще всего место съедают логи.

Шаг 2. Запущен ли Xray и слушает ли он порт 443 ​

bash
systemctl status xray --no-pager
ss -tlnp | grep ':443'

Должна быть строка active (running), а порт 443 должен занимать процесс xray. Если на 443 сидит nginx или ничего не сидит, клиенты попадают не туда.

У 3x-ui служба называется x-ui, а Xray запускается как её дочерний процесс xray-linux-amd64. В выводе ss имя обрезается до xray-linux-amd6, это нормально.

Если служба падает, проверьте конфиг. Xray сам покажет строку с ошибкой:

bash
xray run -test -c /usr/local/etc/xray/config.json

Для 3x-ui конфиг и бинарник лежат в другом месте:

bash
/usr/local/x-ui/bin/xray-linux-amd64 run -test -c /usr/local/x-ui/bin/config.json

Частые причины после обновления: пустое поле decryption (ошибка please add/set "decryption":"none" to every settings) и запрещённый теперь VLESS без защиты в исходящих подключениях (ошибка vless without TLS or other encryption is prohibited). Что поменялось в последних версиях, собрано в статье XHTTP и VLESS Encryption.

Шаг 3. Что пишет лог в момент подключения ​

Откройте лог и попробуйте подключиться с телефона:

bash
journalctl -u xray -f

Для 3x-ui смотрите journalctl -u x-ui -f: панель пишет сообщения Xray в свой журнал с пометкой XRAY.

По реакции лога уже понятно направление:

Что видноЧто это значит
Ничего не появляетсяСоединение до сервера не доходит. Переходите к шагу 5
Записи accepted и адреса сайтовСервер работает, проблема на стороне клиента или устройства
REALITY: processed invalid connection from АДРЕС: причинаСоединение дошло, но не прошло проверку Reality: не тот ключ, Short ID или SNI. Шаг 4
invalid request user idReality пройден, но такого UUID на сервере нет. Шаг 4
is rejected since the client flow is emptyНа сервере у пользователя включён Vision, а в ссылке нет flow. Шаг 4

Эти сообщения Xray пишет на уровне info. Если в конфиге стоит "loglevel": "warning", их не будет видно. На время диагностики поставьте "info" и перезапустите Xray, потом верните обратно.

Шаг 4. Совпадают ли параметры у клиента и сервера ​

Сравните ссылку в приложении с конфигом сервера. Должно совпадать всё:

  • UUID клиента есть в списке пользователей сервера;
  • pbk (публичный ключ) соответствует приватному ключу сервера. Если ключи перегенерировали, все старые ссылки умерли;
  • sid (Short ID) есть в shortIds сервера;
  • sni входит в serverNames;
  • flow: если на сервере у пользователя xtls-rprx-vision, в ссылке должен быть тот же flow;
  • порт и адрес указывают на этот сервер, а не на старый IP.

Самая частая ошибка в 3x-ui: ссылка скопирована, когда панель была открыта через SSH-туннель, и в ней адрес 127.0.0.1. Такая ссылка с телефона никуда не ведёт.

Время на устройстве влияет, только если на сервере в realitySettings задан maxTimeDiff. Тогда при расхождении часов больше заданного клиент получает отказ. Включите на телефоне автоматическую установку времени.

Ещё одна причина: старая версия приложения. В Reality есть параметр minClientVer, который отсекает клиентов со старым ядром, а Xray с 26.7.11 по 26.9.7 по умолчанию не пускал клиентов старше 26.3.27. Если сервер на такой версии, обновите Xray: начиная с 26.9.8 ограничения по умолчанию нет. И в любом случае обновите приложение до последней версии из официального магазина или с GitHub.

Шаг 5. Доходит ли соединение до сервера ​

Если лог пустой при попытке подключиться, проверьте TCP-доступность порта с того устройства и из той сети, где не работает. На компьютере с Windows:

powershell
Test-NetConnection IP_СЕРВЕРА -Port 443

На macOS и Linux:

bash
nc -vz -w 5 IP_СЕРВЕРА 443

Затем повторите проверку из другой сети: с мобильного интернета вместо домашнего Wi-Fi или наоборот, попросите знакомого из другого города. Сочетание результатов подсказывает причину:

  • Порт закрыт отовсюду, включая сети за пределами России: проблема на сервере. Проверьте файрвол (ufw status) и шаг 2.
  • Порт закрыт из России, открыт из-за рубежа: похоже на блокировку IP. Подтвердить её и понять масштаб поможет статья Как понять, что IP сервера заблокирован, там же разобраны трассировки.
  • Порт открыт, но клиент не подключается или подключается и сразу замирает: соединение рвут уже после установки. Шаг 6.

Шаг 6. Режут по содержимому, а не по адресу ​

Признаки фильтрации по содержимому:

  • соединение устанавливается, первые килобайты проходят, потом всё зависает;
  • сайт-маскировка в браузере по https://ВАШ_ДОМЕН открывается, а через клиент не работает;
  • не работает только у одного оператора или только на мобильном интернете.

Здесь чаще всего виновато имя в SNI. Если ваш сервер маскируется под чужой известный сайт, в 2026 году в России это главный повод для блокировки. Переход на свой домен описан в статье Блокировки VLESS Reality и self-steal, а требования к имени собраны в статье Как выбрать SNI для Reality.

Если SNI уже свой, попробуйте по очереди:

  1. Сменить отпечаток в ссылке: fp=firefox или fp=safari вместо chrome.
  2. Добавить второй вход через XHTTP за nginx: такой трафик выглядит как обычные HTTP-запросы к вашему сайту.
  3. Попробовать протокол на UDP, если оператор не режет QUIC: варианты описаны в статье Hysteria2 и TUIC на VPS.

Шаг 7. Не работает только на мобильном интернете ​

Если дома всё в порядке, а на мобильной сети не открывается ни один зарубежный сервер, а не только ваш, скорее всего, оператор включил режим белых списков. В этом режиме к зарубежным IP не пропускается почти ничего, и настройки Reality не помогут. Как проверить, что это именно белые списки, и как работает схема с промежуточным российским сервером, читайте в статье Белые списки и каскад серверов.

Если IP всё-таки заблокирован ​

Блокировка IP не лечится настройками. Варианты:

  • заказать новый сервер и перенести настройки. С self-steal это быстро: поменять A-запись домена на новый IP, скопировать конфиг Xray и выпустить сертификат. Ссылки у клиентов при этом не меняются, если в них указан домен, а не IP;
  • держать запасной сервер заранее и раздать клиентам обе ссылки или подписку.

Новый сервер заказывается в панели, тарифы на странице VPS. Старый удалите, когда перенесёте всё нужное, см. Как удалить VPS.

Короткий чек-лист ​

  1. Сервер в статусе «Работает», диск не заполнен.
  2. xray запущен и держит порт 443, конфиг проходит xray run -test.
  3. В логе видно попытку подключения.
  4. UUID, pbk, sid, sni, flow и адрес в ссылке совпадают с сервером, приложение обновлено.
  5. Порт 443 открыт из нужной сети.
  6. SNI свой, а не чужого крупного сайта.
  7. На мобильном интернете нет режима белых списков.