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

Как проверить sing-box конфиг перед запуском: чек-лист

Узнайте, как проверить конфигурацию sing-box перед запуском: синтаксис, структура, DNS, маршрутизация, TUN и VLESS. Избегайте частых ошибок и настраивайте стабильное подключение.

sing-boxконфигурацияпроверкачек-листJSONDNSTUNVLESS
Содержание
КороткоПеред запуском sing-box проверьте синтаксис командой `sing-box check`, убедитесь в корректности DNS и route, настройте TUN и права, а также проверьте правильность указания VLESS и транспорта. Этот чек-лист поможет избежать типичных ошибок и ускорить диагностику.

Введение: почему проверка конфигурации важна

sing-box — это мощный универсальный прокси-клиент, который поддерживает множество протоколов и функций. Однако сложность конфигурации часто приводит к ошибкам, из-за которых подключение не работает. Проверка конфигурации перед запуском занимает всего несколько минут, но экономит часы на отладке. В этом чек-листе мы разберём, как правильно проверить конфиг sing-box, чтобы избежать типичных проблем.

Шаг 1. Проверка синтаксиса командой sing-box check

Первый и самый очевидный шаг — запустить встроенную проверку синтаксиса. Выполните в терминале:

sing-box check --config /path/to/config.json

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

Также полезно запустить `sing-box merge` для объединения нескольких файлов, если вы используете разбитый конфиг. Это помогает обнаружить конфликты между фрагментами.

Шаг 2. Проверка структуры JSON и обязательных полей

Конфигурация sing-box представляет собой JSON-объект. Основные верхнеуровневые поля: log, dns, inbounds, outbounds, route, experimental. Хотя большинство полей необязательны, при запуске вы должны иметь как минимум один inbound и один outbound. Убедитесь, что все названия полей написаны правильно, иначе sing-box может игнорировать неизвестные поля или вообще не запуститься (в зависимости от версии).

{
  "log": { "level": "info" },
  "inbounds": [],
  "outbounds": []
}

Проверьте, что каждый элемент массивов `inbounds` и `outbounds` содержит обязательные поля: для inbound это `type`, `tag`, `listen`, `listen_port`; для outbound — `type`, `tag`, `server`, `server_port`, а также `method` или `password` для соответствующих протоколов. Особое внимание уделите типам: у `vless` обязательно нужен `uuid`, у `vmess` — `uuid` и `alter_id`, у `trojan` — `password`. Если поле не требуется, его можно опустить, но наличие лишних полей также может вызвать предупреждения.

Проверьте, что все теги (tags) уникальны. Дублирующийся `tag` в outbounds или inbounds приведёт к непредсказуемому поведению, а в некоторых случаях — к ошибке при запуске.

Шаг 3. Настройка и проверка DNS

DNS в sing-box играет ключевую роль. Некорректная настройка может привести к утечке DNS-запросов или неправильному разрешению имён. Проверьте секцию dns:

{
  "dns": {
    "servers": [
      { "tag": "remote", "address": "8.8.8.8" },
      { "tag": "local", "address": "1.1.1.1", "detour": "direct" }
    ],
    "strategy": "ipv4_only",
    "independent_cache": true
  }
}

Убедитесь, что адреса DNS-серверов корректны и доступны. Если вы используете DNS-серверы через прокси, укажите параметр detour с тегом нужного outbound. Также проверьте параметры стратегии (`strategy`) и кэширования.

Если в вашем конфиге есть правила DNS (`dns.rules`), проверьте их точность. Например, для доменов, которые должны идти через прокси, используйте правило с `server: "remote"`, а для локальных — `server: "local"`. Убедитесь, что указаны корректные типы правил (domain, domain_suffix, etc.) и они не конфликтуют друг с другом.

Для проверки DNS можно использовать команду sing-box tools resolve или просто при запуске понаблюдать за логами. Если на этапе запуска появляются ошибки о таймауте DNS, скорее всего, не работают серверы или неправильно настроен `detour`.

Шаг 4. Проверка маршрутизации (route)

Секция route определяет, как трафик направляется на исходящие подключения. Ошибки здесь приводят к тому, что трафик уходит не туда или блокируется. Основные поля: rules, auto_detect_interface, default_mark и final.

{
  "route": {
    "rules": [
      { "protocol": "dns", "outbound": "dns-out" },
      { "clash_mode": "global", "outbound": "proxy" }
    ],
    "final": "proxy",
    "auto_detect_interface": true
  }
}

Проверьте:

  • Правильно ли указаны типы правил (domain, ip_cidr, protocol и т.д.).
  • Есть ли правило для DNS-трафика, если вы используете отдельный DNS outbound.
  • Указан ли `final` — если нет, sing-box вернёт ошибку.
  • Приоритет правил: они обрабатываются сверху вниз, первое совпадение решает.

Если вы используете геоданные или rule_set (например, geosite и geoip), убедитесь, что эти файлы загружаются корректно. В новой версии sing-box 1.11 они могут быть встроены, но иногда требуют указания пути. Проверьте, что все ссылки на rule_set доступны, либо файлы существуют.

Для отладки маршрутизации можно использовать лог с уровнем debug, чтобы видеть, какое правило сработало для каждого соединения. Это очень полезно, когда нужный домен не проходит через прокси.

Шаг 5. Проверка TUN и прав доступа

Если вы используете режим TUN, убедитесь, что у процесса есть необходимые права (root или CAP_NET_ADMIN). В конфигурации TUN укажите корректное имя интерфейса, MTU и настройки стека. Проверьте секцию inbounds с типом tun:

{
  "type": "tun",
  "tag": "tun-in",
  "interface_name": "tun0",
  "mtu": 1500,
  "auto_route": true,
  "strict_route": false
}

Убедитесь, что у пользователя есть права на создание TUN-интерфейса. На Linux можно проверить, существует ли устройство `/dev/net/tun`. Также проверьте, не конфликтует ли IP-диапазон TUN с существующими маршрутами.

На Windows TUN может требовать установки драйвера. Убедитесь, что вы используете последнюю версию Wintun или WireGuard. Если sing-box не может открыть TUN, проверьте журнал событий. На Android права выдаются автоматически при использовании VPN-сервиса, но иногда нужно отключить «Обходной маршрут» для некоторых приложений.

При использовании `auto_route` sing-box автоматически настраивает маршруты на TUN-интерфейс. Если вы используете `strict_route`, убедитесь, что понимаете его последствия: он исключает маршруты к локальной сети, и это может заблокировать доступ к вашему роутеру или другим устройствам.

Шаг 6. Проверка VLESS и транспорта

Для подключения к серверу по протоколу VLESS убедитесь, что вы правильно указали сервер, порт, UUID и транспорт. Пример:

{
  "type": "vless",
  "tag": "vless-out",
  "server": "example.com",
  "server_port": 443,
  "uuid": "ваш-uuid",
  "tls": {
    "enabled": true,
    "server_name": "example.com"
  },
  "transport": {
    "type": "ws",
    "path": "/path"
  }
}

Проверьте:

  • Тип транспорта (`ws`, `grpc`, `httpupgrade` и т.д.) и его параметры соответствуют серверу.
  • Если используется TLS, сертификат не должен быть самоподписанным, если не указан `insecure` (это опасно).
  • UUID должен быть валидным и совпадать с серверным.
  • Если транспорт `ws`, проверьте путь и заголовки Host.

Также важно проверить параметры сети, такие как `network`, `tcp` или `udp` — они должны быть включены, если нужны. Для протоколов, использующих UDP (например, Hysteria2), это критично. Если вы используете REALITY (для VLESS), то вместо `tls` указываются `reality_settings`, и там важно правильно настроить `public_key`, `short_id` и `server_name`. В этой секции любая ошибка приведёт к отсутствию подключения.

Рекомендуется сверить параметры соединения с данными, предоставленными вашим сервером. Часто ошибки возникают из-за неверного пути или заголовков WebSocket. Иногда сервер использует TSL на другом порту, или протокол сам по себе отличается (например, `vless` vs `vmess`).

Шаг 7. Проверка подключения и диагностика

После того как конфиг успешно прошёл синтаксическую проверку, запустите sing-box и понаблюдайте за логами. Если появляются ошибки — исправляйте. Используйте команду sing-box tools fetch для проверки URL, или просто попробуйте свернуть сайт через прокси. Также можно использовать встроенный `sing-box tools validjson` для быстрой проверки JSON.

Не забудьте проверить сетевую связность до сервера: пинг, доступность порта. Иногда проблема в фаерволе или блокировке провайдера. Выполните команду nc -zv example.com 443 (или используйте telnet) для проверки TCP-подключения. Если порт закрыт, вернитесь к настройкам сервера.

Используйте curl с указанием прокси, чтобы изолировать проблему: curl --proxy socks5h://127.0.0.1:1080 https://www.google.com. Это покажет, работает ли цепочка sing-box на транспортном уровне. Если curl успешен, но приложения не подключаются, скорее всего, проблема в правилах маршрутизации или DNS.

В логах sing-box ищите строки с ошибками (error) или предупреждениями (warning). Убедитесь, что уровень лога не ниже info, иначе вы можете не увидеть важные сообщения. Для глубокой диагностики используйте level: "debug" — это позволит увидеть каждое соединение и правило, которое его обработало.

Заключение

Проверка конфигурации sing-box перед запуском — это несложный процесс, который включает несколько этапов. Следуйте этому чек-листу, и вы избежите большинства проблем. Помните, что даже при правильной проверке могут возникать специфические ошибки — всегда смотрите на логи и проверяйте актуальную документацию. Также следите за обновлениями sing-box: новые версии могут менять поведение или вводить новые поля, поэтому конфиг, написанный для старой версии, может перестать работать.

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

  • Дата проверки: 2025-03-20
  • Среда: Linux x86_64
  • Версии: sing-box 1.11.0

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

  • Проверьте синтаксис командой `sing-box check`.
  • Убедитесь, что JSON-структура валидна и все обязательные поля присутствуют.
  • Проверьте настройку DNS: серверы, стратегию, отсутствие утечек.
  • Настройте и проверьте секцию `route`: правила, `final`, приоритет.
  • Проверьте TUN: права, имя интерфейса, MTU, конфликты IP.
  • Проверьте VLESS-подключение: сервер, порт, UUID, TLS, транспорт.
  • После запуска посмотрите логи, проверьте сетевую доступность и используйте curl для теста.

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

  • Опечатки в именах полей JSON (например, `interface-name` вместо `interface_name`).
  • Незакрытые скобки или лишние запятые в JSON.
  • Неверный адрес или порт сервера.
  • Неправильный тип транспорта или его параметры (путь, заголовки).
  • Отсутствие DNS-серверов или неправильный `final` в route.
  • Конфликт портов между inbound и другими процессами.
  • Недостаточно прав для TUN (например, запуск не от root).

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

FAQ

Что делать, если при запуске sing-box выдает ошибку syntax error?

Это значит, что JSON некорректен. Проверьте все скобки и запятые, затем используйте `sing-box check` для точной локализации ошибки.

Почему не работает DNS, хотя конфиг проверяется корректно?

Проверьте, что DNS-серверы доступны, а также что в route есть правило для перенаправления DNS-трафика на нужный outbound. В TUN-режиме убедитесь, что `auto_route` включён.

Как проверить, что VLESS-подключение работает без запуска полной конфигурации?

Используйте команду `sing-box tools fetch` с указанием конфига и URL, или создайте минимальный конфиг с одним inbound и outbound, чтобы изолировать проблему.

Какие права нужны для TUN в Linux?

Процесс должен быть запущен от root или иметь capabilities: `CAP_NET_ADMIN` и `CAP_NET_RAW`. Также убедитесь, что устройство /dev/net/tun доступно.

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

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

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

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

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