bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Выбор SNI для VLESS Reality: как проверить домен и не попасть под блок

calendar_month Sep 12, 2026 schedule 18 мин. чтения visibility 12 просмотров
Выбор SNI для VLESS Reality: как проверить домен и не попасть под блок
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Выбор SNI для VLESS Reality: как проверить домен и не попасть под блок

TL;DR

Для VLESS Reality SNI — это имя публичного HTTPS-домена, которое клиент показывает в TLS ClientHello. Его нужно выбирать не по популярности, а по технической совместимости: домен должен стабильно отвечать по TLS 1.3, поддерживать современный сертификат, не редиректить на нестандартные протоколы и быть доступным из сети ваших клиентов. В этом руководстве вы развернёте Xray-core с VLESS Reality, проверите кандидатуры SNI, настроите firewall, резервные копии и диагностику.

  • SNI для Reality не обязательно должен принадлежать вам: Reality маскирует TLS-соединение под выбранный публичный сайт.
  • Лучший кандидат — стабильный HTTPS-домен с TLS 1.3, корректной цепочкой сертификатов и быстрым ответом из нужной страны.
  • Не используйте домены банков, государственных сервисов, платёжных систем, сайтов с жёстной геофильтрацией и ресурсов с нестабильной доступностью.
  • Проверяйте DNS, TLS-версию, сертификат, ALPN, HTTP-ответ и доступность из реальной сети клиента.
  • Для небольшого личного VLESS Reality-сервера обычно достаточно VPS с 1 vCPU, 1 ГБ RAM, 10–20 ГБ NVMe и портом 1 Гбит/с.
  • Reality не требует сертификата на вашем сервере: TLS-сертификат для маскирующего домена не выпускается и не устанавливается.

Что мы настраиваем и зачем

Схема: Что мы настраиваем и зачем
Схема: Что мы настраиваем и зачем

VLESS Reality — транспортная схема в Xray-core для защищённого клиент-серверного соединения. Она использует TLS-рукопожатие, похожее на подключение к обычному HTTPS-сайту, но проверка клиента строится на ключевой паре Reality, short ID и параметрах VLESS. В отличие от обычного TLS-прокси, серверу не нужен публичный домен и собственный сертификат для входящего подключения.

Главный параметр, который обычно вызывает вопросы, — SNI, Server Name Indication. Это имя хоста, передаваемое клиентом в начале TLS-сессии. В конфигурации Reality список разрешённых имён задаётся параметром serverNames, а целевой публичный HTTPS-хост — параметром dest. Обычно один и тот же домен используется и в serverNames, и как hostname в dest.

Цель настройки — получить контролируемый личный сервер для безопасного доступа к собственным ресурсам и защищённого трафика в недоверенных сетях. После выполнения шагов у вас будет:

  • VPS с минимально защищённым SSH-доступом и firewall;
  • установленный актуальный Xray-core;
  • пара ключей X25519 для Reality;
  • конфигурация VLESS Reality на TCP-порту 443;
  • методика проверки SNI-домена до добавления его в рабочую конфигурацию;
  • сценарий резервного копирования конфигов и ключевого материала;
  • диагностика типичных ошибок подключения.

Как Reality использует SNI

Клиент подключается к IP-адресу вашего VPS, но в TLS ClientHello указывает выбранное имя, например www.example.net. Сервер Xray принимает соединение только при совпадении SNI с разрешённым списком и при успешной криптографической проверке параметров Reality. Для внешнего наблюдателя соединение выглядит как TLS-сессия с указанным именем, однако сетевой маршрут ведёт на IP вашего сервера.

Параметр dest нужен Reality как целевой TLS-профиль и fallback-направление для невалидных соединений. Важно, чтобы домен действительно обслуживал HTTPS и был технически похож на ожидаемый браузерный трафик. Неподходящий домен может приводить к тайм-аутам, ошибкам рукопожатия или нестабильной работе после изменений на стороне сайта.

Какие домены не стоит выбирать

Не выбирайте домен только потому, что он известный или имеет высокий рейтинг. Чем сильнее домен связан с финансовыми организациями, государственными сервисами, платёжной инфраструктурой, почтой или корпоративной безопасностью, тем выше вероятность специальных TLS-политик, ограничений по регионам, сложной антибот-защиты и частых изменений конфигурации.

  • Не используйте сайты банков, бирж, платёжных систем и государственных порталов.
  • Не используйте домены, которые в вашей сети уже недоступны или требуют нестандартного DNS.
  • Избегайте сайтов с TLS 1.2-only, самоподписанными сертификатами и ошибочной цепочкой CA.
  • Не выбирайте домены, которые отвечают только через IPv6, если у ваших клиентов нестабильный IPv6.
  • Не используйте хосты, которые постоянно меняют CDN, сертификаты или требуют JavaScript-проверку уже на уровне соединения.
  • Не используйте чужие бренды в названиях профилей, QR-кодов и публичных инструкций для пользователей.

Альтернативы: управляемые сервисы и собственный VPS

Управляемые VPN-сервисы проще запускать: не нужно обновлять систему, настраивать firewall и хранить ключи. Но вы не контролируете серверную конфигурацию, журналирование, маршрутизацию и срок хранения данных. Кроме того, провайдер может менять адреса, правила доступа и доступные протоколы без вашего согласования.

Self-hosted VLESS Reality на VPS требует базового администрирования Linux, но даёт контроль над IP-адресом, портами, доступом пользователей и резервными копиями. Для одного владельца или небольшой команды это обычно оправдано, если вы готовы регулярно устанавливать обновления и проверять журналы.

Какой VPS-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой VPS-конфиг нужен под эту задачу

VLESS Reality сам по себе потребляет немного памяти и процессорного времени. Нагрузка определяется не числом конфигурационных строк, а количеством одновременных TLS-соединений, скоростью шифрования, объёмом передаваемых данных и дополнительными сервисами на сервере.

Сценарий CPU RAM Диск Сеть
1–3 личных устройства 1 vCPU 1 ГБ 10 ГБ NVMe 100 Мбит/с или выше
Семья или команда до 10 человек 2 vCPU 2 ГБ 20–30 ГБ NVMe 1 Гбит/с
20–50 активных пользователей 4 vCPU 4 ГБ 40 ГБ NVMe 1 Гбит/с, достаточный трафик

Практичный стартовый вариант — 2 vCPU, 2 ГБ RAM, 20 ГБ NVMe, IPv4 и канал 1 Гбит/с. Такой запас позволяет разместить Xray-core, fail2ban, систему резервного копирования, мониторинг и несколько пользователей без борьбы за память. При выборе можно взять VPS с указанными характеристиками или аналогичный план у другого провайдера.

На что смотреть кроме CPU и RAM

  • Выделенный IPv4. Он упрощает подключение старых сетей и мобильных клиентов.
  • IPv6. Полезен как дополнительный путь, но не должен быть единственной точкой доступа.
  • Трафик. Оцените месячный лимит. Видеозвонки и обновления ОС расходуют его заметно быстрее обычного веб-сёрфинга.
  • Политика допустимого использования. Не нарушайте правила дата-центра и местное законодательство.
  • Возможность переустановки ОС и snapshot. Это сокращает время восстановления после ошибки.
  • Консоль доступа. VNC, serial console или rescue mode нужны, если вы ошиблись в firewall и закрыли SSH.

Когда нужен dedicated, а не VPS

Выделенный сервер не нужен для одного пользователя и обычно не нужен для маленькой команды. Он становится обоснованным при устойчивой нагрузке в сотни мегабит в секунду, большом количестве одновременных клиентов, необходимости изолировать ресурсы от соседей по виртуализации или при размещении дополнительных тяжёлых сервисов.

Если проблема — кратковременные просадки скорости, сначала проверьте лимит канала, потерю пакетов, маршрут и загрузку CPU. Переход на dedicated не исправит неверный SNI, заблокированный порт, ошибочную конфигурацию клиента или ограничения мобильной сети.

Как влияет локация VPS

Локация определяет задержку, маршрут до клиентов и доступность выбранного SNI-домена из дата-центра. Для интерактивных задач выбирайте сервер ближе к основной аудитории: задержка до 60–100 мс обычно комфортна для браузинга и звонков. Проверяйте не только ping до VPS, но и реальную скорость TCP-соединений в часы пик.

Если клиенты находятся в разных регионах, не пытайтесь решить всё одним сервером. Надёжнее развернуть два независимых узла, подготовить отдельные профили и переключаться между ними вручную либо через собственную систему доступа.

Подготовка сервера

Схема: Подготовка сервера
Схема: Подготовка сервера

Ниже используется Ubuntu Server 24.04 LTS. На начало 2026 года это стабильная LTS-база с поддержкой безопасности до 2029 года. Команды подходят и для Debian 12/13 с небольшими изменениями названий пакетов.

Подключитесь к серверу под пользователем, выданным провайдером, и сразу обновите систему. Не оставляйте парольный SSH-доступ, если можно использовать ключи.

ssh root@SERVER_IP
apt update && apt full-upgrade -y
reboot

Команды устанавливают обновления безопасности и перезагружают сервер, если обновилось ядро.

ssh root@SERVER_IP
adduser deploy
usermod -aG sudo deploy

Создаётся отдельный пользователь deploy с правом выполнять административные команды через sudo.

mkdir -p /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
nano /home/deploy/.ssh/authorized_keys
chmod 600 /home/deploy/.ssh/authorized_keys
chown -R deploy:deploy /home/deploy/.ssh

Добавьте в файл публичный SSH-ключ с вашего компьютера. Не закрывайте текущую root-сессию до проверки входа под новым пользователем.

ssh deploy@SERVER_IP
sudo -v
exit

Эта проверка подтверждает, что вход по ключу и sudo работают до отключения root-входа.

sudo apt install -y curl wget jq ca-certificates gnupg lsb-release \
unzip ufw fail2ban openssl dnsutils mtr-tiny cron

Устанавливаются утилиты для загрузки релизов, проверки DNS/TLS, firewall, защиты SSH и планировщика задач.

sudo nano /etc/ssh/sshd_config.d/10-hardening.conf

Создайте отдельный файл с параметрами SSH, чтобы не редактировать основной конфиг дистрибутива.

PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
sudo sshd -t && sudo systemctl restart ssh
sudo systemctl status ssh --no-pager

Сначала проверяется синтаксис SSH-конфига, затем безопасно перезапускается служба.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Firewall запрещает все входящие соединения, кроме SSH и TCP-порта 443 для Xray.

sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Fail2ban отслеживает повторяющиеся неудачные попытки SSH-входа и временно блокирует источники перебора.

Важно: если SSH работает на нестандартном порту, откройте его в UFW до команды ufw enable. Проверьте также cloud firewall в панели провайдера: он может существовать отдельно от UFW.

Установка ПО — пошагово

Схема: Установка ПО — пошагово
Схема: Установка ПО — пошагово

Xray-core активно развивается, поэтому фиксировать номер версии в статье рискованно: к моменту установки он может устареть. Безопаснее получать номер последнего стабильного релиза из официального репозитория проекта и сохранять его в системном файле. Перед обновлением всегда читайте changelog релиза, особенно при изменениях формата конфигурации.

sudo install -d -m 0755 /etc/xray /var/log/xray /usr/local/lib/xray
sudo chown -R nobody:nogroup /var/log/xray

Создаются каталоги для конфигурации, логов и дополнительных файлов Xray.

XRAY_VERSION=$(curl -fsSL https://api.github.com/repos/XTLS/Xray-core/releases/latest | jq -r .tag_name)
echo "$XRAY_VERSION"

Команда получает тег последнего официального стабильного релиза Xray-core через GitHub API.

ARCH=$(dpkg --print-architecture)
case "$ARCH" in
  amd64) XRAY_ARCH="64" ;;
  arm64) XRAY_ARCH="arm64-v8a" ;;
  ) echo "Неподдерживаемая архитектура: $ARCH"; exit 1 ;;
esac
echo "$XRAY_ARCH"

Определяется архив Xray для x86_64 или ARM64-сервера.

cd /tmp
curl -fL -o xray.zip "https://github.com/XTLS/Xray-core/releases/download/${XRAY_VERSION}/Xray-linux-${XRAY_ARCH}.zip"
unzip -o xray.zip -d xray-release
sudo install -m 0755 xray-release/xray /usr/local/bin/xray
sudo install -m 0644 xray-release/geoip.dat xray-release/geosite.dat /usr/local/share/
xray version

Скачивается официальный архив, устанавливается бинарный файл Xray и проверяется его версия.

sudo useradd --system --no-create-home --shell /usr/sbin/nologin xray || true
sudo chown -R xray:xray /etc/xray
sudo chmod 750 /etc/xray

Создаётся системный непривилегированный пользователь, от имени которого будет работать служба.

sudo /usr/local/bin/xray x25519

Генерируется приватный и публичный ключ X25519 для Reality. Сохраните оба значения в защищённом менеджере секретов; приватный ключ никогда не передавайте клиентам.

openssl rand -hex 8

Генерируется short ID из 16 шестнадцатеричных символов. Для нескольких пользователей можно создать несколько разных short ID.

uuidgen

Генерируется UUID для одного VLESS-пользователя. Для каждого человека или устройства лучше создавать отдельный UUID.

sudo tee /etc/systemd/system/xray.service > /dev/null <<'EOF'
[Unit]
Description=Xray Service
Documentation=https://github.com/XTLS/Xray-core
After=network-online.target nss-lookup.target
Wants=network-online.target

[Service]
Type=simple
User=xray
Group=xray
EnvironmentFile=/etc/xray/reality.env
ExecStartPre=/usr/bin/envsubst < /etc/xray/config.json.template > /run/xray-config.json
ExecStart=/usr/local/bin/xray run -config /run/xray-config.json
Restart=on-failure
RestartSec=5
LimitNOFILE=1048576
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=true
ReadWritePaths=/run /var/log/xray

[Install]
WantedBy=multi-user.target
EOF

Создаётся systemd-служба: она собирает итоговый JSON из шаблона и переменных окружения перед стартом Xray.

sudo apt install -y gettext-base
sudo systemctl daemon-reload

Пакет gettext-base добавляет утилиту envsubst, используемую для безопасной подстановки секретов из отдельного файла.

Конфигурация

Схема: Конфигурация
Схема: Конфигурация

Сначала выберите и проверьте SNI-домен. Ниже в примерах применяется нейтральное имя www.example.net; не копируйте его буквально. Подставьте реальный публичный HTTPS-домен, который проходит все проверки из этого раздела.

Методика проверки кандидата SNI

Проверяйте домен с самого VPS и хотя бы из одной реальной клиентской сети: домашней, мобильной или корпоративной, где будет использоваться соединение. Проверка только с сервера недостаточна: домен может открываться из дата-центра, но быть недоступным у клиента.

DOMAIN="www.example.net"
dig +short A "$DOMAIN"
dig +short AAAA "$DOMAIN"

Проверяются DNS-записи. Для базового сценария достаточно корректной A-записи; AAAA полезна, но не обязательна.

DOMAIN="www.example.net"
timeout 12 openssl s_client -connect "${DOMAIN}:443" -servername "$DOMAIN" \
-tls1_3 -brief < /dev/null

Команда проверяет, доступен ли TLS 1.3 при передаче именно этого SNI. В выводе ожидаются успешное соединение, TLSv1.3 и отсутствие ошибок проверки сертификата.

DOMAIN="www.example.net"
curl -4 -I --connect-timeout 8 --max-time 15 "https://${DOMAIN}/"

Проверяется HTTP-ответ по IPv4. Коды 200, 301, 302, 403 или 404 сами по себе не означают проблему: важнее успешное TLS-подключение и стабильный ответ.

DOMAIN="www.example.net"
curl -sS -o /dev/null -w 'HTTP=%{http_code} TLS=%{ssl_version} ALPN=%{http_version} IP=%{remote_ip}\n' \
--connect-timeout 8 --max-time 15 "https://${DOMAIN}/"

Выводит краткую сводку: код HTTP, версию TLS, согласованный HTTP-протокол и адрес, к которому подключился клиент.

DOMAIN="www.example.net"
for i in 1 2 3 4 5; do
  date -Is
  curl -sS -o /dev/null -w 'connect=%{time_connect}s tls=%{time_appconnect}s http=%{http_code}\n' \
  --connect-timeout 8 --max-time 15 "https://${DOMAIN}/"
  sleep 3
done

Пять повторов помогают заметить нестабильность. Если соединение регулярно зависает, меняет ошибки или занимает десятки секунд, кандидат лучше исключить.

Проверка Хороший результат Причина исключить домен
DNS Есть стабильная A-запись NXDOMAIN, частые ошибки, только проблемный IPv6
TLS TLS 1.3, корректный сертификат Ошибка сертификата, TLS 1.2-only, reset
Доступность Работает с VPS и из сети клиента Недоступен в целевой сети
Стабильность Повторные запросы проходят быстро Периодические тайм-ауты, 525/526, handshake failure
Репутационный риск Обычный публичный веб-ресурс Финансы, госуслуги, критическая инфраструктура

Файл секретов

В конфигурации не храните UUID, private key и short ID в открытом виде. Создайте отдельный файл окружения, доступный только root и пользователю службы через запуск systemd.

sudo nano /etc/xray/reality.env
sudo chmod 600 /etc/xray/reality.env
sudo chown root:root /etc/xray/reality.env

Файл создаётся с правами, запрещающими чтение обычным пользователям.

VLESS_UUID=11111111-2222-3333-4444-555555555555
REALITY_PRIVATE_KEY=REPLACE_WITH_PRIVATE_KEY
REALITY_SHORT_ID=REPLACE_WITH_16_HEX_CHARS
SNI_DOMAIN=www.example.net
DESTINATION=www.example.net:443
LISTEN_PORT=443

Замените значения на сгенерированные ранее. В SNI_DOMAIN указывается только имя без https://, пути и порта. В DESTINATION указывается имя и порт HTTPS-сервиса.

Шаблон Xray-конфигурации

sudo nano /etc/xray/config.json.template

Откройте шаблон конфигурации и вставьте следующий минимальный рабочий вариант.

{
  "log": {
    "loglevel": "warning",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
  },
  "inbounds": [
    {
      "tag": "vless-reality-in",
      "listen": "0.0.0.0",
      "port": ${LISTEN_PORT},
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "${VLESS_UUID}",
            "email": "owner"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "${DESTINATION}",
          "xver": 0,
          "serverNames": [
            "${SNI_DOMAIN}"
          ],
          "privateKey": "${REALITY_PRIVATE_KEY}",
          "shortIds": [
            "${REALITY_SHORT_ID}"
          ]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ]
}

Проверьте права и валидность итогового файла до старта. Команда envsubst подставит значения из файла окружения во временную конфигурацию.

sudo chown root:xray /etc/xray/config.json.template
sudo chmod 640 /etc/xray/config.json.template
sudo bash -c 'set -a; . /etc/xray/reality.env; set +a; envsubst < /etc/xray/config.json.template > /tmp/xray-test.json'
sudo /usr/local/bin/xray run -test -config /tmp/xray-test.json
sudo rm -f /tmp/xray-test.json

Если проверка завершилась без ошибки, JSON и параметры Xray корректны.

sudo systemctl enable --now xray
sudo systemctl status xray --no-pager
sudo ss -lntp | grep ':443'

Служба включается в автозагрузку, запускается и проверяется наличие слушающего TCP-порта 443.

Параметры клиента

В совместимом клиенте Xray, v2rayN, Nekoray, Hiddify или другом клиенте с поддержкой Reality создайте профиль вручную. Не передавайте URI с UUID и public key в публичных чатах: такой профиль является учётными данными доступа.

Поле клиента Значение
Protocol VLESS
Address IP-адрес VPS или ваш собственный DNS-адрес
Port 443
UUID Значение VLESS_UUID
Transport TCP
Security Reality
SNI / Server Name Значение SNI_DOMAIN
Public Key Публичный ключ из команды xray x25519
Short ID Значение REALITY_SHORT_ID
Fingerprint chrome

Нужны ли Caddy, certbot и HTTPS-сертификат

Для входящего VLESS Reality на порту 443 Caddy и certbot не нужны. Reality не использует ваш сертификат и не требует домена, направленного на VPS. Попытка запустить Caddy на том же IP и TCP-порту 443 вызовет конфликт: только один процесс может слушать этот порт.

Если на сервере нужен защищённый административный интерфейс, разместите его на отдельном IP, отдельном порту за VPN либо на другом VPS. Не открывайте панели управления Xray, веб-интерфейсы и API без аутентификации в интернет. Для диагностики работы самого сервиса достаточно systemd и логов.

sudo journalctl -u xray -n 100 --no-pager
sudo tail -n 50 /var/log/xray/error.log
sudo tail -n 20 /var/log/xray/access.log

Эти команды проверяют запуск службы, ошибки конфигурации и последние обращения к Xray.

Бэкапы и обслуживание

Для VLESS Reality не нужно резервировать большой объём пользовательских данных, но потеря приватного ключа, UUID или конфигурации усложняет восстановление. Бэкап должен быть зашифрованным и находиться вне основного VPS. Снимок на том же сервере не защищает от удаления сервера, взлома аккаунта провайдера или ошибки диска.

Что включать в резервную копию

  • /etc/xray/reality.env — UUID, private key, short ID, SNI и порт;
  • /etc/xray/config.json.template — шаблон конфигурации;
  • /etc/systemd/system/xray.service — unit-файл;
  • /etc/ufw/ — при необходимости правила firewall;
  • /etc/fail2ban/ — локальные настройки защиты SSH;
  • список пользователей и соответствующих UUID в отдельном зашифрованном хранилище;
  • необязательные логи за ограниченный срок, если они нужны для диагностики.

Не сохраняйте access-логи бессрочно. Они могут содержать служебные метаданные подключений и быстро занимают место. Для личного сервера обычно достаточно ротации логов и хранения 7–14 дней.

sudo tee /etc/logrotate.d/xray > /dev/null <<'EOF'
/var/log/xray/.log {
    daily
    rotate 14
    compress
    missingok
    notifempty
    create 0640 xray xray
}
EOF
sudo logrotate -d /etc/logrotate.d/xray

Настраивается ежедневная ротация логов с хранением 14 архивов. Ключ -d выполняет тест без фактического изменения файлов.

Автобэкап через restic

Restic создаёт зашифрованные дедуплицированные резервные копии. Репозиторий можно разместить в S3-совместимом хранилище, на отдельном VPS через SFTP или в другом изолированном хранилище. Ниже пример для S3-совместимого endpoint; реальные секреты храните в root-доступном файле.

sudo apt install -y restic
sudo install -d -m 0700 /root/.config/restic
sudo nano /root/.config/restic/env

Устанавливается restic и создаётся закрытый каталог для параметров резервного хранилища.

export RESTIC_REPOSITORY="s3:https://s3.example-storage.net/xray-backup"
export RESTIC_PASSWORD="REPLACE_WITH_LONG_UNIQUE_PASSWORD"
export AWS_ACCESS_KEY_ID="REPLACE_WITH_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="REPLACE_WITH_SECRET_KEY"
sudo chmod 600 /root/.config/restic/env
sudo bash -c 'source /root/.config/restic/env && restic init'

Устанавливаются строгие права на секреты и инициализируется зашифрованный репозиторий restic.

sudo tee /usr/local/sbin/backup-xray.sh > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
source /root/.config/restic/env

restic backup \
  /etc/xray \
  /etc/systemd/system/xray.service \
  /etc/ufw \
  /etc/fail2ban \
  --tag xray --tag "$(hostname -s)"

restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
EOF
sudo chmod 700 /usr/local/sbin/backup-xray.sh

Скрипт создаёт резервную копию, удаляет старые точки по политике хранения и проверяет целостность репозитория.

sudo /usr/local/sbin/backup-xray.sh
sudo crontab -e

Сначала выполните резервное копирование вручную. После успешного завершения добавьте ежедневный запуск в root-crontab.

20 03   * /usr/local/sbin/backup-xray.sh >> /var/log/backup-xray.log 2>&1

Обновления и окно обслуживания

Обновления Xray-core лучше выполнять в короткое maintenance window. Для одного сервера это означает перерыв в несколько секунд или минут: скачайте релиз, проверьте конфиг, перезапустите сервис и подключитесь тестовым клиентом. Не обновляйте сервер, если у вас нет рабочей копии конфигурации и аварийного доступа через консоль.

sudo systemctl stop xray
sudo cp /usr/local/bin/xray /usr/local/bin/xray.previous
sudo systemctl start xray
sudo systemctl is-active xray
sudo journalctl -u xray -n 30 --no-pager

Перед заменой бинарного файла сохраняйте предыдущую версию. При ошибке можно вернуть её и перезапустить службу.

Для двух серверов используйте rolling-подход: обновите первый узел, проверьте подключение, затем обновите второй. Клиенты должны иметь два отдельных профиля или механизм переключения, чтобы обслуживание одного сервера не лишало вас доступа полностью.

Troubleshooting + FAQ

Почему клиент показывает «TLS handshake failed» или «reality verification failed»?

Сначала сравните параметры клиента и сервера: SNI, public key, short ID, UUID, порт и тип транспорта должны совпадать. Частая ошибка — вставить в клиент private key вместо public key или указать SNI с префиксом https://. На сервере проверьте journalctl -u xray -n 100 и убедитесь, что служба использует актуальный файл /etc/xray/reality.env. После изменения переменных всегда выполняйте sudo systemctl restart xray.

Как понять, что выбранный SNI-домен плохой?

Плохой кандидат нестабилен при повторных TLS-проверках, не поддерживает TLS 1.3, периодически выдаёт reset или недоступен из сети клиента. Проверьте его через openssl s_client и curl с VPS, затем повторите тест из мобильной и домашней сети. Не оценивайте домен по одной успешной попытке: сделайте минимум пять-десять запросов в разное время. Если есть регулярные тайм-ауты, выберите другой технически стабильный HTTPS-хост.

Почему порт 443 не слушается после запуска Xray?

Скорее всего, порт уже занят другим процессом: Caddy, nginx, Apache, Docker-контейнером или старой копией Xray. Выполните sudo ss -lntp | grep ':443', чтобы увидеть владельца сокета. Остановите конфликтующую службу либо перенесите её на другой IP-адрес или порт. Затем проверьте JSON командой xray run -test -config и перезапустите Xray. Не пытайтесь одновременно запускать два TLS-сервиса на одном IP:443 без продуманной архитектуры.

Подключение работает по Wi-Fi, но не работает через мобильную сеть. Что делать?

Сравните DNS-разрешение, доступность IP VPS и TLS-проверку из обеих сетей. Проблема может быть в маршруте оператора, IPv6, локальном фильтре сети или в том, что выбранный SNI недоступен именно там. Убедитесь, что клиент подключается к IPv4, если IPv6 нестабилен. Не меняйте сразу все параметры: сначала проверьте доступность TCP 443 до VPS, затем настройки профиля, после этого протестируйте другой заранее проверенный SNI на отдельном серверном профиле.

Какой VPS-конфиг минимально подойдёт?

Для одного владельца и нескольких устройств минимально достаточно 1 vCPU, 1 ГБ RAM, 10 ГБ SSD или NVMe, выделенного IPv4 и канала от 100 Мбит/с. Однако более комфортный старт — 2 vCPU, 2 ГБ RAM и 20 ГБ NVMe: останется запас для обновлений, логов, fail2ban и restic. Важнее характеристик CPU качество сети, доступный месячный трафик, стабильный IPv4 и возможность восстановить сервер через консоль.

Что выбрать — VPS или dedicated для этой задачи?

Для личного VLESS Reality и небольшой команды выбирайте VPS: он дешевле, проще масштабируется и обычно полностью покрывает потребность в CPU и памяти. Dedicated имеет смысл при устойчивом высоком трафике, десятках или сотнях одновременных пользователей, строгой потребности в изоляции ресурсов либо размещении дополнительных тяжёлых сервисов. Не переходите на выделенный сервер для исправления ошибок конфигурации: сначала исключите проблемы SNI, firewall, маршрута и клиентских параметров.

Нужно ли выпускать сертификат Let’s Encrypt или настраивать Caddy?

Нет, для VLESS Reality сертификат Let’s Encrypt не нужен и не участвует в авторизации клиента. Сервер Reality использует private key X25519, а клиент — соответствующий public key, SNI и short ID. Caddy или certbot нужны только если вы отдельно размещаете обычный HTTPS-сайт или защищённую веб-панель. Не ставьте Caddy на тот же TCP-порт 443 того же IP, где уже запущен Xray, иначе получите ошибку занятости порта.

Как безопасно добавить второго пользователя?

Создайте для него отдельный UUID и, желательно, отдельный short ID. Добавьте новую запись в массив clients и при необходимости новый элемент в shortIds, затем проверьте итоговый JSON и перезапустите Xray. Не выдавайте двум людям один общий UUID: при проблеме вы не сможете отозвать доступ только одного пользователя. Ведите зашифрованный список соответствий «пользователь — UUID — дата выдачи» вне VPS.

Как быстро отозвать скомпрометированный профиль?

Удалите соответствующий UUID из массива clients, пересоберите конфигурацию и перезапустите службу. Если есть риск утечки не только UUID, но и полного URI с short ID и public key, смените short ID. При подозрении на утечку private key создайте новую пару X25519, замените private key на сервере и обновите public key у всех доверенных клиентов. После изменений проверьте журналы и резервные копии конфигурации.

Выводы и следующие шаги

Схема: Выводы и следующие шаги
Схема: Выводы и следующие шаги

Теперь у вас есть базовая схема VLESS Reality на защищённом VPS и понятный процесс выбора SNI: домен проверяется по DNS, TLS 1.3, сертификату, стабильности и доступности из реальных клиентских сетей. Главное правило — не искать «магический» популярный домен, а использовать технически предсказуемый публичный HTTPS-хост и регулярно тестировать его доступность.

  1. Добавьте второй независимый сервер в другой локации и подготовьте резервный клиентский профиль.
  2. Создавайте отдельные UUID для устройств и пользователей, периодически отзывайте неиспользуемые учётные данные.
  3. Раз в месяц проверяйте обновления Xray-core, состояние firewall, успешность restic-бэкапов и журналы ошибок.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

выбор sni для vless reality: как проверить домен и не попасть под блок
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.