sing-box — структура конфигурации
При запуске sing-box читает единственный JSON-документ. Корневой объект соответствует Go-структуре _Options в option/options.go:14 (экспортируется как Options через псевдоним типа, чей UnmarshalJSONContext включает строгую проверку неизвестных полей — опечатки в конфигурации приводят к ошибке при запуске, а не к молчаливому игнорированию).
Корневые ключи
| Ключ | Поле Go | Тип | Страница | Описание |
|---|---|---|---|---|
$schema | Schema | string | (нет) | URI JSON-схемы для автодополнения / проверки в редакторе; на работу не влияет. sing-box schema генерирует схему под текущую сборку. |
log | Log | *LogOptions | Журнал | Уровень важности, вывод, метка времени, переключатель отключения. |
dns | DNS | *DNSOptions | DNS | DNS-серверы, правила, hosts, fakeip. |
ntp | NTP | *NTPOptions | NTP | Необязательный встроенный NTP-клиент. |
certificate | Certificate | *CertificateOptions | Сертификат | Источник набора корневых CA для проверки TLS. |
certificate_providers | CertificateProviders | []CertificateProvider | TLS | Переиспользуемые поставщики сертификатов (acme, tailscale, cloudflare-origin-ca); на них по тегу ссылается certificate_provider во входящем TLS. |
http_clients | HTTPClients | []HTTPClient | (нет) | Переиспользуемые HTTP-клиенты (движок, версия, параметры соединения, TLS, параметры HTTP/2 / QUIC) для удалённых наборов правил, поставщиков сертификатов и verify_client_url в DERP. |
network_namespaces | NetworkNamespaces | []NetworkNamespace | TUN | Сетевые пространства имён Linux (default, unshare); на них по тегу ссылаются поля netns в TUN, параметрах прослушивания и соединения. |
endpoints | Endpoints | []Endpoint | Конечные точки | Конечные точки — входящие и исходящие одновременно (WireGuard, Tailscale, клиент / сервер OpenVPN и OpenConnect). |
inbounds | Inbounds | []Inbound | Входящие | Список слушающих сервисов. |
outbounds | Outbounds | []Outbound | Исходящие | Список вышестоящих целей (апстримов). |
route | Route | *RouteOptions | Маршрутизация | Правила маршрутизации, наборы правил, исходящий по умолчанию. |
services | Services | []Service | Сервисы | Фоновые сервисы (resolved, derp, ssm-api, api, hysteria-realm, usbip-server / usbip-client). |
experimental | Experimental | *ExperimentalOptions | Экспериментальное | Файл кэша, Clash API, V2Ray API, отладка pprof. |
Каждый DNS-сервер объявляет type; нетипизированный формат "address": "tls://…" не поддерживается (см. DNS).
Общий вид
json
{
"log": { "level": "info", "timestamp": true },
"dns": { "servers": [{ "type": "tls", "tag": "google", "server": "8.8.8.8" }] },
"ntp": { "enabled": true, "server": "time.cloudflare.com" },
"certificate": { "store": "system" },
"inbounds": [],
"outbounds": [],
"route": { "final": "direct" },
"experimental": {
"cache_file": { "enabled": true },
"clash_api": { "external_controller": "127.0.0.1:9090" }
}
}Исходный код: option/options.go:14-31 · v1.14.2 (af6e64c)
