VLESS Reality на Xray: настройка сервера в 2026 году
Reality — это протокол, который научился прятать VPN-трафик внутри настоящего HTTPS-сеанса к чужому сайту. Ни своего домена, ни сертификата — и при этом лучшая на сегодня устойчивость к глубокой инспекции пакетов. Разберём настройку от голого VPS до рабочего клиента.
Привет! Я Семёнов Евгений Сергеевич, директор АйТи Фреш. Мы обслуживаем ИТ-инфраструктуру компаний в Москве, и за последние два года запрос номер один сместился с «поднимите нам VPN» на «поднимите нам VPN, который не отвалится через неделю». Классические протоколы вроде Shadowsocks и WireGuard системы DPI научились узнавать по сигнатуре и подрезать. VLESS + XTLS-Reality на Xray-core решает эту задачу элегантно: сервер маскирует корпоративную связность под обычное соединение с реальным крупным сайтом. В этом гайде я по шагам покажу, как собрать такой сервер для доступа сотрудников к рабочим ресурсам — с реальными командами, полным config.json и разбором граблей, на которые мы сами наступали.
Что такое Reality и почему это лучший обход DPI
Чтобы оценить Reality, нужно понять боль классического VLESS+TLS. Там вы поднимаете свой домен, получаете сертификат Let's Encrypt, а DPI смотрит на SNI в TLS-хендшейке и видит ваш никому не известный домен — подозрительно. Reality переворачивает схему: сервер при рукопожатии предъявляет клиенту сертификат чужого реального сайта (например, www.microsoft.com), а трафик, пришедший с «неправильным» SNI или от постороннего сканера, молча проксирует на этот же настоящий сайт. Для наблюдателя со стороны это неотличимо от того, что кто-то просто зашёл на microsoft.com.
- Не нужен свой домен и сертификат. Убирается целый класс проблем: покупка домена, ACME, продление, засветка домена в чёрных списках.
- Устойчивость к активному зондированию. Если цензор попробует «постучаться» на ваш порт, он получит настоящий сайт-маску, а не ошибку прокси.
- XTLS-Vision. Режим
xtls-rprx-visionубирает двойное шифрование TLS-в-TLS и маскирует характерные размеры пакетов.
На нашей практике связки Reality пережили несколько волн ограничений там, где Shadowsocks и обычный WireGuard приходилось экстренно переносить. Про то, как выбирать протокол под конкретную сеть, у нас есть отдельный разбор — обход DPI: сравнение корпоративных протоколов 2026.
Что понадобится: сервер и версия Xray
Reality крайне экономичен. Для офиса на 50–100 человек хватает младшего VPS с белым IPv4. Локацию берём там, где провайдер лоялен и канал широкий — Нидерланды, Германия, Финляндия.
| Сотрудников | vCPU | RAM | Канал |
|---|---|---|---|
| до 30 | 1 | 512 МБ – 1 ГБ | 100–200 Мбит/с |
| 30–150 | 1–2 | 1–2 ГБ | от 500 Мбит/с |
| 150–500 | 2–4 | 2–4 ГБ | 1 Гбит/с |
Актуальное ядро — Xray-core версии v26.x (проект перешёл на календарную нумерацию CalVer вида vГГ.М.Д; на момент написания свежий релиз — v26.6.27). Обновляется ядро часто, поэтому мы ставим его официальным скриптом, который сам подтягивает последнюю стабильную сборку с GitHub. Систему берём Debian 12 или Ubuntu 22.04/24.04.
Шаг 1. Установка Xray-core
Официальный установщик XTLS/Xray-install кладёт бинарник в /usr/local/bin/xray, конфиги в /usr/local/etc/xray/ и создаёт готовые systemd-юниты xray.service и xray@.service. Не собираем из исходников вручную — скрипт делает всё правильно и по FHS.
# Обновляемся и ставим Xray официальным скриптом
apt update && apt install -y curl
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
# Проверяем, что бинарник встал и видит свою версию
xray version
Скрипт выведет «info: Start the Xray service» — сервис уже запущен, но пока с пустым дефолтным конфигом. Сейчас мы его заменим на боевой.
Шаг 2. Ключи x25519, UUID и shortId
Reality работает на паре ключей X25519. Приватный ключ живёт на сервере, публичный — раздаётся клиентам. Генерируем всё нужное встроенными средствами Xray и системы:
# Пара ключей Reality: первая строка — приватный (на сервер), вторая — публичный (клиентам)
xray x25519
# UUID для клиента (идентификатор пользователя VLESS)
xray uuid
# shortId — короткий hex-идентификатор, до 16 символов (8 байт)
openssl rand -hex 8
Команда xray x25519 печатает две строки — приватный и публичный ключ. Запомните, какой из них какой: приватный (Private key) пойдёт в privateKey серверного конфига, публичный (Public key) — в настройки клиента как publicKey. Это классическая грабля: перепутали местами — handshake проходит, а трафик не идёт.
Шаг 3. Выбор dest и serverNames (маскировка)
Это сердце маскировки. dest — реальный сайт, под который мы прячемся, а serverNames — список SNI, которые клиент будет предъявлять. Требования к сайту-маске:
- Поддерживает TLS 1.3 и HTTP/2 (без этого Reality не заработает).
- Не заблокирован в целевом регионе и стабильно доступен с вашего VPS.
- Крупный, «фоновый» ресурс, к которому обращения не выглядят странно:
www.microsoft.com,www.nvidia.com,dl.google.com,www.samsung.com. - Желательно географически близок к серверу — так меньше задержка на fallback.
Проверить поддержку TLS 1.3 у кандидата можно заранее:
openssl s_client -connect www.microsoft.com:443 -tls1_3 </dev/null 2>/dev/null | grep -i "TLSv1.3"
Важно: значение в serverNames и SNI на клиенте должны совпадать точь-в-точь, а dest указывать на тот же хост на порту 443.
Шаг 4. Рабочий config.json для VLESS-Reality
Теперь собираем всё в конфиг. Открываем /usr/local/etc/xray/config.json и приводим к следующему виду (подставьте свои UUID, приватный ключ и shortId):
{
"log": { "loglevel": "warning" },
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "ВАШ-UUID-ИЗ-xray-uuid",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.microsoft.com:443",
"xver": 0,
"serverNames": [
"www.microsoft.com"
],
"privateKey": "ПРИВАТНЫЙ-КЛЮЧ-ИЗ-xray-x25519",
"shortIds": [
"",
"0123456789abcdef"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [ "http", "tls", "quic" ]
}
}
],
"outbounds": [
{ "protocol": "freedom", "tag": "direct" },
{ "protocol": "blackhole", "tag": "block" }
]
}
Разберём ключевые поля, чтобы вы понимали, что правите, а не копировали вслепую:
flow: "xtls-rprx-vision"— обязателен для Reality поверх TCP; и на сервере, и на клиенте.destиserverNames— наша маска из шага 3.privateKey— приватный ключ сервера (публичный сюда НЕ пишем).shortIds— список допустимых идентификаторов. Пустая строка""разрешает подключения вообще без shortId; конкретный hex — для более строгого разграничения клиентов.xver: 0— PROXY protocol выключен (нужен только при проксировании через фронтенд).
Проверяем синтаксис перед запуском — это спасает от опечаток в JSON:
xray run -test -config /usr/local/etc/xray/config.json
Шаг 5. Запуск через systemd
Юнит уже создан установщиком, поэтому нам остаётся перечитать конфиг и включить автозапуск. systemd сам поднимет сервис при перезагрузке и перезапустит его при сбое.
# Применяем конфиг и включаем автозапуск
systemctl restart xray
systemctl enable xray
systemctl status xray
# Смотрим, что Xray слушает 443
ss -tlnp | grep 443
# Логи в реальном времени, если что-то не так
journalctl -u xray -f
На фаерволе открываем наружу только 443/tcp, а SSH переносим на нестандартный порт и закрываем по ключу. Меньше открытых портов — меньше поводов для внимания сканеров.
Шаг 6. Подключаем клиентов
Клиенту нужен минимальный набор параметров: address (IP сервера), port 443, id (UUID), flow xtls-rprx-vision, publicKey, serverName (он же SNI = ваш dest) и shortId. Все популярные клиенты понимают Reality из коробки:
- Hiddify (Windows, macOS, Android, iOS) — самый дружелюбный для сотрудников: импорт по ссылке-подписке или QR, дальше одна кнопка.
- v2rayNG (Android) — вручную задаём тип TLS = reality, вставляем publicKey и shortId.
- NekoBox (Android) и Nekoray (десктоп) — гибкие, удобны для отладки и просмотра логов handshake.
Проще всего раздать сотрудникам одну ссылку формата vless://UUID@IP:443?...&security=reality&pbk=PUBLIC_KEY&sni=www.microsoft.com&sid=SHORTID&flow=xtls-rprx-vision&type=tcp#Office. Клиент импортирует её одним нажатием и настраивается сам. Для парка из десятков устройств удобнее централизованная панель с подписками — про клиентскую сторону и связанные с ней риски мы отдельно писали в аудите VLESS-клиентов и их CVE для корпоративного применения.
Частые ошибки
- Перепутаны privateKey и publicKey. На сервер идёт приватный, клиенту — публичный. Симптом: соединение вроде устанавливается, но данные не ходят.
- Разъехалось время на сервере. Reality чувствителен к рассинхрону часов (окно около 90 секунд). Ставим и включаем NTP:
timedatectl set-ntp true. - dest без TLS 1.3. Если сайт-маска не отдаёт TLS 1.3 и HTTP/2, handshake рвётся. Проверяйте кандидата
openssl s_clientзаранее. - SNI ≠ serverNames. Значение
serverNameна клиенте должно быть точно из спискаserverNamesна сервере, иначе трафик уходит в fallback на реальный сайт. - Забыли flow. Отсутствие
xtls-rprx-visionна одной из сторон — типовая причина «подключается, но не грузит». - Открыт лишний порт или засвечен свой домен. Reality не требует своего домена — не поднимайте рядом «на всякий случай» обычный VLESS+TLS с личным сертификатом, это ослабляет маскировку.
Настроим устойчивый доступ к рабочим ресурсам под ключ
Если нужна не разовая инструкция, а работающая корпоративная связность с резервированием, мониторингом и поддержкой — поможем подобрать VPS, развернуть VLESS-Reality, раздать клиентов сотрудникам и держать сервис в тонусе. Работаем с юрлицами в Москве и МО.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss · info@itfresh.ru
Семёнов Евгений Сергеевич, директор АйТи Фреш
Своими силами или на аутсорсе
Поднять один сервер Reality по этому гайду — вечер работы. Но в компании появляется вопрос эксплуатации: кто следит за обновлениями ядра, кто меняет ключи при уходе сотрудника, кто резервирует локацию, если провайдер начнёт «фильтровать». Это уже не установка, а сопровождение, и здесь стоит взвесить, держать ли компетенцию внутри или отдать наружу. Мы разбирали эту развилку подробно в материале штатный сисадмин против ИТ-аутсорсинга в 2026 году — рекомендую, если решаете, кому доверить инфраструктуру.
Частые вопросы
- Нужен ли для Reality собственный домен и TLS-сертификат?
- Нет. В этом главное преимущество Reality перед классическим VLESS+TLS: сервер заимствует TLS-сертификат чужого реального сайта (dest), например www.microsoft.com. Свой домен, Let's Encrypt и продление сертификатов не нужны — достаточно голого VPS с белым IP.
- Какой dest и serverNames выбрать для маскировки?
- Берите крупный сайт на TLS 1.3 и HTTP/2, географически близкий к серверу и не заблокированный. Хорошо работают www.microsoft.com, www.nvidia.com, dl.google.com. serverNames должен точно совпадать с SNI, который клиент отправляет при подключении, а dest указывает на тот же хост на порту 443.
- Чем VLESS-Reality отличается от Shadowsocks и обычного VPN?
- Reality не просто шифрует трафик, а маскирует его под живой HTTPS-сеанс к реальному сайту с настоящим сертификатом. Для системы глубокой инспекции пакетов соединение неотличимо от обычного посещения microsoft.com, тогда как Shadowsocks и WireGuard имеют узнаваемые сигнатуры и чаще попадают под ограничения.
- Что такое shortIds и flow xtls-rprx-vision?
- shortIds — список коротких hex-идентификаторов (до 16 символов), по которым сервер различает клиентов; пустая строка в списке разрешает подключения без shortId. Flow xtls-rprx-vision — фирменный режим XTLS-Vision, который снижает накладные расходы двойного шифрования и защищает от анализа по длине пакетов.
- Один сервер Reality — сколько сотрудников выдержит?
- VLESS+Reality очень экономичен по ресурсам. VPS с 1 vCPU и 1 ГБ RAM спокойно держит 100–300 активных подключений. Для сотни сотрудников офиса этого достаточно; упор идёт в пропускную способность канала, а не в процессор.
- Почему подключение обрывается сразу после handshake?
- Самые частые причины: время на сервере ушло больше чем на 90 секунд (Reality чувствителен к рассинхрону — включите NTP), publicKey у клиента не соответствует privateKey сервера, либо выбранный dest не поддерживает TLS 1.3. Проверьте journalctl -u xray и синхронизацию часов.
Заключение
VLESS + XTLS-Reality на Xray-core — это про надёжность и незаметность. Вы получаете корпоративную связность, которая не требует своего домена, устойчива к активному зондированию и внешне неотличима от обычного визита на крупный сайт. Ключевые моменты: ставьте ядро официальным скриптом, не путайте приватный и публичный ключи, синхронизируйте время, подбирайте dest с TLS 1.3 и держите открытым один порт. Соберите такой сервер по шагам выше — и доступ сотрудников к рабочим ресурсам перестанет быть головной болью. А если нужна эксплуатация под ключ с резервом и мониторингом — вы знаете, где нас найти.
