Быстрый старт guide Обновлено 8 Windows, macOS, Linux, Android, iOS

sing-box + Hysteria2 и TUIC: что проверить перед импортом профиля

Перед импортом профиля sing-box с Hysteria2 или TUIC важно убедиться в правильности JSON, TLS-настроек и маршрутизации. Разбираем пошагово.

sing-boxHysteria2TUICимпортпроверкаJSONTLS
Содержание
КороткоПеред импортом профиля Hysteria2/TUIC в sing-box убедитесь, что у вас актуальная версия core, корректные параметры outbound (адрес, порт, UUID/пароль, TLS), а также настроены DNS и routing. Используйте проверку JSON и тестирование конфигурации командой `sing-box check`.

Импорт профиля Hysteria2 или TUIC в sing-box — это не просто копирование строк. Неправильные параметры TLS, опечатки в порту или устаревшая версия ядра могут превратить процесс в головную боль. В этой статье расскажем, что обязательно проверить перед импортом, чтобы подключение работало с первого раза.

1. Основные проверки перед импортом

Перед любым импортом убедитесь, что ваша версия sing-box поддерживает нужные протоколы. Hysteria2 появился в sing-box 1.3.0, TUIC — в 1.2.0, но для стабильной работы лучше использовать актуальную версию не ниже 1.10. Проверить версию можно командой sing-box version.

  • Проверьте, что у вас установлен именно sing-box, а не другое ядро (например, Clash Meta) — конфиги могут не совпадать.
  • Убедитесь, что профиль получен из доверенного источника и не подделан.
  • Если профиль приходит по подписке, сохраните его в отдельный файл и проверьте перед запуском.

2. Проверка JSON-структуры и формата

sing-box использует конфигурационные файлы в формате JSON (или JSONc, с комментариями). Ошибка в JSON — самая частая причина отказа запуска. Используйте команду sing-box check -c config.json для проверки синтаксиса и логических ошибок. Эта команда покажет все проблемы в конфигурации, включая неизвестные поля или неправильные типы данных.

Также обратите внимание, что sing-box не принимает «сырые» ссылки (URI) — их нужно преобразовать в JSON. Если вы используете сторонний конвертер, проверьте, что он генерирует корректный формат, соответствующий документации sing-box. В конфигурации не должно быть лишних полей, которые не поддерживаются ядром (например, поля для Clash).

При импорте outbound-профиля (часть полной конфигурации) не забудьте добавить обязательный тег tag для этого outbound — без него sing-box не сможет на него ссылаться в route.

3. Ключевые поля outbound для Hysteria2 и TUIC

Давайте разберём, какие именно поля должны быть в outbound для Hysteria2 и TUIC. Это критично, потому что даже одно неверное значение может полностью сломать подключение.

Hysteria2 outbound

{
  "type": "hysteria2",
  "tag": "hy2",
  "server": "example.com",
  "server_port": 443,
  "password": "your-password",
  "tls": {
    "enabled": true,
    "server_name": "example.com",
    "insecure": false,
    "alpn": ["h3"]
  }
}
  • server — адрес сервера (домен или IP).
  • server_port — порт, обязательно число (не строка).
  • password — пароль, который задан на сервере. Внимание: в Hysteria2 используется именно пароль, а не UUID.
  • tls.server_name — SNI, обычно совпадает с доменом сервера. Если сервер на IP, то можно указать IP или отключить проверку (insecure: true), но это небезопасно.
  • tls.insecure — по умолчанию false, рекомендуется менять только для тестов.

TUIC outbound

{
  "type": "tuic",
  "tag": "tuic",
  "server": "example.com",
  "server_port": 443,
  "uuid": "uuid-here",
  "password": "optional-password",
  "tls": {
    "enabled": true,
    "server_name": "example.com",
    "insecure": false,
    "alpn": ["h3"]
  }
}
  • uuid — обязательный уникальный идентификатор (в версии TUIC v5).
  • password — опциональный пароль, если сервер требует.
  • Настройки TLS аналогичны Hysteria2.

Проверьте, что все обязательные поля заполнены и соответствуют серверу. Например, если сервер Hysteria2 ожидает пароль, а в профиле указан UUID — подключение не установится.

4. Проверка TLS и сертификатов

Hysteria2 и TUIC работают поверх TLS/QUIC, поэтому настройки TLS играют решающую роль. Основные ошибки связаны с неправильным SNI или недоверием к сертификату.

  • SNI (server_name) должен совпадать с именем в сертификате сервера. Если вы используете домен, укажите его. Если сервер доступен только по IP, либо укажите IP как SNI (если сертификат самоподписан, это не подойдёт), либо добавьте сам сертификат в конфиг через поле certificate.
  • Проверка сертификата — не рекомендуется отключать её через insecure: true. Вместо этого лучше импортировать сертификат. В sing-box это делается так:
"tls": {
  "enabled": true,
  "server_name": "domain.com",
  "certificate": ["-----BEGIN CERTIFICATE-----...-----END CERTIFICATE-----"]
}
  • ALPN — для Hysteria2 в большинстве случаев используется h3. Для TUIC тоже часто указывают h3. Убедитесь, что сервер настроен на тот же ALPN.
  • Версия QUIC — sing-box автоматически подбирает, но если у вас старый клиент, может потребоваться обновление.

5. Настройка DNS и route

Даже идеально настроенный outbound не заработает, если трафик не маршрутизируется правильно. Перед импортом профиля убедитесь, что в вашей конфигурации есть как минимум разделы dns и route.

Для Hysteria2 и TUIC особенно важно настроить DNS, чтобы избежать утечек запросов через прямое соединение. Пример базовой настройки:

"dns": {
  "servers": [
    {"tag": "remote", "address": "tls://8.8.8.8"},
    {"tag": "local", "address": "local"}
  ],
  "rules": [...]
},
"route": {
  "rules": [
    {"rule_set": ["geoip-cn"], "outbound": "direct"}
  ],
  "final": "hy2"  // или "tuic"
}

Проверьте, что в route есть правило по умолчанию (final), указывающее на ваш outbound. Если вы планируете использовать только этот профиль как прокси, можно установить final на ваш outbound.

Также убедитесь, что у вас нет конфликтующих правил, которые могут отправлять домены сервера в другой outbound (например, direct). Иногда сервер находится в том же регионе, что и вы, и его трафик может попадать под правила geoIP — это допустимо, но проверьте, что он не блокируется.

6. Чек-лист и частые ошибки

Составим итоговый чек-лист, который поможет избежать большинства проблем:

  • Актуальная версия sing-box.
  • JSON проходит проверку sing-box check.
  • В outbound указаны все обязательные поля.
  • TLS: правильный SNI, insecure только если вы понимаете последствия.
  • ALPN соответствует настройке сервера.
  • Все порты и строки (пароль/UUID) скопированы без лишних пробелов.
  • В конфиге есть раздел dns и route с корректным final.
  • Нет полей из других клиентов (например, udp флаги из Clash).

Распространённые ошибки:

  • Hysteria2 vs Hysteria: легко перепутать типы. Для Hysteria2 используется type: "hysteria2", а не hysteria.
  • UUID вместо пароля в Hysteria2. Только пароль.
  • Пароль вместо UUID в TUIC. Только UUID обязателен.
  • Порт как строка: "443" вместо 443 — это вызовет ошибку валидации.
  • Нет тега tag у outbound — route не сможет на него сослаться.
  • Отсутствует раздел route — тогда sing-box не будет знать, куда направлять трафик, и может вообще ничего не делать.
  • Неправильный server_name — если домен указан с портом или с протоколом.

Если после всех проверок подключение не работает, запустите sing-box run в терминале и посмотрите логи. Скорее всего, там будет конкретное сообщение об ошибке (например, «certificate signed by unknown authority» или «invalid password»).

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

  • Дата проверки: 2025-06-14
  • Среда: sing-box 1.10+
  • Версии: [object Object]

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

  • Проверить актуальность версии sing-box (не ниже 1.10)
  • Выполнить `sing-box check -c config.json`
  • Убедиться в наличии всех обязательных полей outbound (server, server_port, password/uuid, tls)
  • Проверить server_name и insecure в TLS
  • Согласовать ALPN (h3 или другой) с сервером
  • Проверить порты и строки на лишние пробелы/опечатки
  • Настроить DNS и route с финальным outbound
  • Исключить неподдерживаемые поля из конфигурации
  • Добавить tag для каждого outbound
  • Проверить логи при запуске `sing-box run`

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

  • Перепутать тип протокола: hysteria вместо hysteria2
  • Использовать UUID в Hysteria2 вместо password
  • Использовать password в TUIC вместо uuid
  • Указывать порт строкой, а не числом
  • Отсутствие tag у outbound
  • Отсутствие раздела route или неправильный final
  • Неверный server_name (с портом, протоколом или опечаткой)
  • Включение insecure: true без необходимости
  • Наличие лишних полей из Clash или других клиентов

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

FAQ

Почему при импорте Hysteria2 профиля sing-box выдаёт ошибку "unsupported protocol"?

Убедитесь, что вы указали тип "hysteria2", а не "hysteria". Также проверьте, что версия sing-box не ниже 1.3.0.

Как исправить проблему с TLS-сертификатом при подключении TUIC?

Добавьте правильный server_name или укажите сам сертификат в настройках tls. Не рекомендуется включать insecure: true, так как это снижает безопасность.

Нужно ли настраивать DNS для Hysteria2?

Да, для корректной маршрутизации и предотвращения утечек DNS обязательно настройте раздел dns, используя удалённые DNS-серверы через TLS/HTTPS.

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

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

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

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

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