sing-box — 配置结构
sing-box 启动时读取单个 JSON 文档。根对象映射到 option/options.go:14 中的 Go 结构体 _Options(通过类型别名导出为 Options,其 UnmarshalJSONContext 启用了严格的未知字段检查 —— 配置中的拼写错误会直接导致启动失败,而不是被静默忽略)。
根字段
| 键 | Go 字段 | 类型 | 页面 | 描述 |
|---|---|---|---|---|
$schema | Schema | string | (无) | 供编辑器补全 / 校验的 JSON Schema URI;对运行时无影响。sing-box schema 可生成与当前构建匹配的 schema。 |
log | Log | *LogOptions | 日志 | 严重级别、输出、时间戳、禁用开关。 |
dns | DNS | *DNSOptions | DNS | DNS 服务器、规则、hosts、fakeip。 |
ntp | NTP | *NTPOptions | NTP | 可选的内嵌 NTP 客户端。 |
certificate | Certificate | *CertificateOptions | 证书 | TLS 校验使用的根 CA 来源。 |
certificate_providers | CertificateProviders | []CertificateProvider | TLS | 可复用的证书提供方(acme、tailscale、cloudflare-origin-ca),由入站 TLS 的 certificate_provider 按 tag 引用。 |
http_clients | HTTPClients | []HTTPClient | (无) | 可复用的 HTTP 客户端(引擎、版本、拨号、TLS、HTTP/2 / QUIC 参数),供远程规则集、证书提供方与 DERP verify_client_url 使用。 |
network_namespaces | NetworkNamespaces | []NetworkNamespace | TUN | Linux 网络命名空间(default、unshare),由 TUN、监听与拨号字段中的 netns 按 tag 引用。 |
endpoints | Endpoints | []Endpoint | 端点 | 端点形式的入站 / 出站(WireGuard、Tailscale、OpenVPN 客户端 / 服务端与 OpenConnect)。 |
inbounds | Inbounds | []Inbound | 入站 | 监听服务列表。 |
outbounds | Outbounds | []Outbound | 出站 | 上游目标列表。 |
route | Route | *RouteOptions | 路由 | 路由规则、rule-set、默认出站。 |
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)
