Что такое VLESS Reality и зачем он нужен в Remnawave
VLESS Reality — это современный протокол на базе Xray, который маскирует трафик под легитимное TLS-соединение с реальным сайтом. В отличие от традиционных VPN, Reality не требует покупки домена и SSL-сертификата: он использует чужой TLS-хендшейк, что делает его практически неотличимым от обычного HTTPS-трафика. Это особенно важно для пользователей в странах с жёсткой интернет-цензурой, где DPI активно блокирует VPN-протоколы.
Remnawave — это панель управления для Xray-серверов, которая упрощает создание и управление прокси-нодами. Она предоставляет готовые шаблоны конфигураций, включая VLESS Reality, и позволяет гибко настраивать роутинг, лимиты и пользователей. Панель автоматически очищает массивы clients в серверных конфигурациях, поэтому для сложных схем, таких как серверный роутинг, приходится использовать сервисных пользователей.
В этой статье мы разберём, как настроить VLESS Reality в Remnawave, используя официальные шаблоны и практические примеры из документации.
Стандартный шаблон VLESS-TCP-REALITY: базовая конфигурация
В репозитории Remnawave есть несколько шаблонов для VLESS Reality. Самый простой — example-vless-tcp-reality.json, который служит отправной точкой для большинства установок. Он слушает порт 443, использует security: reality и требует ручного заполнения трёх ключевых полей: target, privateKey и serverNames.
target— адрес реального сайта, на который будет ссылаться хендшейк (например,example.com:443).privateKey— приватный ключ, генерируемый командойxray x25519.serverNames— список доменов, которые будут использоваться как SNI (Server Name Indication).
Пример базового inbound:
{
"tag": "PUBLIC_RU_INBOUND",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"target": "USE OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE OWN KEY!",
"serverNames": ["REPLACE WITH OWN VALUES!"]
}
}
}Этот шаблон подходит для простых сценариев, когда все пользователи подключаются напрямую к одной ноде. Однако для более сложных схем, таких как маршрутизация трафика через несколько серверов, потребуется дополнительная настройка.
Self-Steal с Nginx: маскировка под локальный сайт
Более продвинутый шаблон — example-vless-selfsteal-with-nginx.json. Он использует технику "self-steal", когда Xray маскируется под Nginx, работающий на том же сервере. Это снижает детектируемость, так как трафик выглядит как обычное HTTPS-соединение с вашим собственным сайтом.
Ключевые особенности:
- Используется Unix-сокет
/dev/shm/nginx.sockдля связи с Nginx, что повышает производительность. - Включается Proxy Protocol (
xver: 1) для передачи реального IP клиента. - DNS-серверы Cloudflare (1.1.1.1, 1.0.0.1) предварительно настроены для ускорения DNS-запросов.
Пример фрагмента конфигурации:
"realitySettings": {
"target": "/dev/shm/nginx.sock",
"xver": 1,
"serverNames": ["your-domain.com"]
}Этот подход требует, чтобы на сервере был установлен и настроен Nginx с действующим SSL-сертификатом. Он идеален для тех, кто уже имеет веб-сайт на сервере и хочет использовать его как прикрытие.
Комбинированный шаблон VLESS+TLS и Hysteria2 на порту 443
Для максимальной эффективности можно использовать шаблон example-vless-tls-hy2-443-combo.json, который позволяет запускать VLESS (TCP) и Hysteria2 (UDP) на одном порту 443. Это особенно полезно для обхода строгих файрволов, которые блокируют нестандартные порты.
VLESS inbound обрабатывает TLS-терминацию, а если запрос не является валидным VLESS-соединением, он перенаправляется на порт 9443, где обычно размещён сайт-приманка. Hysteria2, в свою очередь, использует UDP и BBR-контроль перегрузки для высокой скорости.
SSL-сертификаты ожидаются по пути /var/lib/remnawave/configs/xray/ssl/ (cert.key и cert.pem). Этот шаблон требует наличия действующих сертификатов, поэтому он подходит для тех, кто уже имеет домен и настроил SSL.
Пример настройки Hysteria2:
{
"tag": "HY2_IN",
"port": 443,
"protocol": "hysteria2",
"settings": {
"bbr": true
}
}Комбинированный подход позволяет обслуживать больше клиентов с разными протоколами, не увеличивая количество открытых портов.
Серверный роутинг в Remnawave: базовые принципы
Серверный роутинг позволяет направлять трафик пользователей по разным маршрутам в зависимости от правил. Например, можно отправлять российские сайты напрямую с локального сервера, а весь остальной трафик — через зарубежный сервер. Это снижает задержку для локальных ресурсов и экономит трафик на зарубежном канале.
В Remnawave роутинг настраивается через конфигурационные профили (Config Profiles) и сервисных пользователей. Панель автоматически очищает массивы clients, поэтому для создания мостов между серверами используются специальные пользователи с неограниченным сроком действия и без лимитов трафика.
Основные компоненты:
- Inbound — точка входа трафика (например, VLESS Reality на порту 443).
- Outbound — направление выхода трафика (DIRECT, BLOCK, или другой сервер).
- Routing rules — правила, определяющие, какой outbound использовать для какого трафика.
Правила обрабатываются последовательно, поэтому порядок важен. Например, сначала блокируются приватные IP и домены, затем направляются локальные ресурсы, а всё остальное уходит на удалённый сервер.
Создание сервисного пользователя для роутинга
Для реализации серверного роутинга необходимо создать сервисного пользователя, который будет использоваться как мост между серверами. В документации Remnawave описан пример с двумя серверами: RU-001 (вход) и DE-001 (выход).
Шаги:
- Создайте профиль конфигурации для DE-001, например,
Bridge Profile, с inbound на порту 9999, использующим Shadowsocks. - Включите этот inbound в ноде DE-001 через Internal Squad.
- Создайте пользователя
bridge_user_001без лимитов трафика и с датой истечения подписки в 2099 году. - Активируйте для этого пользователя созданный сквад.
- Скопируйте пароль (или UUID) из раздела Detailed Info пользователя.
Пример inbound для DE-001:
{
"tag": "BRIDGE_DE_IN",
"port": 9999,
"protocol": "shadowsocks",
"settings": {
"clients": [],
"network": "tcp,udp"
}
}Важно: для Shadowsocks Remnawave поддерживает только метод chacha20-ietf-poly1305. Использование других методов приведёт к ошибкам.
Настройка публичного профиля и outbound для роутинга
После создания сервисного пользователя необходимо настроить публичный профиль, который используется обычными пользователями. В этом профиле добавляется outbound, который будет отправлять трафик на DE-001 через Shadowsocks.
Пример outbound:
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "ADDRESS_OF_DE-001",
"password": "ПАРОЛЬ_С_ПРОШЛОГО_ШАГА",
"port": 9999,
"method": "chacha20-ietf-poly1305"
}
]
}
}Затем в routing rules добавляются правила:
- Блокировка приватных IP и доменов (geoip:private, geosite:private).
- Блокировка торрентов (bittorrent).
- Направление российских сайтов напрямую (geoip:ru, geosite:category-ru).
- Весь остальной трафик — на SS_OUTBOUND_TO_DE.
Пример правил:
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
},
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}Такая схема позволяет пользователям подключаться к RU-001 по VLESS Reality, а трафик автоматически распределяется между локальным и удалённым серверами.
Подключение ноды через VLESS Reality с SOCKS5-прокси
Начиная с версии Remnawave 2.8.0, появилась возможность подключать ноды через SOCKS5-прокси. Это позволяет проксировать соединение от панели к ноде через любой транспорт, поддерживаемый Xray, включая VLESS Reality. Такой подход полезен, когда нода находится за CDN или в другой сети.
Для этого необходимо:
- Создать отдельный Xray-контейнер, который будет выступать в роли SOCKS5-прокси.
- Настроить в его конфигурации inbound SOCKS5 на порту 3002 и outbound VLESS Reality на удалённую ноду.
- Подключить этот контейнер к сети
remnawave-network, чтобы панель могла обращаться к нему по имениxray.
Пример конфигурации Xray для прокси:
{
"inbounds": [
{
"listen": "0.0.0.0",
"port": 3002,
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": false
},
"tag": "socks-in"
}
],
"outbounds": [
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "",
"port": 443,
"users": [
{
"encryption": "none",
"flow": "",
"id": ""
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"realitySettings": {
"fingerprint": "chrome",
"publicKey": "",
"serverName": "",
"shortId": ""
},
"security": "reality"
},
"tag": "proxy"
}
]
}В настройках ноды в панели Remnawave укажите SOCKS-прокси: socks5://xray:3002. Это позволит панели подключаться к ноде через зашифрованный туннель.
Типовые ошибки и их устранение
При настройке VLESS Reality в Remnawave пользователи часто сталкиваются с рядом проблем. Рассмотрим основные:
- Ошибка "clients" очищается панелью — это нормальное поведение, не пытайтесь вручную добавлять клиентов в серверную конфигурацию. Используйте сервисных пользователей для роутинга.
- Не работает роутинг — проверьте порядок правил. Если правило
inboundTagстоит раньше, чем правилоgeoip:ru, весь трафик уйдёт на удалённый сервер, и локальные сайты не будут работать.
- Shadowsocks не подключается — убедитесь, что используется метод
chacha20-ietf-poly1305. Другие методы не поддерживаются Remnawave.
- Проблемы с SOCKS5-прокси — проверьте, что контейнер Xray подключён к сети
remnawave-networkи что порт 3002 доступен. Используйте командуdocker exec -it remnawave curl -x socks5h://xray:3002 https://ifconfig.meдля проверки.
- Сертификаты для комбинированного шаблона — убедитесь, что файлы
cert.keyиcert.pemнаходятся в правильном пути и имеют корректные права доступа.
Если проблема не решается, включите DEBUG-логирование в Xray и изучите access.log и error.log.
Практические рекомендации по выбору конфигурации
Выбор подходящей конфигурации VLESS Reality зависит от ваших задач и инфраструктуры.
- Для одиночного сервера с небольшим количеством пользователей подойдёт стандартный шаблон
example-vless-tcp-reality.json. Он прост в настройке и не требует дополнительных компонентов.
- Если у вас уже есть веб-сайт на сервере, используйте self-steal с Nginx. Это повысит скрытность и снизит риск блокировки.
- Для обхода строгих файрволов используйте комбинированный шаблон VLESS+TLS+Hysteria2. Он позволяет работать через UDP, что часто не блокируется.
- Для распределённой инфраструктуры с несколькими серверами настройте серверный роутинг с сервисными пользователями. Это оптимизирует трафик и снижает задержки.
- Для подключения нод через CDN используйте SOCKS5-прокси с Xray. Это позволяет обойти ограничения на прямые подключения.
Помните, что все шаблоны требуют ручной замены плейсхолдеров (target, privateKey, serverNames, UUID и т.д.). Никогда не используйте значения по умолчанию в production-среде.
Вопросы и ответы
Что такое VLESS Reality и чем он отличается от обычного VLESS+TLS?
VLESS Reality — это протокол, который маскирует трафик под легитимное TLS-соединение с реальным сайтом, не требуя собственного SSL-сертификата. Он использует чужой TLS-хендшейк, что делает его неотличимым от обычного HTTPS. В отличие от VLESS+TLS, где нужен домен и сертификат, Reality работает на любом IP и не оставляет следов, которые можно обнаружить с помощью DPI.
Как сгенерировать ключи для VLESS Reality?
Для генерации ключей используйте команду xray x25519. Она выведет приватный и публичный ключи. Приватный ключ вставляется в privateKey в серверной конфигурации, а публичный — в publicKey в клиентской конфигурации. Также необходимо сгенерировать UUID для каждого пользователя (команда xray uuid).
Почему Remnawave очищает массив clients в конфигурации?
Панель автоматически очищает массив clients, чтобы гарантировать, что в нём нет лишних данных, которые могут нарушить работу функций панели, таких как управление пользователями и лимитами. Поэтому для сложных схем, например серверного роутинга, используются сервисные пользователи, созданные через панель.
Можно ли использовать VLESS Reality для подключения ноды через CDN?
Да, это возможно. Для этого нужно настроить SOCKS5-прокси на базе Xray, который будет проксировать соединение от панели к ноде через VLESS Reality. В конфигурации прокси указывается outbound VLESS Reality с параметрами удалённой ноды. Панель подключается к прокси через SOCKS5, а прокси уже устанавливает защищённое соединение с нодой.
Какие методы шифрования поддерживает Shadowsocks в Remnawave?
Remnawave поддерживает только метод chacha20-ietf-poly1305 для Shadowsocks. Использование других методов приведёт к ошибкам подключения. Это ограничение важно учитывать при настройке серверного роутинга, где Shadowsocks часто используется как транзитный протокол.
Как проверить, что SOCKS5-прокси для ноды работает?
Выполните команду на сервере с панелью: docker exec -it remnawave curl -k -x socks5h://xray:3002 https://ifconfig.me. Если команда возвращает IP-адрес удалённой ноды, значит прокси работает корректно. Также можно проверить логи Xray на наличие ошибок.