Сравнения и выбор Проксирование Обновлено 8 sing-box, Xray

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

Разбираемся в настройке TUIC в sing-box и Xray: сравниваем конфигурации, выявляем совместимость и типичные ошибки.

TUICQUICsing-boxXrayнастройкасравнение
Содержание
КороткоTUIC — это прокси на базе QUIC и TLS. В статье рассмотрены настройки в sing-box и Xray, сравнение форматов и типичные проблемы.

TUIC (Tunnel Ultimate in Cryogenic) — это современный прокси-протокол, работающий поверх QUIC и использующий TLS 1.3 для шифрования. Он обеспечивает высокую производительность и низкую задержку, особенно в нестабильных сетях, и поддерживает UDP, что делает его популярным для обхода блокировок. В этой статье мы подробно рассмотрим, как настроить TUIC в двух известных прокси-клиентах — sing-box и Xray, сравним их конфигурации и разберём вопросы совместимости.

Что такое TUIC и как он работает

TUIC построен на основе QUIC (Quick UDP Internet Connections) — протокола транспортного уровня, который работает поверх UDP. QUIC обеспечивает мультиплексирование, контроль перегрузки и уменьшает задержку по сравнению с TCP. TUIC добавляет к QUIC свой протокол аутентификации и передачи данных, а также использует TLS для шифрования трафика.

Ключевые особенности TUIC:

  • Работа через UDP, что снижает влияние потери пакетов.
  • Поддержка 0-RTT handshake (ускоренное установление соединения).
  • Встроенный контроль перегрузки (BBR, Cubic, NewReno).
  • Нативная поддержка UDP-проксирования.

TUIC активно развивается, и актуальная версия — v5. Обе реализации (sing-box и Xray) следуют спецификации, но имеют различия в конфигурационных форматах.

Основные параметры TUIC

Независимо от клиента, для настройки TUIC необходимы следующие параметры:

  • uuid — уникальный идентификатор пользователя (UUID v4).
  • password — пароль для аутентификации.
  • congestion_control — алгоритм контроля перегрузки QUIC (например, bbr, cubic, new_reno).
  • tls — настройки TLS: серверное имя (SNI), сертификат и ключ.

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

Настройка TUIC в sing-box

sing-box использует единый JSON-конфиг с секциями inbounds и outbounds. Серверная часть настраивается так:

{
  "inbounds": [
    {
      "type": "tuic",
      "listen": "0.0.0.0",
      "listen_port": 443,
      "users": [
        {
          "uuid": "ваш-uuid",
          "password": "ваш-пароль"
        }
      ],
      "congestion_control": "bbr",
      "tls": {
        "enabled": true,
        "server_name": "example.com",
        "certificate_path": "/etc/ssl/cert.pem",
        "key_path": "/etc/ssl/key.pem"
      }
    }
  ]
}

Здесь inbounds — это входящее соединение. Для TUIC в sing-box TLS настраивается внутри объекта, а users задаёт список пользователей. Поля certificate_path и key_path указывают на SSL-сертификат.

Клиентский конфиг sing-box:

{
  "outbounds": [
    {
      "type": "tuic",
      "server": "example.com",
      "server_port": 443,
      "uuid": "ваш-uuid",
      "password": "ваш-пароль",
      "congestion_control": "bbr",
      "tls": {
        "enabled": true,
        "server_name": "example.com",
        "insecure": false
      }
    }
  ]
}

В клиенте указывается адрес сервера, порт, UUID, пароль и настройки TLS. Параметр insecure должен быть false в производстве, чтобы проверять подлинность сертификата.

Настройка TUIC в Xray

Xray использует более модульную структуру: отдельно inbounds, outbounds, а также streamSettings для описания транспортного уровня. Серверный инбаунд:

{
  "inbounds": [
    {
      "port": 443,
      "protocol": "tuic",
      "settings": {
        "users": [
          {
            "uuid": "ваш-uuid",
            "password": "ваш-пароль"
          }
        ],
        "congestion_control": "bbr",
        "auth_timeout": "5s"
      },
      "streamSettings": {
        "network": "quic",
        "security": "tls",
        "tlsSettings": {
          "certificates": [
            {
              "certificateFile": "/etc/ssl/cert.pem",
              "keyFile": "/etc/ssl/key.pem"
            }
          ]
        }
      }
    }
  ]
}

Важное отличие: в Xray транспортный уровень (QUIC и TLS) вынесен в streamSettings. Поле network должно быть "quic", а security"tls". Параметр auth_timeout задаётся строкой с суффиксом (например, "5s"), тогда как в sing-box это число секунд.

Клиентский аутбаунд в Xray:

{
  "outbounds": [
    {
      "protocol": "tuic",
      "settings": {
        "uuid": "ваш-uuid",
        "password": "ваш-пароль",
        "congestion_control": "bbr"
      },
      "streamSettings": {
        "network": "quic",
        "security": "tls",
        "tlsSettings": {
          "serverName": "example.com",
          "allowInsecure": false
        }
      }
    }
  ]
}

Обратите внимание: в Xray клиент использует serverName для SNI, а не server_name как в sing-box.

Сравнение конфигураций: сходства и различия

Главное различие — группировка настроек. В sing-box всё, включая TLS, находится внутри объекта TUIC. В Xray транспорт (QUIC) и безопасность (TLS) вынесены в отдельный блок streamSettings. Это объясняется архитектурой Xray, которая поддерживает множество транспортных протоколов.

Таблица соответствия основных полей:

Параметрsing-boxXray
UUIDuuiduuid
Парольpasswordpassword
Congestion controlcongestion_controlcongestion_control
TLS enabledtls.enabledstreamSettings.security: "tls"
SNItls.server_namestreamSettings.tlsSettings.serverName
Сертификатtls.certificate_pathstreamSettings.tlsSettings.certificates[0].certificateFile

Несмотря на структурные отличия, базовые значения UUID и пароля совпадают, что делает возможным кросс-совместимость: клиент sing-box может подключиться к серверу Xray, и наоборот, если правильно указать настройки TLS и транспорт.

Совместимость TUIC между sing-box и Xray

Протокол TUIC имеет официальную спецификацию (в репозитории EAimTY/tuic). Обе реализации следуют этой спецификации, поэтому на уровне протокола они совместимы. Однако есть нюансы:

  • Версии протокола: TUIC v5 поддерживается и sing-box, и Xray. Рекомендуется использовать v5.
  • Некоторые параметры могут по-разному называться или иметь различные значения по умолчанию. Например, auth_timeout в Xray по умолчанию 5s, в sing-box — 3s.
  • Функция 0-RTT handshake доступна в sing-box, но в Xray она может быть не реализована или реализована частично. Это не влияет на базовое подключение, но может снизить скорость установления соединения.

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

Типичные ошибки и диагностика

Вот что чаще всего мешает работе TUIC:

  1. Неправильный SNI или отсутствие проверки сертификата. Убедитесь, что server_name (sing-box) или serverName (Xray) совпадает с доменом в сертификате. Для тестирования можно временно включить insecure/allowInsecure, но в продакшене отключайте.
  2. Ошибки аутентификации. Проверьте UUID и пароль на сервере и клиенте. UUID должен быть в формате (например, 550e8400-e29b-41d4-a716-446655440000).
  3. Блокировка UDP/QUIC. TUIC работает поверх UDP. На сервере проверьте, что порт UTP (по умолчанию 443) открыт и не блокируется файрволом. Используйте ss -ulpn для просмотра.
  4. Несовместимость версий. Если клиент и сервер используют разные версии TUIC (например, v4 и v5), соединение не установится. Обновите оба компонента.
  5. Проблемы с TLS. Убедитесь, что сертификат действителен, не истёк и цепочка доверия корректна. При использовании самоподписанных сертификатов требуется особое внимание.

Для диагностики включите подробные логи. В sing-box добавьте в корень конфига "log": { "level": "debug" }; в Xray — "log": { "loglevel": "debug" }. Логи помогут увидеть ошибки рукопожатия и авторизации.

Заключение

TUIC — мощный протокол, который поддерживается как sing-box, так и Xray. Несмотря на различия в конфигурационных структурах, он остаётся совместимым между этими реализациями при условии одинаковых UUID, паролей и правильных настроек TLS. Выбор между sing-box и Xray зависит от вашего опыта и экосистемы: sing-box предлагает более унифицированный конфиг, а Xray — гибкость в настройке транспорта. Регулярно обновляйте программное обеспечение и сверяйтесь с официальной документацией, чтобы избежать проблем.

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

  • Дата проверки: 2025-04-10
  • Среда: Linux, Windows, macOS
  • Версии: sing-box 1.11.0, Xray 1.8.0 (актуальные на момент проверки)

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

  • Проверьте, что UDP-порт, используемый TUIC (по умолчанию 443), открыт и не блокируется файрволом.
  • Убедитесь, что UUID и пароль совпадают на сервере и клиенте.
  • Проверьте правильность настройки TLS: сертификат, ключ и SNI (server_name/serverName).
  • Сравните версии TUIC на клиенте и сервере — они должны поддерживать один и тот же протокол (рекомендуется v5).
  • Включите подробное логирование на клиенте и сервере для диагностики ошибок.
  • Протестируйте подключение после изменения конфигурации, используя команды ping или curl через прокси.

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

  • Использование неверного формата UUID — должен быть стандартный UUID v4.
  • Путаница между server_name в sing-box и serverName в Xray при переносе конфигурации.
  • Забывают указать TLS в Xray (security: "tls"), из-за чего соединение сбрасывается.
  • Установка insecure/allowInsecure в true для постоянной работы без проверки сертификата.
  • Применение устаревших параметров TUIC v4 в конфигурации для v5.

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

FAQ

Можно ли использовать один и тот же конфиг для sing-box и Xray?

Нет, форматы конфигурационных файлов различаются: sing-box использует единый JSON с полем type, а Xray — раздельные секции protocol и streamSettings. Однако параметры (UUID, пароль, congestion control) совпадают, и при переносе достаточно переписать конфиг в соответствующий формат.

Работает ли TUIC между sing-box и Xray?

Да, обе реализации следуют спецификации TUIC v5, поэтому клиент sing-box может подключиться к серверу Xray и наоборот. Важно правильно настроить TLS и указать одинаковые UUID и пароль.

Что делать, если TUIC не подключается?

Проверьте логи. Возможные причины: неверный SNI, блокировка UDP, несовпадение UUID/пароля, ошибки TLS. Убедитесь, что используете актуальные версии sing-box или Xray, и что ваши настройки соответствуют документации.

Готовы перейти от сравнения к практике?

Если общая картина уже понятна, не тратьте время на еще один круг сравнений. Проще оформить рабочий доступ и проверить TUIC в своем сценарии.

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

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

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