Перенос конфигурации Xray в sing-box: какие поля нельзя копировать напрямую
Разбираем перенос профиля Xray в sing-box: какие значения сохраняются, какие поля нужно сопоставить и почему простой импорт JSON часто ломает подключение.
Содержание
Почему прямое копирование не работает
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 требуют сопоставления
В 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 и серверные логи.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ