TiziWiki梯子百科 · 中文网络知识

工具有解,选择有据。独立整理 / 持续更新

sing-box 配置文件详解:inbounds、outbounds、route 与 dns 怎么改

sing-box JSON 配置进阶教程:逐段解释 log、dns、inbounds、outbounds、route、experimental 的作用,演示在机场订阅基础上添加自定义规则与策略组、修改 DNS、开启 Clash API 面板,以及配置校验与常见报错处理。

文章目录

sing-box 用 JSON 而不是 YAML,结构更严格也更清晰。理解五个顶层段落后,机场订阅里的配置就能看懂、改对。基础使用见 sing-box 教程。

配置的五个段落

{
  "log": {},
  "dns": {},
  "inbounds": [],
  "outbounds": [],
  "route": {}
}
段落 作用 对应 Clash 概念
inbounds 本机如何接入(TUN、mixed 端口) 端口与 TUN 设置
outbounds 节点与策略组 proxies + proxy-groups
route 分流规则 rules
dns DNS 服务器与分流 dns
experimental Clash API 等附加功能 external-controller

inbounds:流量从哪进来

"inbounds": [
  { "type": "tun", "tag": "tun-in", "address": ["172.19.0.1/30"], "auto_route": true, "strict_route": true },
  { "type": "mixed", "tag": "mixed-in", "listen": "127.0.0.1", "listen_port": 2080 }
]
  • tun:接管全部流量,需要管理员权限;
  • mixed:同时提供 HTTP 与 SOCKS 代理端口,供终端、浏览器手动使用。

TUN 的原理见什么是 TUN 模式与系统代理。

outbounds:节点与策略组

"outbounds": [
  { "type": "selector", "tag": "自动选择", "outbounds": ["urltest", "香港 01", "日本 01"] },
  { "type": "urltest", "tag": "urltest", "outbounds": ["香港 01", "日本 01"], "url": "https://www.gstatic.com/generate_204" },
  { "type": "vless", "tag": "香港 01", "server": "...", "server_port": 443 },
  { "type": "direct", "tag": "direct" },
  { "type": "block", "tag": "block" }
]
  • selector:手动选择组;
  • urltest:自动测速组;
  • 各协议类型(vless、shadowsocks、trojan、hysteria2)是具体节点;
  • direct 与 block 是直连与拒绝。

策略组概念见什么是策略组与规则分流。

route:规则分流

"route": {
  "rules": [
    { "domain_suffix": ["openai.com", "anthropic.com"], "outbound": "AI 专用" },
    { "rule_set": ["geosite-cn"], "outbound": "direct" },
    { "ip_is_private": true, "outbound": "direct" }
  ],
  "rule_set": [
    { "tag": "geosite-cn", "type": "remote", "format": "binary", "url": "..." }
  ],
  "final": "自动选择",
  "auto_detect_interface": true
}

规则自上而下匹配,final 是兜底。新版 sing-box 用 rule_set 替代旧的 geosite / geoip 字段。

dns:解析分流

"dns": {
  "servers": [
    { "tag": "remote", "address": "https://dns.google/dns-query", "detour": "自动选择" },
    { "tag": "local", "address": "223.5.5.5", "detour": "direct" }
  ],
  "rules": [
    { "rule_set": ["geosite-cn"], "server": "local" }
  ],
  "final": "remote"
}

国内域名用国内 DNS 直连解析,其他走代理用 DoH。DNS 泄露与污染见什么是 DNS 污染与 DNS 泄露。

experimental:开启面板

"experimental": {
  "clash_api": { "external_controller": "127.0.0.1:9090", "external_ui": "ui" }
}

开启后可用任意 Clash 面板切换节点、查看连接,命令行环境尤其有用,见 Linux 梯子教程。

在订阅基础上自定义

订阅会被覆盖,三种保留改动的方法:

  1. 图形客户端的「合并 / 覆写」功能(如 Hiddify、部分 sing-box 客户端版本);
  2. 本地写一份配置,节点部分通过订阅转换生成后粘贴;
  3. 用机场的订阅转换自定义规则,见什么是订阅转换。

校验与常见报错

sing-box check -c config.json
  • unknown field:字段名错误或版本不支持,核对文档与客户端版本;
  • outbound not found:规则引用了不存在的 tag;
  • rule_set 下载失败:网络未通,先用直连下载或改为本地文件;
  • JSON 语法错误:多了逗号或少了引号,用编辑器的 JSON 校验。

相关内容

常见问题

改了订阅下载的配置,更新后会被覆盖吗?

会。远程配置每次更新都会覆盖本地改动。要么把修改做成本地配置并引用远程节点,要么使用客户端的「合并」功能(部分图形客户端支持),要么在机场提供的订阅转换中自定义规则。

TiziWiki 编辑部

TiziWiki 编辑部整理公开资料、说明证据边界,并维护教程与内容更正。