1. Как работает Reality
WireGuard и OpenVPN строят собственный туннель со своим рукопожатием, и DPI узнаёт его по первым пакетам. Reality не придумывает свой TLS, а показывает чужой.
Что видит DPI при Reality-соединении
TLS-запрос к настоящему сайту
Клиент начинает рукопожатие с SNI сайта-маски, например www.samsung.com. Для DPI это обычный запрос к доверенному домену.
Сервер прогоняет рукопожатие через сайт-маску
Так он делает на каждом входящем соединении, ещё до всякой проверки: сам подключается к сайту-маске и пересылает рукопожатие туда. Сканер или браузер, не знающий ключа, получает подлинный сертификат этого сайта и его страницу, как при обычном заходе. Отсюда и требование к цели: чем ближе она к VPS, тем быстрее подключается клиент.
Своего сервер узнаёт внутри рукопожатия
Свой клиент прячет метку в служебном поле рукопожатия, зашифровав её общим с сервером ключом — наружу этот ключ не передаётся. Сервер метку узнаёт и на ходу подменяет сертификат сайта своим временным, подписанным тем же ключом; клиент проверяет подпись. Со стороны и метка, и подпись — случайные байты, и подменить сертификат посередине нельзя.
Flow xtls-rprx-vision убирает второе шифрование
Уже зашифрованные TLS-данные идут без второго слоя шифрования: ниже нагрузка на процессор, а вложенный TLS не выдаёт себя характерными размерами записей.
Итог
Заблокировать такое соединение по сигнатуре значит заблокировать сам сайт-маску. Свой домен и свой сертификат прокси не нужны.
Чего Reality не скрывает
- ритм и объём трафика: постоянный поток к одному адресу не похож на чтение сайта;
- репутацию подсети: диапазоны хостингов известны и отслеживаются целиком;
- число параллельных соединений к одному SNI.
Именно по этим признакам Reality и ловят в России. Что тогда менять — в пункте «Работало, а теперь нет»; как отличить фильтрацию протокола от блокировки самого адреса — в отдельной статье почему VLESS перестал работать в России.
2. Требования к VPS
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| CPU | 1 vCPU | 1–2 vCPU |
| RAM | 512 МБ | 1 ГБ |
| Диск | 5 ГБ SSD | 10 ГБ SSD |
| ОС | Ubuntu 22.04 | Ubuntu 24.04 LTS |
| Виртуализация | KVM или OpenVZ | KVM (нужен для BBR) |
| Расположение | Вне РФ | Европа (DE, NL, FI) |
| IPv4 | Белый, без NAT | Белый, без NAT |
| Порт 443 | Свободен | Свободен |
Почему локация решает
Каждое рукопожатие идёт через сайт-маску, поэтому задержка от VPS до неё добавляется к времени подключения. Нужен сервер в крупном европейском дата-центре: там легко найти подходящую цель в соседней сети. Хороший ориентир: от VPS до цели не больше 30 мс.
Если сервера ещё нет
VPN: от 1 ГБ RAM, 1 ядра и 10 ГБ SSD · Европа
Локация здесь не пожелание, а требование: Reality маскируется под сторонний сайт, и задержка до него должна быть минимальной. Цены в подборке европейские.
В каталоге под эти требования подходит 50 тарифов, самый дешёвый за 490 ₽/мес (HostKey, 1 ГБ, 40 ГБ SSD).
3. Установка 3X-UI
3X-UI — это веб-панель для Xray. Один скрипт ставит ядро, панель и systemd-сервис. Команды даны для root: под обычным пользователем добавляйте sudo.
# NEEDRESTART_MODE=a нужен, чтобы обновление не встало на фиолетовом
# экране со списком служб: они перезапустятся сами
apt update && NEEDRESTART_MODE=a apt upgrade -y
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)Что спросит установщик, по порядку
Какой вариант SSL выбрать
Если порт 80 открыт, берите вариант 2: сертификат на IP выпускается сразу, живёт 6 дней и продлевается сам. Если открыть 80 порт нельзя или панель не должна торчать наружу, берите вариант 4 и отвечайте y на привязку к 127.0.0.1. На работу самого прокси выбор не влияет: Reality сертификатом панели не пользуется.
# Пробросить порт панели на локальный 2222
ssh -L 2222:127.0.0.1:ПОРТ_ПАНЕЛИ root@IP_СЕРВЕРА
# Затем открыть в браузере
# http://localhost:2222/ВЕБ-ПУТЬ/Что покажет в конце
Данные не потеряются
Всё, что показано в конце установки, сохраняется в файл /etc/x-ui/install-result.env с правами 600, читать его может только root. Забыли адрес или пароль: cat /etc/x-ui/install-result.env. Сбросить логин и пароль можно через меню x-ui, пункт 7.
# Статус сервиса
systemctl status x-ui --no-pager
# Меню управления: обновление, порт, логи, firewall
x-ui
# Текущие настройки панели без меню
x-ui settingsЕсли панель не открылась
У многих провайдеров, в том числе Hetzner, Selectel, AWS и DigitalOcean, есть свой сетевой firewall на уровне панели управления. Он режет трафик до того, как тот дойдёт до VPS, и про UFW ничего не знает. Откройте нужный порт там: раздел Firewall, Security Groups или «Правила сети». Диагностика в разделе «Если не работает».
4. Настройка VLESS Reality inbound
Панель переведена на русский: язык выбирается прямо на экране входа, а позже в «Настройки панели» → «Язык интерфейса». Названия полей ниже даны по русскому интерфейсу.
Откройте Входящие и нажмите Создать подключение. Форма разбита на вкладки, нужны три.
| Вкладка | Поле | Значение |
|---|---|---|
| Основное | Примечание | Любое имя, например reality-443 |
| Основное | Протокол | VLESS |
| Основное | Порт | 443 |
| Поток | Транспорт | RAW (бывший TCP) |
| Безопасность | Переключатель | Reality |
| Безопасность | uTLS | chrome, при замедлениях firefox |
| Безопасность | Цель (Target) | Сайт-маска с портом: www.samsung.com:443 |
| Безопасность | SNI | Тот же домен без порта |
| Безопасность | Ключи, Short IDs, SpiderX | Панель заполняет сама при выборе Reality |
Руками заполняются только Цель и SNI. Пару ключей x25519, Short IDs и путь SpiderX панель генерирует в момент выбора Reality, трогать их не нужно.
Как выбрать сайт-маску
Цель должна поддерживать TLS 1.3, HTTP/2 и обмен ключами X25519, иметь действующий сертификат и открываться с самого VPS: рукопожатие через неё идёт с сервера, клиент к ней не обращается. Со стороны клиента важно другое — чтобы его оператор не резал этот SNI. Проверять вручную не нужно: рядом с полем Цель есть две кнопки.
Какие цели не брать
Xray-core пишет в лог предупреждение, если SNI содержит apple, icloud, microsoft или заканчивается на .ru, .cn, .ir. Формально предупреждение написано про китайский фильтр, но причина общая: это самые заезженные маски, и они повышают риск блокировки IP сервера. По той же причине не стоит брать сайты за Cloudflare: сертификат CDN, приходящий с адреса вне сетей CDN, легко проверяется со стороны.
Учтите: в готовом списке кнопки «Найти цели» есть и microsoft, и cloudflare, их брать не нужно. Рабочие варианты: www.samsung.com:443, www.nvidia.com:443, www.intel.com:443, www.sony.com:443. Лучше всё же найти цель в сети своего дата-центра кнопкой «Найти цели».
openssl s_client -connect www.samsung.com:443 -servername www.samsung.com \
-tls1_3 -alpn h2 </dev/null 2>/dev/null \
| grep -E "New, TLSv1.3|ALPN protocol|Server Temp Key"
# Годная цель отвечает всеми тремя строками:
# Server Temp Key: X25519, 253 bits
# New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
# ALPN protocol: h2
# Пустой вывод или меньше трёх строк: цель не годится, берите другую.Два поля, которые можно не трогать
- mldsa65 Seed и mldsa65 Verify на вкладке «Безопасность»: постквантовая подпись Reality. Кнопка «Получить новый Seed» заполняет оба поля, публичная часть уезжает в ссылку параметром
pqv. Клиенты на свежем Xray-core её понимают, без неё Reality тоже работает. - Шифрование и Расшифрование на вкладке «Протокол»: собственное шифрование VLESS, включая постквантовое mlkem768. Для связки Reality + RAW оно избыточно, оставьте
none. Пригодится, если переедете на XHTTP: там flowxtls-rprx-visionдоступен только при включённом шифровании VLESS.
Нажмите Создать. Панель применит конфигурацию к Xray сама, перезапускать ничего не нужно.
5. Клиент и ссылка на подключение
В 3X-UI 3.x пользователи вынесены в отдельный раздел Клиенты: одна запись может быть привязана к нескольким inbound. Нажмите кнопку с плюсом: откроется окно «Добавить клиента» с тремя вкладками. Нужны две первые.
Flow не ищите рядом с Email: он лежит на второй вкладке, «Учетные данные», под UUID и ID подписки. Третья вкладка, «Ссылки», заполняется сама после сохранения.
После сохранения в строке клиента появятся иконки QR-кода и ссылки. Ссылка выглядит так:
vless://UUID@IP_СЕРВЕРА:443?encryption=none&flow=xtls-rprx-vision&fp=chrome&pbk=ПУБЛИЧНЫЙ_КЛЮЧ&security=reality&sid=SHORT_ID&sni=www.samsung.com&spx=%2Fa1b2c3d4e5f6a7b&type=tcp#reality-443Если устройств больше двух, включите подписку
«Настройки панели» → «Подписка» → «Включить подписку». После этого у клиента появляется ссылка-подписка, и приложения сами подтягивают новые параметры: поменяли сайт-маску или отпечаток, и рассылать ссылки заново не нужно. Путь подписки по умолчанию /sub/ известен всем сканерам, панель сама советует его сменить.
Ссылку не редактируют руками
В ней зашиты публичный ключ, Short ID, SNI и отпечаток. Поменяли что-то в inbound: возьмите ссылку заново, иначе клиент будет получать таймаут. Для телефона проще отсканировать QR-код, для компьютера скопировать ссылку в буфер обмена.
6. Подключение клиентов
Клиент должен работать на свежем Xray-core
Начиная с Xray-core 26.7.11 Reality-сервер по умолчанию принимает только клиентов на Xray-core 26.3.27 и новее. Сегодняшний установщик ставит 26.7.28, так что правило действует сразу. Остальные отклоняются молча: ссылка верная, а соединение уходит в таймаут. Под правило попадают приложения на других ядрах, sing-box и Mihomo (это Hiddify и часть программ для iOS), и просто давно не обновлявшиеся клиенты. На Xray-core собраны v2rayN, v2rayNG и Happ, их достаточно держать в актуальной версии. Если нужен именно sing-box, откройте inbound и поставьте «Мин. версия клиента» = 1.0.0. Но это не бесплатно: сервер начнёт принимать и устаревшие TLS-отпечатки, а само ядро пишет в лог, что такая правка повышает риск блокировки IP.
Windows: v2rayN
Качать с github.com/2dust/v2rayN/releases, актуальная версия 7.24.9. Два варианта сборки: v2rayN-windows-64.zip (привычный вид Windows) и v2rayN-windows-64-desktop.zip (новый интерфейс). Язык переключается в настройках, пункт Language, с перезапуском. Названия пунктов ниже даны для русского интерфейса.
- 1Распакуйте архив и запустите
v2rayN.exe - 2Скопируйте vless:// ссылку из панели в буфер обмена
- 3В окне программы: Серверы → Импорт ссылок общего доступа из буфера обмена (или Ctrl+V)
- 4Правой кнопкой по добавленной строке → Сделать активным
- 5В строке состояния внизу окна или в меню значка в трее выберите Установить системный прокси. Чтобы завернуть весь трафик системы, а не только браузерный, включите там же TUN
Android: v2rayNG или Happ
Только GitHub, никаких сторонних APK
Официального v2rayNG в Google Play нет с 2025 года. В выдаче и в самом магазине попадаются клоны под тем же именем, внутри которых бывают закладки, читающие ваши ключи и трафик. Верный признак подделки: на стороннем сайте версия «новее», чем в релизах на GitHub. Единственный источник: github.com/2dust/v2rayNG/releases. Нужен файл под архитектуру телефона, почти всегда это v2rayNG_2.2.6_arm64-v8a.apk. Рядом лежат подпись .sig и ключ v2rayN-public-key.asc. Проверка: сначала gpg --import v2rayN-public-key.asc, затем gpg --verify файл.apk.sig файл.apk. Нужен GnuPG 2.4 и новее, ключ у 2dust нового формата. Правильный ответ содержит строку Good signature from "2dust <2dust-noreply@github.com>" — на русской локали она же выглядит как «Действительная подпись пользователя»; предупреждение ниже, что ключ не заверен третьей стороной, это норма. Строка BAD signature означает подменённый файл.
v2rayNG 2.2.6
- 1.Скачать APK с github.com/2dust/v2rayNG/releases
- 2.Нажать + → Импорт из QR-кода
- 3.Включить переключатель сверху и разрешить создание VPN-профиля
Happ 4.3
- 1.Установить из Google Play или взять APK с github.com/Happ-proxy/happ-android
- 2.Добавить конфигурацию через QR-код или ссылку
- 3.Нажать подключение
iOS: OneXray или Shadowrocket, а для аккаунта не из России — ещё Happ и Streisand
С российским Apple ID выбор сузился до двух приложений
Apple по требованию Роскомнадзора вычистила из российского App Store и Happ, и Streisand, и V2Box. Мы проверили витрины: карточки Happ и Streisand открываются в США, Германии, Турции и Казахстане и отдают 404 в российской, V2Box — то же самое. v2RayTun пропал не только из российской витрины: его сейчас нет ни в одной. Уже установленные приложения продолжают работать, но не обновляются. С российским аккаунтом на 3 сентября 2026 ставятся два варианта: платный Shadowrocket, который нужно держать обновлённым, и бесплатный OneXray на Xray-core (издатель Yuan Dev LLC, исходный код на github.com/OneXray/OneXray). Бесплатные приложения на других ядрах в витрине тоже есть — например Karing на sing-box, — но сервер с настройками по умолчанию их не примет: смотрите предупреждение в начале раздела.
Не ищите Happ поиском в российском App Store. По запросу выдаются «Happ VPN», «Happ VPN ++», «Happ VPN Official» и подобное от посторонних издателей — это чужие приложения, к оригиналу отношения не имеющие. Настоящий Happ выпускает Flyfrog LLC, настоящий Streisand — ARCADIA ODYSSEY INC.; в российской витрине обоих издателей нет вовсе. С v2RayTun то же самое: под этим именем в российской выдаче лежит приложение постороннего издателя.
Shadowrocket
App Store, платный
Доступен с российским Apple ID. Много протоколов и тонкая маршрутизация. Держите обновлённым: старые версии сервер отклоняет
OneXray
App Store, бесплатно
Издатель Yuan Dev LLC, открытый код. Работает на Xray-core. Доступен с российским Apple ID
Happ
App Store, бесплатно
Издатель Flyfrog LLC. Работает на Xray-core. Нужен аккаунт другой страны
Streisand
App Store, бесплатно
Издатель ARCADIA ODYSSEY INC. Поддерживает VLESS Reality. Нужен аккаунт другой страны
Порядок одинаковый: установить приложение, добавить конфигурацию через QR-код из панели, разрешить создание VPN-профиля, подключиться. Если приложение уходит в таймаут при верной ссылке, дело в ядре: смотрите предупреждение в начале раздела.
Проверить подключение
Откройте 2ip.ru или whoer.net: должен показываться IP вашего VPS. Утечки DNS проверяются на browserleaks.com/dns: в списке не должно быть серверов вашего домашнего провайдера.
7. UFW и безопасность сервера
Прокси смотрит в интернет, и панель тоже, если вы не привязали её к 127.0.0.1. Минимум: закрытый firewall и вход по SSH-ключу.
# SSH. Добавить ДО включения UFW, иначе потеряете доступ.
# Если SSH на своём порту, укажите его вместо 22
ufw allow 22/tcp
# Порт прокси из настроек inbound
ufw allow 443/tcp
# Порт 80 нужен только для продления Let's Encrypt (варианты SSL 1 и 2)
ufw allow 80/tcp
# Порт панели: открыть только со своего адреса.
# Свой IP: curl ifconfig.me на домашнем компьютере.
# Дома адрес обычно динамический: сменится — панель перестанет открываться.
# Лечится через консоль провайдера: ufw status numbered, затем
# ufw delete НОМЕР и правило заново с новым адресом.
# Если панель привязана к 127.0.0.1, эта строка не нужна вовсе
ufw allow from ВАШ_ДОМАШНИЙ_IP to any port ПОРТ_ПАНЕЛИ
# ufw enable под SSH переспросит: Proceed with operation (y|n)?
# Отвечайте y, правило для 22 порта уже добавлено выше
ufw enable
ufw status verboseUFW не единственный firewall
UFW работает внутри VPS. У многих провайдеров (Hetzner, Selectel, Yandex Cloud, AWS, DigitalOcean) есть ещё и сетевой firewall в панели управления, он срабатывает раньше. Те же порты нужно открыть и там. В самой 3X-UI правила тоже редактируются: меню x-ui, пункт 23 (Firewall Management).
SSH-ключи вместо пароля
ssh-keygen -t ed25519 -C "vps-proxy"
ssh-copy-id root@IP_СЕРВЕРА
# Убедиться, что ключ доехал (команда запускается локально)
ssh root@IP_СЕРВЕРА "cat /root/.ssh/authorized_keys 2>/dev/null | grep -c ssh-ed25519"
# Ожидаем число 1 или больше. Ноль значит, что ключ не скопировался.
# Файл читается через cat, чтобы ответ был ровно одним числом
# и когда файла ещё нет: grep по несуществующему пути молчит.Про cloud-init на Ubuntu
В облачных образах лежит файл /etc/ssh/sshd_config.d/50-cloud-init.conf (иногда с другим именем) со строкой PasswordAuthentication yes. Он подключается после основного конфига и перекрывает правки в нём: отредактируете только sshd_config, и вход по паролю останется включённым.
# 1. Откройте ВТОРУЮ сессию SSH и убедитесь, что вход по ключу работает.
# Первую не закрывайте, пока не проверите.
# 2. Убрать override cloud-init
rm -f /etc/ssh/sshd_config.d/50-cloud-init.conf
# 3. Выставить две настройки. В свежей Ubuntu обе строки
# закомментированы, поэтому правка через nano требует убрать #.
# Эти четыре команды делают то же самое при любом состоянии файла:
sed -i 's|^#*PasswordAuthentication.*|PasswordAuthentication no|' /etc/ssh/sshd_config
grep -q '^PasswordAuthentication no' /etc/ssh/sshd_config || echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config
sed -i 's|^#*PermitRootLogin.*|PermitRootLogin prohibit-password|' /etc/ssh/sshd_config
grep -q '^PermitRootLogin prohibit-password' /etc/ssh/sshd_config || echo 'PermitRootLogin prohibit-password' >> /etc/ssh/sshd_config
systemctl restart ssh
# 4. Проверить итоговые значения, а не содержимое файлов
sshd -T | grep -iE "passwordauthentication|permitrootlogin"
# Ожидаем ровно две строки:
# passwordauthentication no
# permitrootlogin without-password
# Второе значение не опечатка: sshd печатает старое название
# для prohibit-password, это одно и то же.
# Если видите passwordauthentication yes, остался ещё один
# файл с настройкой: grep -r PasswordAuth /etc/ssh/✓ Делать
- Панель на 127.0.0.1 или порт только со своего IP
- Вход по SSH-ключу, пароль отключён
- Прокси на 443 порту
- Обновлять панель и ядро: x-ui, пункт 2
- Включить BBR: x-ui, пункт 26
- Ссылки передавать защищённым каналом
✗ Не делать
- Оставлять порт панели открытым всему интернету
- Брать целью apple, icloud, microsoft и домены .ru
- Переносить параметры из ссылки руками
- Ставить APK и сборки со сторонних сайтов
- Менять порт прокси на нестандартный
Полезные пункты меню x-ui
2 обновить панель
7 сбросить логин и пароль
8 сменить веб-путь панели
10 сменить порт панели
11 показать текущие настройки
14 перезапустить панель
17 логи
23 правила firewall
26 включить BBR8. Если не работает
Почти все проблемы сводятся к восьми причинам. Проверяйте по порядку.
1. Не открывается панель
Причина номер один, и обычно это firewall провайдера, а не UFW.
systemctl status x-ui --no-pager
ss -tlnp | grep ':ПОРТ_ПАНЕЛИ'# Linux и macOS: -w 5 ограничивает ожидание пятью секундами
nc -zv -w 5 IP_ВАШЕГО_VPS ПОРТ_ПАНЕЛИ
# Windows, PowerShell
Test-NetConnection -ComputerName IP_ВАШЕГО_VPS -Port ПОРТ_ПАНЕЛИsucceeded! — порт открыт, дело не в сети.
Connection refused, отказ сразу: сервис на VPS не запущен.
timed out через 5 секунд: режет firewall, чаще всего в панели провайдера. Добавьте там входящее правило TCP на порт панели, лучше только со своего адреса.
2. Клиент не подключается
- Ядро клиента. Сервер по умолчанию принимает только Xray-core 26.3.27 и новее. Обновите клиент, возьмите другой на Xray-core или поставьте в inbound «Мин. версия клиента» = 1.0.0.
- Порт закрыт. Проверьте с домашнего компьютера:
nc -zv -w 5 IP 443, в Windows —Test-NetConnection -ComputerName IP -Port 443. Порт открывается и в UFW, и в панели провайдера. - Xray не слушает. На сервере:
ss -tlnp | grep ':443 '. Пусто означает, что inbound выключен переключателем или Xray не стартовал. Если 443 занял чужой процесс — чаще всего Nginx или Caddy, — освободите порт: Reality лучше оставить на 443. Панель при этом работает как обычно и показывает статус Xray «Ошибка». - Часы. Сверка времени включается полем «Макс. разница во времени (мс)» в inbound и по умолчанию выключена. Если вы его заполняли, проверьте время на сервере:
timedatectl. - Ссылка устарела. После правки inbound возьмите её из панели заново.
- Расходится flow. Даёт таймаут при верной во всём остальном ссылке. Разбор по сообщениям из лога — в следующем пункте.
3. Ошибки flow в логе
Причину отказа Xray клиенту не сообщает: тот видит только обрыв или таймаут, одинаковый на все случаи жизни. Настоящая причина остаётся в логе сервера. 3X-UI забирает вывод ядра себе и пишет его вместе со своими сообщениями, помечая строки ядра префиксом XRAY: — отдельного файла у Xray здесь нет.
Искать надо именно в файле панели. В системный журнал все строки ниже не попадают: панель считает оборванное соединение рядовым событием и понижает его до уровня debug, а в журнал отдаёт только то, что важнее. Поэтому ни journalctl, ни пункт 17 меню x-ui их не покажут. В файл пишется всё.
# Последние сообщения ядра
grep XRAY /var/log/x-ui/3xui.log | tail -50
# Смотреть вживую и одновременно пробовать подключиться клиентом.
# --line-buffered обязателен: без него grep копит вывод и на экране
# ничего не появляется
tail -f /var/log/x-ui/3xui.log | grep --line-buffered XRAYУровень логирования самого Xray по умолчанию warning, и все сообщения ниже приходят именно на нём — поднимать его до debug незачем. Пять строк, которые стоит узнавать в лицо:
| Сообщение | Что случилось и что делать |
|---|---|
is rejected since the client flow is empty | Самая частая. У клиента в панели проставлен Flow, а подключение пришло без него: значит в ссылке нет xtls-rprx-vision. Обычно ссылку собирали руками или переносили по частям. Возьмите её из панели заново. |
is not able to use the flow xtls-rprx-vision | Обратный случай: flow пришёл в ссылке, а в карточке клиента поле пустое. Откройте клиента, вкладка «Учетные данные», выставьте Flow и заново возьмите ссылку. |
xtls-rprx-vision doesn't support UDP | Клиент отправил UDP напрямую, а не завёрнутым в XUDP. Включите в клиенте Mux (XUDP) либо оставьте UDP вне прокси. На доступ к сайтам это не влияет. |
failed to use xtls-rprx-vision, found outer tls version | Внешний TLS оказался не 1.3. С Reality невозможно в принципе: он всегда работает по TLS 1.3. Значит inbound на самом деле переключён на обычный TLS — проверьте вкладку «Безопасность». |
XTLS only supports TLS and REALITY directly for now. | Flow остался на транспорте, где нет своего TLS: WebSocket, gRPC, HTTPUpgrade, mKCP. Через обычную форму так не соберёшь, но можно через «Расширенный шаблон» или API. Верните RAW или снимите flow. |
Отдельно про QUIC: строка «XTLS rejected UDP/443 traffic»
Эту строку пишет не сервер, а само приложение в свой лог, и на уровне info — в журнале VPS её не будет. И это не поломка. С обычным xtls-rprx-vision клиент намеренно не пускает в туннель UDP на 443 порт, то есть QUIC и HTTP/3. Браузер видит, что QUIC не отвечает, и откатывается на TCP — со стороны это выглядит как заминка на первых секундах у YouTube и сервисов Google. Если QUIC нужен внутри туннеля, откройте карточку клиента, вкладка «Учетные данные», и выберите второе значение поля Flow — xtls-rprx-vision-udp443, — после чего заново возьмите ссылку.
Менять что-то ещё не нужно, и это не оплошность инструкции. В конфигурации самого ядра значение с -udp443 запрещено: Xray с ним просто не стартует, оно допустимо только на стороне клиента. Панель это разводит сама — в ссылку уходит полное значение, а ядру она подставляет обычный xtls-rprx-vision. Поэтому руками в JSON инбаунда этот флоу вписывать нельзя.
4. Подключение есть, интернета нет или он медленный
- Цель не подходит. Нажмите «Сканировать» рядом с полем Цель: нужны TLS 1.3, ALPN h2, обмен ключами X25519 и живой сертификат.
- Цель отдаёт ошибку. Проверьте с сервера:
curl -I https://ЦЕЛЬ. Reality должен пересылать чужой трафик на работающий сайт. - Замедление со стороны оператора. Отдельный случай, разобран в следующем пункте.
- Утечка DNS. В настройках клиента включите отправку DNS через прокси, проверьте на browserleaks.com/dns.
- Маршрутизация в клиенте. Режим должен быть глобальным, а не «в обход локальных сетей».
5. Работало, а теперь нет: фильтрует оператор
Настройки фильтрации у операторов меняют волнами, и Reality на 443 порту переживает их лучше остальных вариантов, но не всегда. Признак тот же: клиент показывает «Подключено», а страницы не грузятся.
Прежде чем что-то менять, стоит понять, в чём дело: соединение опознали или заблокировали сам адрес сервера. Это разные вердикты, и второй настройками не лечится. Как отличить их за пять минут, разобрано в отдельной статье — почему VLESS перестал работать в России. Здесь — только сам порядок действий, когда вердикт уже известен.
- Смените сайт-маску (Target и SNI). Популярные цели выгорают быстрее всех. Как выбрать новую, описано в разделе 4.
- Смените uTLS на firefox. По наблюдениям тех, кто разбирал летние блокировки 2026 года, под ударом оказались прежде всего отпечатки chrome, safari и ios, а firefox и Edge встречаются в прокси-конфигах реже. Документального перечня нет, это догадка из практики, но смена бесплатна и занимает минуту. После неё заново скопируйте ссылку клиента.
- Смените транспорт на XHTTP. В inbound на вкладке «Поток» выберите Транспорт
XHTTP, Безопасность оставьте Reality. XHTTP разбивает поток на отдельные HTTP-транзакции, и поведенческий анализ различает его хуже. Учтите: flowxtls-rprx-visionдержится за транспортный TLS, поэтому на XHTTP панель его снимает — если только вы не включили собственное шифрование VLESS (поля «Шифрование» и «Расшифрование» на вкладке «Протокол»): оно даёт Vision тот самый недостающий слой, и тогда flow остаётся доступен. - Смените хостинг или локацию. Если отвалилась вся подсеть, настройки не помогут: нужен другой провайдер, а не другой конфиг.
- Держите запасной протокол. В 3X-UI 3.7 встроен AmneziaWG: это WireGuard с изменённым рукопожатием, он поднимается отдельным inbound и не требует ни модуля ядра, ни Docker.
Порт менять не нужно
Совет «перевесить Reality на случайный высокий порт» устарел. С версии 26.3.23 Xray-core сам пишет в лог предупреждение: Reality на порту, отличном от 443, повышает вероятность блокировки IP сервера. Настоящий HTTPS живёт на 443, и трафик к 43821 порту сам по себе выглядит подозрительно.
6. Потерян доступ по SSH
Восстановление одно: консоль в панели провайдера, она же VNC или Serial Console.
sshd -T | grep -iE "passwordauthentication|permitrootlogin"
cat /root/.ssh/authorized_keys
# Временно вернуть вход по паролю
rm -f /etc/ssh/sshd_config.d/50-cloud-init.conf
sed -i 's|^#*PasswordAuthentication.*|PasswordAuthentication yes|' /etc/ssh/sshd_config
grep -q '^PasswordAuthentication yes' /etc/ssh/sshd_config ||
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
systemctl restart ssh7. Сервис x-ui не запускается
Речь о самой панели. Занятый 443 сюда не относится: на нём падает Xray, а сервис x-ui продолжает работать — это пункт 2 выше.
journalctl -u x-ui -n 100 --no-pager
journalctl -u x-ui -f- Порт панели занят. Смените его:
x-ui, пункт 10. - Битая конфигурация панели. Сброс:
x-ui, пункт 9. Клиенты, inbound, логин и пароль останутся, но порт и веб-путь вернутся к значениям по умолчанию: новый адрес смотрите пунктом 11.
8. Серый IP за NAT
ip -4 addr show scope global | grep inet
curl -4 ifconfig.meЕсли на интерфейсе адрес из диапазонов 10., 172.16–31. или 192.168., а внешний другой, у вас NAT и входящие подключения не проходят. Нужен белый IPv4, обычно он покупается отдельно.
Быстрый чек-лист
nc -zv -w 5 IP 443grep XRAY /var/log/x-ui/3xui.log — искать flowxtls-rprx-vision-udp443journalctl -u x-ui -n 100, обычно занят портsshd -Tcurl -4 ifconfig.me не совпадает с ip addr