Skip to content

sing-box — структура конфигурации ​

При запуске sing-box читает единственный JSON-документ. Корневой объект соответствует Go-структуре _Options в option/options.go:14 (экспортируется как Options через псевдоним типа, чей UnmarshalJSONContext включает строгую проверку неизвестных полей — опечатки в конфигурации приводят к ошибке при запуске, а не к молчаливому игнорированию).

Корневые ключи ​

КлючПоле GoТипСтраницаОписание
$schemaSchemastring(нет)URI JSON-схемы для автодополнения / проверки в редакторе; на работу не влияет. sing-box schema генерирует схему под текущую сборку.
logLog*LogOptionsЖурналУровень важности, вывод, метка времени, переключатель отключения.
dnsDNS*DNSOptionsDNSDNS-серверы, правила, hosts, fakeip.
ntpNTP*NTPOptionsNTPНеобязательный встроенный NTP-клиент.
certificateCertificate*CertificateOptionsСертификатИсточник набора корневых CA для проверки TLS.
certificate_providersCertificateProviders[]CertificateProviderTLSПереиспользуемые поставщики сертификатов (acme, tailscale, cloudflare-origin-ca); на них по тегу ссылается certificate_provider во входящем TLS.
http_clientsHTTPClients[]HTTPClient(нет)Переиспользуемые HTTP-клиенты (движок, версия, параметры соединения, TLS, параметры HTTP/2 / QUIC) для удалённых наборов правил, поставщиков сертификатов и verify_client_url в DERP.
network_namespacesNetworkNamespaces[]NetworkNamespaceTUNСетевые пространства имён Linux (default, unshare); на них по тегу ссылаются поля netns в TUN, параметрах прослушивания и соединения.
endpointsEndpoints[]EndpointКонечные точкиКонечные точки — входящие и исходящие одновременно (WireGuard, Tailscale, клиент / сервер OpenVPN и OpenConnect).
inboundsInbounds[]InboundВходящиеСписок слушающих сервисов.
outboundsOutbounds[]OutboundИсходящиеСписок вышестоящих целей (апстримов).
routeRoute*RouteOptionsМаршрутизацияПравила маршрутизации, наборы правил, исходящий по умолчанию.
servicesServices[]ServiceСервисыФоновые сервисы (resolved, derp, ssm-api, api, hysteria-realm, usbip-server / usbip-client).
experimentalExperimental*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)

Core Tutorial от Argsment