REALITY QR-код не импортируется: типовые причины и решения
Разбор типовых причин, почему QR-код REALITY не импортируется в клиенте, и пошаговая диагностика проблем: клиент, core, сеть, DNS, сервер.
Содержание
REALITY — это современная технология маскирования трафика для протокола VLESS. Она не требует отдельного сертификата и позволяет подключаться к серверу, который внешне имитирует обычный сайт. Для настройки в графических клиентах обычно используются QR-коды или ссылки вида vless://.... Но что делать, если QR-код не импортируется? В этой статье разберём типовые причины и дадим пошаговую диагностику.
Что такое REALITY QR-код и как он устроен
REALITY QR-код содержит в себе закодированную конфигурацию подключения. Обычно это строка формата:
vless://UUID@SERVER_IP:PORT?encryption=none&security=reality&type=tcp&pbk=PUBLIC_KEY&fp=FINGERPRINT&sni=SNI&sid=SHORT_ID&spx=SPIDER_X#Name
Здесь UUID — идентификатор пользователя, SERVER_IP — адрес сервера, PORT — порт, PUBLIC_KEY — публичный ключ REALITY, FINGERPRINT — отпечаток TLS, SNI — имя сервера для маскировки, SHORT_ID — короткий идентификатор, SPIDER_X — параметр spiderX (необязательный). Импорт невозможен, если ссылка повреждена, неполная или содержит недопустимые символы. Понимание структуры помогает выявить ошибки.
Почему импорт может не сработать: общий обзор
Все причины можно разделить на четыре группы:
- Клиент: устаревшая версия, отсутствие поддержки REALITY, ошибки сканирования.
- Core (ядро): неверный синтаксис ссылки, неподдерживаемые параметры.
- Сеть и DNS: проблемы с доступом к серверу, блокировки, некорректный DNS.
- Сервер: не запущен, неверная конфигурация, несоответствие параметров.
Далее рассмотрим каждую группу отдельно.
Проблемы на стороне клиента
Самый частый случай — клиент не умеет импортировать REALITY. Например, некоторые мобильные приложения ещё не поддерживают REALITY или делают это только в платной версии. Проверьте актуальную версию клиента и документацию.
Типичные ошибки:
- Установлена старая версия v2rayNG, Shadowrocket, Nekoray и т.п. Обновите до последней версии.
- Клиент не поддерживает параметр
spxилиsid. Убедитесь, что параметры не обязательны для вашего клиента. - QR-код повреждён или распознан неверно. Попробуйте увеличить яркость экрана или отсканировать с другого устройства.
- Ссылка была скопирована с лишним пробелом или переводом строки. Скопируйте заново.
Ошибки в конфигурации core (Xray или Sing-box)
Если клиент поддерживает REALITY, но импорт выдаёт ошибку, возможно, ссылка сформирована не по стандарту. Импорт в Xray-core и sing-box требует строгого соответствия параметрам.
Проверьте:
- Префикс
vless://обязателен. Не перепутайте с vmess://. - Параметр
security=reality— если его нет, импорт будет воспринимать ссылку как обычный VLESS без REALITY. - Параметры
pbk(publicKey) иfp(fingerprint) должны быть указаны и не содержать пробелов. В некоторых клиентах они называютсяpublicKeyиfingerprint. - Если используется sing-box, обратите внимание, что он может требовать параметр
realityв JSON, а не в ссылке. При импорте через ссылку sing-box автоматически конвертирует url в нужный формат, но если ссылка нестандартная, импорт не сработает.
Пример правильной ссылки для Xray можно посмотреть в официальной документации. Наиболее подробно протокол описан в документации XTLS.
Сетевые и DNS-проблемы
Иногда импорт проходит успешно, но при подключении возникают ошибки — и это не проблема QR-кода. Однако возможна ситуация, когда клиент при импорте выполняет проверку доступности сервера и не может её завершить.
Что проверить:
- Доступен ли сервер: пропингуйте IP (
ping 123.123.123.123). Если сервер не отвечает, проверьте, запущен ли Xray. - Порт открыт? Используйте
telnet IP PORTили онлайн-инструменты. Если порт закрыт, возможно, его блокирует провайдер. - DNS: если в ссылке используется доменное имя вместо IP, убедитесь, что DNS-сервер клиента может его разрешить. Попробуйте сменить DNS на 8.8.8.8 или 1.1.1.1.
- Некоторые клиенты по умолчанию подставляют порт 443, если порт не указан. Убедитесь, что порт явно прописан.
Проблемы на сервере
Сервер — ключевое звено. Если конфигурация на сервере не совпадает с параметрами в QR-коде, подключение невозможно даже при корректном импорте. Проверьте:
- Xray (или sing-box) на сервере запущен и работает. Выполните
systemctl status xrayили посмотрите логи. - Версия Xray на сервере актуальна:
xray version. - Параметры
publicKey,shortId,spiderX,serverNames,destв конфигурации сервера точно соответствуют тем, что закодированы в QR-коде. Особенно проверьтеshortId— пустая строка и ноль — это разные вещи. - Убедитесь, что
destуказывает на реальный сайт с поддержкой TLS (например,www.microsoft.com:443). Иначе хендшейк REALITY не будет работать.
Пошаговая диагностика
Выполните следующие шаги, чтобы локализовать проблему:
- Декодируйте QR-код вручную или с помощью онлайн-инструмента, чтобы получить ссылку. Сравните её с эталоном из конфигурации.
- Проверьте поддерживаемость REALITY в вашем клиенте. Загляните в официальный репозиторий или GitHub проекта.
- Обновите клиент и ядро до последних версий. Часто исправления добавляются в новых релизах.
- Импортируйте ссылку в другой клиент (например, v2rayN на Windows) — если там импорт проходит, проблема именно в вашем клиенте.
- Проверьте сетевую доступность сервера с устройства, где импортируется QR-код.
- Изучите логи на сервере:
tail -f /var/log/xray/access.log— вы увидите входящие подключения и ошибки.
Частые ошибки при ручном импорте
- Использование пробелов в ссылке: URL-кодирование обязательно. Пробелы заменяйте на
%20. - Неправильное кодирование специальных символов
+,/,=в параметрах. Они не должны быть экранированы. - Добавление переводов строки или символа
#внутри имени. Имя должно идти после#и не содержать пробелов. - Копирование части ссылки — QR-код может быть повреждён при печати или сканировании.
Когда проблема не в QR-коде
Если импорт прошёл успешно, но подключение не устанавливается, это уже не проблема импорта. Нужно проверять логи клиента, сетевые настройки, брандмауэр, а также корректность конфигурации сервера. Важно различать ошибки импорта (ошибка парсинга ссылки) и ошибки подключения (timeout, TLS handshake failure). Первые указывают на проблему в самом QR-коде или клиенте, а вторые — на сеть или сервер.
В любом случае, если вы не уверены в деталях, загляните в официальную документацию Xray-core или sing-box. Там описаны точные форматы ссылок и примеры конфигураций.
Проверено на практике
- Дата проверки: 2024-12-01
- Среда: Xray-core v1.8.0, sing-box v1.9.0
- Версии: Xray-core v1.8.0,sing-box v1.9.0
Мини-чеклист
- Проверить формат ссылки: vless://...?security=reality&pbk=...&fp=...&sni=...&sid=...&spx=...
- Убедиться, что клиент поддерживает REALITY и обновлён до актуальной версии.
- Протестировать импорт в другом клиенте (например, v2rayN).
- Проверить доступность сервера: ping, telnet, онлайн-инструменты.
- Сверить параметры QR-кода с конфигурацией сервера (publicKey, shortId, spiderX, serverNames, dest).
- Изучить логи клиента и сервера на предмет ошибок.
- Обновить ядро (Xray-core или sing-box) и на клиенте, и на сервере.
Частые ошибки
- Замена параметра pbk на publicKey в ссылке (для Xray используйте pbk).
- Отсутствие параметра security=reality.
- Использование пробелов или нестандартных символов без URL-кодирования.
- Неправильный формат shortId (должен быть hex, например, 96a1b2c3d4e5f678).
- Ссылка скопирована с лишними символами или обрезана.
- Использование протокола vmess:// вместо vless://.
Источники и документация
FAQ
Что делать, если при импорте QR-кода REALITY появляется ошибка «invalid configuration»?
Проверьте, что ссылка начинается с vless://, параметр security=reality присутствует, все значения правильно закодированы. Возможно, клиент не поддерживает какой-то параметр (например, spx). Обновите клиент и попробуйте импортировать в другой программе.
Почему на Android QR-код не сканируется, а на Windows импортируется?
Скорее всего, проблема в приложении Android — оно либо не поддерживает REALITY, либо устарело. Попробуйте обновить v2rayNG или использовать клиент, который точно поддерживает REALITY, например, NekoBox.
Какие параметры обязательны в ссылке REALITY для Xray-core?
Обязательны: UUID, адрес сервера, порт, encryption=none, security=reality, pbk (публичный ключ), fp (fingerprint), sni. Параметры sid и spx опциональны, но должны быть согласованы с сервером.
Может ли DNS влиять на импорт QR-кода?
Обычно нет, так как импорт — это просто разбор ссылки. Но если клиент при импорте пытается определить доступность сервера, неправильный DNS приведёт к ошибке. Если импорт проходит, но подключение не работает, проверьте DNS.
Что означает ошибка «connection reset» при подключении после успешного импорта?
Это означает, что сервер доступен, но не может завершить TLS-хендшейк. Причина скорее всего в неверной конфигурации REALITY на сервере (dest, serverNames, shortId). Проверьте логи сервера.
Нужен быстрый рабочий доступ?
Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.
Получить доступ