Xray на Windows Server: запуск, права и восстановление

Xray на Windows Server: запуск, права и восстановление

Ryan Foster
11 октября 2026 г.· 10 мин чтения

Xray на Windows Server можно запускать при загрузке через планировщик заданий от отдельной непривилегированной учётной записи. Здесь используется Windows Server 2022 x64 и Xray v26.3.27 для одного соединения VLESS/REALITY с проверками отказа, обновления и удаления. Это инструкции по официальным источникам, а не отчёт о завершённом авторском испытании.

Ключевые выводы

  • Исполняемый файл Xray не становится службой Windows; его непосредственно запускает одно задание.
  • Учётная запись процесса читает программу и конфигурацию, а изменяет только каталог журналов.
  • Разрешайте один TCP-порт и адрес доверенного клиента, сохраняя отдельный путь управления.
  • Прослушиваемый порт и успешная проверка конфигурации ещё не подтверждают аутентифицированный запрос.

Когда стоит обслуживать Xray на Windows Server?

Начните с распределения ответственности и подготовки восстановления. Если нужен только повседневный выход в интернет, сначала сравните обслуживание VPS с управляемым VPN. Здесь рассматривается жизненный цикл процесса Windows, а не установка Linux или разработка протокола.

Материал о ролях ядра Xray и клиентских приложений объясняет, почему установки программы недостаточно для браузера. Разделяйте протокол, транспорт и маскировку: VLESS, RAW, REALITY и настройки прокси приложения решают разные задачи.

Что подготовить до изменения сервера?

Нужны выделенный разрешённый сервер, независимая консоль восстановления и отдельный клиент Windows. Подготовьте собственный либо разрешённый для этой проверки TLS 1.3-узел с действительным сертификатом и соответствующим именем. Если такого узла нет, остановитесь; произвольное имя чужого сайта не заменяет эту предпосылку.

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

Используется TCP 24443. Замените все заглавные заполнители. SERVER_LISTEN_IP — адрес интерфейса сервера, в том числе частный за NAT провайдера; SERVER_ADDRESS — доступный клиенту адрес. TRUSTED_CLIENT_PUBLIC_IP — источник, видимый серверу, а не частный LAN-адрес клиента.

Шаг 1: Установите официальный пакет и задайте права доступа Xray в Windows

В браузере скачайте Xray-windows-64.zip из официального выпуска v26.3.27 с обычной проверкой TLS. Распакуйте в C:\Xray\bin, создайте C:\Xray\config и C:\Xray\logs. Не используйте установщики с зеркал учебных сайтов. Запишите версию; при последующих обновлениях сохраняйте предыдущий доверенный пакет отдельно.[1]

В «Управлении компьютером» создайте стандартного локального пользователя XrayRunner с уникальным паролем, без группы Administrators. Через локальную политику безопасности предоставьте право пакетного входа — “Log on as a batch job”. Доменная политика может его переопределять: сначала определите владельца политики. Пароль храните в используемом оператором менеджере учётных данных, а не в сценарии.

В PowerShell администратора ограничьте новый каталог следующими командами. Для общей существующей установки они не предназначены.

$svc = "$env:COMPUTERNAME\XrayRunner"
icacls C:\Xray /inheritance:r
icacls C:\Xray /grant:r '*S-1-5-18:(OI)(CI)F' '*S-1-5-32-544:(OI)(CI)F' "${svc}:(OI)(CI)RX" /T
icacls C:\Xray\logs /grant:r "${svc}:(OI)(CI)M" /T

SID сохраняют полный доступ SYSTEM и Administrators. Рабочий пользователь читает программу и конфигурацию, изменяет журналы, но не заменяет собственный исполняемый файл или секреты. После выполнения проверьте icacls, включая дополнительные явные разрешения: отключение наследования не удаляет их автоматически. Уберите неподходящие разрешения только на новом дереве.

Шаг 2: Создайте и проверьте одну конфигурацию с аутентификацией

Сначала выполните команды версии, UUID и X25519. Сохраните UUID и приватный ключ в закрытом месте. В этом выпуске публичное значение X25519 для клиента обозначается Password: оно записывается в клиентское realitySettings.password, а не в поле приватного ключа сервера. В менеджере паролей создайте случайный short ID из 16 шестнадцатеричных символов.[2][3]

C:\Xray\bin\xray.exe version
C:\Xray\bin\xray.exe uuid
C:\Xray\bin\xray.exe x25519
C:\Xray\bin\xray.exe run -test -config C:\Xray\config\server.json
C:\Xray\bin\xray.exe run -config C:\Xray\config\server.json

Последние две команды выполняются после сохранения следующего файла как C:\Xray\config\server.json. Оба вхождения OWNED_TLS_NAME замените разрешённым именем TLS-узла. В исходном коде выбранной версии используются clients и network; поля нового онлайн-примера нельзя переносить без проверки установленной версии.

{
  "log": {"error": "C:\\Xray\\logs\\error.log", "loglevel": "warning"},
  "inbounds": [{
    "listen": "SERVER_LISTEN_IP", "port": 24443, "protocol": "vless",
    "settings": {"clients": [{"id": "GENERATED_UUID", "flow": "xtls-rprx-vision"}], "decryption": "none"},
    "streamSettings": {
      "network": "raw", "security": "reality",
      "realitySettings": {
        "show": false, "target": "OWNED_TLS_NAME:443", "xver": 0,
        "serverNames": ["OWNED_TLS_NAME"],
        "privateKey": "GENERATED_PRIVATE_KEY", "shortIds": ["GENERATED_HEX_ID"]
      }
    }
  }],
  "outbounds": [{"protocol": "freedom", "tag": "direct"}]
}

Проверку и запуск на переднем плане выполните от XrayRunner, открыв PowerShell через «Запуск от имени другого пользователя». Успех администратора не доказывает доступ рабочей учётной записи. При ошибке конфигурации, чтения ключа или занятом порте остановитесь. Перед регистрацией задания закройте этот экземпляр.

Шаг 3: Настройте запуск Xray в Windows без интерактивного входа

В PowerShell администратора зарегистрируйте одно задание с непосредственным запуском программы. Укажите рабочий каталог и абсолютный путь конфигурации; не используйте оболочку, отсоединяющую дочерний процесс. Вход задания с сохранённым паролем позволяет запуск без вошедшего пользователя.[4]

$action = New-ScheduledTaskAction -Execute 'C:\Xray\bin\xray.exe' -Argument 'run -config C:\Xray\config\server.json' -WorkingDirectory 'C:\Xray'
$trigger = New-ScheduledTaskTrigger -AtStartup
$settings = New-ScheduledTaskSettingsSet -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) -MultipleInstances IgnoreNew -ExecutionTimeLimit ([TimeSpan]::Zero)
$cred = Get-Credential -UserName "$env:COMPUTERNAME\XrayRunner" -Message 'Task account'
Register-ScheduledTask -TaskName 'Xray-Lab' -Action $action -Trigger $trigger -Settings $settings -User $cred.UserName -Password $cred.GetNetworkCredential().Password -RunLevel Limited
Start-ScheduledTask -TaskName 'Xray-Lab'
Get-ScheduledTaskInfo -TaskName 'Xray-Lab'
Get-NetTCPConnection -State Listen -LocalPort 24443

Задание повторяет запуск с интервалом одна минута не более трёх раз, игнорирует повторный запрос старта и не ограничивает обычное время работы постоянного процесса. Это ограниченная политика восстановления, а не обещание устранить любое зависание. Статус задания и код результата — лишь диагностические признаки; проверьте сам процесс и журнал.

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

Шаг 4: Разрешите одного клиента и подтвердите путь приложения

Оставьте брандмауэр включённым, с блокировкой непрошеных входящих соединений. Сначала найдите широкие разрешения для программы или порта: новое узкое правило не отменяет другие разрешающие правила. Пример рассчитан на обоснованно выбранный профиль Private. Если интерфейс имеет профиль Public, явно используйте фактический профиль вместо переименования сети.[5]

New-NetFirewallRule -Name 'Xray-Lab-TCP' -DisplayName 'Xray Lab TCP' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 24443 -LocalAddress 'SERVER_LISTEN_IP' -RemoteAddress 'TRUSTED_CLIENT_PUBLIC_IP' -Program 'C:\Xray\bin\xray.exe' -Profile Private

Аналогично ограничьте источник и порт в брандмауэре провайдера. Не открывайте RDP всему интернету и не меняйте резервное правило управления. На отдельный клиент скопируйте тот же выпуск Xray, сохраните client.json и замените соответствующие значения. Приватный ключ остаётся на сервере.

{
  "log": {"loglevel": "warning"},
  "inbounds": [{"listen": "127.0.0.1", "port": 1080, "protocol": "socks", "settings": {"auth": "noauth", "udp": false}}],
  "outbounds": [{
    "protocol": "vless",
    "settings": {"vnext": [{"address": "SERVER_ADDRESS", "port": 24443, "users": [{"id": "GENERATED_UUID", "encryption": "none", "flow": "xtls-rprx-vision"}]}]},
    "streamSettings": {
      "network": "raw", "security": "reality",
      "realitySettings": {"serverName": "OWNED_TLS_NAME", "fingerprint": "chrome", "password": "GENERATED_PUBLIC_VALUE", "shortId": "GENERATED_HEX_ID"}
    }
  }]
}

Выполните xray.exe run -test -config client.json, затем xray.exe run -config client.json. В Firefox вручную выберите SOCKS5 127.0.0.1:1080 и передачу DNS через SOCKS5. Проверьте видимый адрес выхода данного запроса, затем нужный разрешённый HTTPS-ресурс. Это свидетельство об одном запросе, не обо всех приложениях, DNS, IPv6 и UDP.

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

Как обрабатывать сбои, обновления и вывод из эксплуатации?

Проверка читателяОжидаемые признакиОстановка или восстановление
Рабочий пользователь не читает конфигурациюЗапуск неудачен, нужного запроса нетИсправить ACL файла, не предоставлять Administrator
Задание запускается дваждыОдин нужный процесс XrayПроверить действие и дубли заданий до открытия доступа
Неожиданный выход процессаНе более трёх повторов через минутуПрочитать ошибку, отключить задание при неустранённом сбое
Перезагрузка без входа пользователяПравильный пользователь, порт и запросВосстановить данные задания или прежнюю конфигурацию
Адрес источника изменилсяСтарое правило больше не пропускает клиентаПодтвердить новый адрес и узко обновить своё правило

Для обновления отключите и остановите задание, убедитесь в исчезновении его процесса и порта. Закрыто сохраните программу, конфигурацию, ACL и экспорт задания. Новый официальный пакет подготовьте отдельно, изучите изменения, проверьте от рабочего пользователя и повторите положительные и отрицательные запросы. При сбое снова остановите процесс и восстановите предыдущую пару программы и конфигурации до открытия доступа.

Журналам нужна политика владельца. Пример для лаборатории: ежедневный просмотр; при 10 MiB отключить и остановить задание, закрыто архивировать error.log, оставить не более семи архивов, запустить заново и проверить запрос. Возникает короткий перерыв: это пример обслуживания, не гарантия встроенной ротации Xray. Быстрый рост журнала следует расследовать, а не скрывать удалением.

Для удаления выполните команды ниже, очистите прокси Firefox, остановите клиент, отзовите правила провайдера и учётные данные соединения. Удаляйте XrayRunner только после проверки, что он не используется другими заданиями. Если порт остался, определите владельца, а не завершайте все процессы Xray.

Disable-ScheduledTask -TaskName 'Xray-Lab'
Stop-ScheduledTask -TaskName 'Xray-Lab'
Remove-NetFirewallRule -Name 'Xray-Lab-TCP'
Get-NetTCPConnection -State Listen -LocalPort 24443 -ErrorAction SilentlyContinue
Unregister-ScheduledTask -TaskName 'Xray-Lab' -Confirm:$true

Итоги

  • Разделяйте владельца установки и непривилегированную учётную запись процесса.
  • Отдельно проверяйте конфигурацию, задание, ограничения источника и аутентифицированный запрос.
  • Храните предыдущую пару пакета и конфигурации и независимый канал управления.
  • До удаления ресурсов остановите своё задание и отзовите доступ.

Часто задаваемые вопросы (FAQ)

Является ли Xray штатной службой Windows?

Обычный исполняемый файл не реализует жизненный цикл службы только потому, что работает в фоне. Здесь используется планировщик заданий без SCM-обёртки.

Зачем нужна отдельная учётная запись?

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

Доказывает ли проверка конфигурации сетевую работу?

Она проверяет загруженную конфигурацию, но не брандмауэр провайдера, сертификат цели, аутентификацию клиента или реальный маршрут приложения.

Почему соединение пропадает только после перезагрузки?

Проверьте сохранённый пароль, право пакетного входа, рабочий каталог и доступность цели. Успех на переднем плане при входе администратора эти условия не подтверждает.

Подходит ли правило клиенту с меняющимся адресом?

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

Что подтверждает неудачная попытка клиента REALITY?

Неверный UUID или запрещённое имя должны мешать нужной прокси-сессии. Это не означает, что TCP-порт обязан отклонять любое рукопожатие.

Можно ли повторить процедуру на другой Windows?

Сначала заново проверьте поддержку пакета, политики пользователя, планировщик и профиль брандмауэра. Базовая система здесь Server 2022, а не испытанная матрица выпусков.

Отказ от ответственности: Используйте только разрешённую инфраструктуру и соблюдайте применимые правила. Инструкция составлена по официальным источникам и не прошла полное авторское испытание на Windows Server.

Источники:

  1. Xray-core v26.3.27
  2. Xray v26.3.27 VLESS configuration
  3. Xray v26.3.27 transport configuration
  4. Microsoft Task Scheduler
  5. Microsoft Windows Firewall

Sources checked 11 октября 2026 г.


Рекомендуемые статьи:

Начните бесплатный 3-дневный пробный период

Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.

*Только для новых пользователей. Один пробный период на пользователя.

Xray на Windows Server: запуск, права и восстановление | AethoVPN