Быстрый старт Миграция Обновлено 8 мин Android, Windows, Linux, macOS

Перенос конфигурации Xray в sing-box: какие поля нельзя копировать напрямую

Разбираем перенос профиля Xray в sing-box: какие значения сохраняются, какие поля нужно сопоставить и почему простой импорт JSON часто ломает подключение.

Xraysing-boxJSONмиграция
Схема переноса полей конфигурации Xray в sing-box
Переносите значения по смыслу: сначала outbound, затем TLS, DNS и route.
Содержание
КороткоНе копируйте JSON Xray целиком: перенесите значения по смыслу и отдельно проверьте outbound, TLS/REALITY, DNS и route.

Почему прямое копирование не работает

Xray и sing-box могут использовать один и тот же протокол, но это не делает их конфигурации взаимозаменяемыми. У ядер отличаются названия полей, вложенность объектов, значения transport и правила маршрутизации. Поэтому импорт исходного JSON целиком часто заканчивается ошибкой разбора или профилем, который формально запустился, но не передаёт трафик.

Надёжный подход — считать конфигурацию Xray источником значений, а не готовым файлом для sing-box. Сначала выпишите сервер, порт, идентификатор, transport и параметры TLS. Затем соберите минимальный outbound sing-box и добавляйте остальные блоки по одному.

Что переносится почти без изменений

Адрес сервера, порт и UUID обычно сохраняют смысл. Для VLESS это поля server, server_port и uuid в outbound sing-box. Если исходный профиль использует flow, его добавляют только при поддержке конкретной связки клиента, сервера и transport. Нельзя переносить пустые значения и служебные ключи интерфейса как будто они являются параметрами подключения.

  • Сверьте hostname без пробелов и лишнего протокола.
  • Проверьте, что порт записан числом и доступен из вашей сети.
  • Сравните UUID посимвольно, не меняя регистр и дефисы.

VLESS, TLS и REALITY требуют сопоставления

Сопоставление полей VLESS и REALITY между Xray и sing-box
SNI, public key и transport требуют отдельной проверки после миграции.

В Xray параметры TLS и REALITY обычно находятся внутри streamSettings, а в sing-box — в объекте tls у outbound. Значение serverName становится server_name. Public key REALITY переносится как public_key, short id — как short_id, а отпечаток клиента — как fingerprint. Нельзя переносить названия из одного JSON в другой механически: проверьте структуру текущей версии sing-box.

Address сервера и SNI — разные вещи. Первый указывает, куда устанавливается соединение, второй участвует в TLS-рукопожатии. Если заменить их одним значением без понимания схемы, соединение может завершаться timeout или handshake failed.

Transport нельзя собирать по памяти

TCP, WebSocket, gRPC и HTTP/2 требуют разных объектов transport. Путь WebSocket, host-заголовок, service_name для gRPC и параметры multiplex не являются универсальными. Перенесите только тот транспорт, который реально используется на сервере, и проверьте обязательные поля в документации sing-box.

Для первого запуска полезно отключить необязательные оптимизации и оставить один outbound. Когда базовое соединение работает, добавляйте multiplex, балансировщик и дополнительные правила. Так ошибка будет привязана к одному изменению, а не к десятку полей.

DNS и route переносятся отдельно

Правила routing Xray не превращаются автоматически в route sing-box. Сначала определите, какой outbound должен быть final, затем перенесите исключения локальной сети, доменные правила и правила для DNS. В TUN-сценарии проверьте, что DNS-запросы не попадают в собственный перехватчик по кругу.

  • Начните с final на рабочий proxy outbound.
  • Добавьте bypass для локальных подсетей только после базовой проверки.
  • Проверьте порядок правил: первое совпадение может остановить дальнейший разбор.

Порядок проверки после миграции

Сначала проверьте JSON-синтаксис и запуск core. Затем убедитесь, что клиент видит профиль и может открыть контрольный адрес. Если есть handshake error, смотрите TLS, REALITY, SNI и время на устройстве. Если подключение есть, но сайты не открываются, переходите к DNS, route, TUN и MTU. Не меняйте эти группы одновременно.

Рабочий профиль Xray лучше сохранить отдельно до окончания проверки. Если после миграции новый вариант не подключается, сравните логи двух клиентов в один момент времени: это помогает отделить ошибку конвертации от проблем сети или сервера.

Итог

Перенос Xray в sing-box — это сопоставление параметров, а не простая замена расширения файла. Минимальный outbound, проверенные TLS/REALITY и последовательная настройка DNS и route дают предсказуемый результат. Подписку имеет смысл импортировать как готовый профиль, если серверные параметры регулярно меняются и ручная синхронизация становится источником ошибок.

Проверено на практике

  • Дата проверки: 2026-08-10
  • Среда: sing-box и Xray JSON
  • Версии: поля сверяются с актуальной структурой документации

Мини-чеклист

  • Сохранить рабочую конфигурацию Xray до миграции.
  • Собрать минимальный outbound sing-box и проверить запуск.
  • Отдельно сверить VLESS, transport и TLS/REALITY.
  • Добавлять DNS и route после успешного handshake.
  • Сравнить логи клиента и core при одинаковом времени проверки.

Частые ошибки

  • Копировать streamSettings в sing-box без преобразования.
  • Путать server и server_name.
  • Переносить route и DNS до проверки базового outbound.
  • Менять сразу transport, TUN и маршрутизацию.
  • Удалять исходный рабочий профиль до теста нового.

Источники и документация

FAQ

Можно ли импортировать JSON Xray в sing-box напрямую?

Иногда клиент выполнит частичный импорт, но рассчитывать на это нельзя. Поля нужно сопоставить со структурой sing-box.

Почему VLESS подключается, но интернета нет?

Проверьте final outbound, DNS rules, route и режим TUN. Успешный handshake сам по себе не подтверждает правильную маршрутизацию.

Что проверять при handshake failed?

Сначала адрес, порт, время, SNI, public key, short id и fingerprint, затем transport и серверные логи.

Хотите перейти сразу к рабочему доступу?

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

Получить доступ

Дальше по теме

Связанные статьи