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