Народный

Гайды

Как настроить VLESS Reality пошагово: гайд 2026

АК Антон Кравцов · инженер сетевой безопасности · · обновлено 31 мая 2026 г. · ⏱ 6 мин
§ в этой статье — 17 разделов

VLESS Reality к 2026 году стал стандартом для российского self-host VPN. Этот гайд проведёт от пустого VPS до работающего туннеля за 30-40 минут. Без сторонних панелей, без скриптов «одной строкой» — только официальный xray-core, ручной конфиг и понимание каждого шага.

Подходит для тех, кто хочет владеть инфраструктурой целиком и понимать, что именно происходит на сервере. Если хотите быстрее и с панелью — смотрите гайд по 3x-ui или как поднять VPN на VPS.

Что нужно перед началом

Краткий чек-лист до запуска команд:

  • VPS в подходящей юрисдикции. Нидерланды, Германия, Финляндия, Сингапур — годятся. Если важна низкая задержка для Москвы и Питера — Финляндия (Hetzner Helsinki) или Нидерланды (Hetzner Falkenstein, технически в Германии, но трасса короткая). США и Канада — выше пинг.
  • Ubuntu 22.04 или Debian 12 — оба в LTS, xray работает на обоих. Centos и Fedora не рассматриваем, репозиторные пакеты xray там устаревшие.
  • Доступ по SSH с ключом, sudo. Пароль на root отключите после установки ключа.
  • Открытые порты 443/tcp и 80/tcp в firewall провайдера. 443 — для самого Reality, 80 — на случай если решите получать Let’s Encrypt для отдельного домена (Reality сам по себе сертификат не использует — он крадёт чужой во время handshake).
  • 15-20 минут на конфиг и 5-10 минут на тесты с клиентов.

Если про VLESS Reality слышите впервые — сначала прочтите обзор протокола и краткое объяснение Reality.

Шаг 1. Базовая подготовка VPS

Подключаемся по SSH и обновляем систему:

ssh root@<IP-вашего-VPS>
apt update && apt upgrade -y
apt install -y curl wget ca-certificates gnupg lsb-release ufw

Настроим firewall. Сейчас открываем минимум — 22 (SSH), 80 и 443:

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable
ufw status verbose

Создаём системного пользователя для xray (xray умеет работать от root, но это плохая практика):

useradd -r -s /usr/sbin/nologin -d /var/lib/xray xray
mkdir -p /var/lib/xray /etc/xray /var/log/xray
chown -R xray:xray /var/lib/xray /var/log/xray

Шаг 2. Установка xray-core

Берём официальный скрипт от XTLS — он ставит свежий бинарь, systemd unit и не лезет в системные конфиги:

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install -u xray

Проверяем версию:

xray version

В 2026 году актуальные релизы — это 1.8.x ветка с поддержкой Vision и Reality. Если вышел 1.9.x — тоже подойдёт, обратная совместимость сохраняется.

Если хотите версию из репозитория Debian — она устарела на 1-2 года, не подходит. Только официальный бинарь.

Шаг 3. Генерация ключевой пары X25519

Reality использует X25519 для собственного key exchange внутри TLS. Пара ключей генерируется командой xray:

xray x25519

Получите два значения:

Private key: aBcD...EfGh
Public key:  ZyXw...VuTs

Private key идёт в конфиг сервера. Public key — в конфиг каждого клиента. Сохраните оба, public раздавайте свободно, private — никогда. Скомпрометирован private — компрометируется вся конфигурация, нужно генерировать новую пару и обновлять всех клиентов.

Сгенерируйте также shortId — 0-16 hex-символов, идентификатор конкретного клиента/сессии:

openssl rand -hex 8

Получите что-то вроде 7f4a9c2e1b3d5f86. Это будет общий shortId для всех ваших клиентов или индивидуальный на каждое устройство (рекомендуется второе — так проще отозвать).

Шаг 4. Выбор fallback-домена

Это критически важный шаг. Fallback в Reality — это публичный сайт, параметры TLS которого ваш сервер будет «красть» во время handshake. С точки зрения ТСПУ ваш трафик к VPS неотличим от трафика к этому публичному сайту.

Требования к fallback:

  1. TLS 1.3 обязательно. Reality работает только поверх 1.3.
  2. X25519 в ECDHE. Большинство современных сайтов это умеют.
  3. HTTP/2 или HTTP/3 на ALPN.
  4. Не заблокирован в РФ (иначе ваш Reality-туннель тоже будет выглядеть подозрительно).
  5. Высокий объём трафика глобально. Чем популярнее сайт, тем меньше шансов, что DPI на нём триггернёт «странный паттерн».

Хорошие варианты для РФ:

  • yandex.ru — TLS 1.3, X25519, H2, не блокируется, миллиарды запросов в день. Топовый выбор.
  • www.microsoft.com — TLS 1.3, X25519, H2/H3, глобальный CDN.
  • dl.google.com — TLS 1.3, X25519, H3, не блокируется.
  • www.cloudflare.com — TLS 1.3, H2/H3. Минус: CF-IP частично в блок-листах ТСПУ, может тригернуть лишние эвристики.

Проверяем что fallback годится:

openssl s_client -connect yandex.ru:443 -tls1_3 -groups X25519 -alpn h2,http/1.1 </dev/null 2>/dev/null | grep -E "Protocol|Cipher|ALPN"

Должно быть Protocol: TLSv1.3, Cipher: TLS_AES_* и ALPN protocol: h2.

Шаг 5. Конфиг сервера xray

Создаём /etc/xray/config.json:

{
  "log": {
    "loglevel": "warning",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
  },
  "inbounds": [
    {
      "tag": "vless-reality",
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "ВАШ-UUID-СЮДА",
            "flow": "xtls-rprx-vision",
            "email": "phone@local"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "yandex.ru:443",
          "xver": 0,
          "serverNames": ["yandex.ru", "www.yandex.ru"],
          "privateKey": "ВАШ-PRIVATE-KEY",
          "shortIds": ["7f4a9c2e1b3d5f86"]
        }
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom"
    },
    {
      "tag": "block",
      "protocol": "blackhole"
    }
  ],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "block"
      }
    ]
  }
}

Сгенерируйте UUID для клиента:

xray uuid

Получите что-то вроде 7c4e8a91-2f5d-4b3e-9c1a-8e5f7d2b4a91 — вставьте в поле clients[0].id.

Замените ВАШ-PRIVATE-KEY на private key из шага 3.

Проверяем синтаксис конфига перед запуском:

xray run -test -c /etc/xray/config.json

Если ошибок нет — должно вывести Configuration OK.

Шаг 6. Запуск и автозагрузка

Запускаем сервис:

systemctl restart xray
systemctl enable xray
systemctl status xray

Должно быть active (running). Если нет — смотрим логи:

journalctl -u xray -n 50 --no-pager
tail -n 50 /var/log/xray/error.log

Типичные ошибки:

  • Permission denied на /var/log/xray — chown -R xray:xray /var/log/xray.
  • Bind: address already in use — на 443 уже что-то слушает (nginx?). Остановите конфликтующий сервис.
  • Invalid private key — опечатка в конфиге, regenerate через xray x25519.

Шаг 7. Конфиг клиента

Клиент-конфиг можно собрать в виде VLESS URI-ссылки:

vless://UUID@SERVER-IP:443?security=reality&sni=yandex.ru&fp=chrome&pbk=PUBLIC-KEY&sid=7f4a9c2e1b3d5f86&type=tcp&flow=xtls-rprx-vision#MyVPN

Где:

  • UUID — из шага 5
  • SERVER-IP — публичный IP вашего VPS
  • sni — fallback-домен из шага 4
  • fp=chrome — fingerprint utls (имитация Chrome TLS)
  • pbk — public key из шага 3
  • sid — shortId из шага 3

Подробнее про uTLS fingerprint — в статье uTLS и JA3.

Шаг 8. Импорт в клиенты

Hiddify (мульти-платформенный)

Hiddify — для Windows / macOS / Linux / iOS / Android.

  1. Скопируйте VLESS-ссылку в буфер.
  2. Откройте Hiddify → меню → «Добавить из буфера».
  3. Включите свежий профиль свайпом по тумблеру.

NekoBox (Android / Windows)

NekoBox умеет xray и sing-box ядра.

  1. Главный экран → меню «+» → «Импорт из буфера обмена».
  2. Профиль появится в списке, нажмите на него и затем «Старт».
  3. В настройках протокола убедитесь что выбран xray-core (не sing-box — в sing-box XTLS Vision реализован чуть иначе, для гарантированной совместимости первый раз тестируйте на xray).

v2rayN (Windows)

  1. Серверы → Импорт URL из буфера обмена.
  2. Правой кнопкой по записи → Установить как активный сервер.
  3. Системное меню → Системный прокси → «Установить системный прокси».

v2rayNG (Android)

  1. «+» → Импорт конфигурации → Импорт из буфера.
  2. Тапните на сервер → значок самолёта запустит туннель.

Шаг 9. Проверка работы

После запуска клиента проверьте:

curl -s https://api.ipify.org

Должен показать IP вашего VPS, не вашего домашнего провайдера.

Проверьте DNS-leak:

curl -s https://dnsleaktest.com/api

Запросы должны идти через DNS-резолверы VPS, не вашего ISP.

Проверьте скорость через speedtest.net или fast.com. На приличном VPS ожидаемые цифры: 80-90% скорости вашего канала до VPS, минус 10-20% на overhead TLS+xray.

Шаг 10. Безопасность и hardening

Несколько дополнительных мер:

  1. fail2ban на SSH: apt install fail2ban, дефолтный jail включён.

  2. Отключите password auth в /etc/ssh/sshd_config: PasswordAuthentication no + systemctl restart sshd.

  3. Ротация логов xray уже настроена через systemd, но проверьте что /var/log/xray/access.log не растёт бесконтрольно — добавьте в /etc/logrotate.d/xray:

    /var/log/xray/*.log {
        weekly
        rotate 4
        compress
        missingok
        notifempty
        sharedscripts
        postrotate
            systemctl reload xray > /dev/null 2>&1 || true
        endscript
    }
  4. Резервный fallback-домен: добавьте второй serverName в массив на случай если основной залипнет — Reality будет ротировать.

  5. Мониторинг доступности через uptime-kuma или просто cron curl раз в 5 минут — оповещение если 443 перестал отдавать TLS.

Частые проблемы

«Подключение есть, но интернет не идёт». Чаще всего — клиент не включил режим VPN/proxy на уровне системы. На Android нужно явно «принять VPN-запрос» при первом запуске. На Windows v2rayN требует «Установить системный прокси».

«Скорость медленнее ожидаемой». Проверьте не упёрся ли VPS в network quota. Хостеры Hetzner / aeza этого почти не лимитируют, но мелкие провайдеры могут отдавать 100 Mbit в пиках.

«ТСПУ через несколько часов начал резать». Маловероятно для Reality, но возможно если ваш IP попал в чёрный список после массовых параллельных сессий с разных клиентов. Меняйте IP сервера или ставьте второй VPS на другую подсеть.

«Reality работает только из дома, на работе/мобильном — нет». На корпоративных Wi-Fi / 3G/4G/5G у мобильных операторов часто свой дополнительный DPI поверх ТСПУ. Если есть проблемы на сети МТС — смотрите специфические рекомендации.

Связанные материалы

§ FAQ

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

[ + ] Какой fallback-домен выбрать для VLESS Reality в России?
Берите крупный российский сайт, который точно не заблокируют по ошибке и который слушает TLS 1.3 с X25519: yandex.ru, www.microsoft.com, www.cloudflare.com, dl.google.com. Главные требования — поддержка TLS 1.3, HTTP/2 или HTTP/3, X25519 в ECDHE, и стабильное наличие в сети РФ. Проверить можно командой openssl s_client -connect yandex.ru:443 -tls1_3.
[ + ] Чем XTLS Vision отличается от обычного TLS-туннеля?
Vision — это XTLS flow, который пропускает прикладной трафик после handshake мимо вторичного шифрования xray. Внутри Reality-туннеля скорость выше на 20-40% по сравнению с TLS-only режимом, потому что нет double-encryption. Включается параметром flow: xtls-rprx-vision на стороне сервера и клиента. Несовместим с не-Vision-клиентами — все приложения должны его поддерживать.
[ + ] Нужен ли домен для VLESS Reality или можно работать на голом IP?
Reality работает на голом IP — клиент подключается к IP сервера, а fallback-домен это просто ServerName в TLS handshake. Можно купить домен и направить A-запись на VPS, можно работать с raw-IP. С доменом удобнее ротировать сервера (меняешь A-запись и клиенты не трогаешь), без — проще и анонимнее. На устойчивость к ТСПУ выбор не влияет.

читать дальше

Похожие статьи