客户端教程更新时间:Fri Apr 05 2024 00:00:00 GMT+0000 (Coordinated Universal Time)
Sing-box JSON 配置文件手动修改指南:出站入站路由高级编辑
💡 核心提要:深入剖析 Sing-box 的 JSON 配置文件四大核心结构(inbounds, outbounds, route, dns),手把手教你编写自定义路由规则与协议出站。
与 Clash 的 YAML 语法不同,Sing-box 采用了更为严格且结构化的 JSON 格式 来管理其所有网络配置。对于高级玩家和自建节点用户来说,学会手写和修改 Sing-box 的 config.json 文件是实现个性化分流与防封锁的必修课。
本文将为你深度拆解 Sing-box JSON 配置文件的底层语法结构与实战修改技巧。
Sing-box config.json 的四大核心顶层模块
每一个标准的 Sing-box 配置文件都由以下 4 个最基础的 JSON 对象组成:
config.json 顶级结构拆解:
{
"log": { ... }, // 日志级别与输出路径
"dns": { ... }, // 本地与远程加密 DNS 解析规则
"inbounds": [ ... ], // 本地监听端口 (Mixed / TUN / SOCKS5)
"outbounds": [ ... ], // 节点服务器与选路分组 (VLESS / Hy2 / Selector)
"route": { ... } // 域名/IP 分流规则逻辑
}
模块一:inbounds 入站配置(开启 TUN 透明代理)
入站模块定义了 Sing-box 如何接收本地设备的网络流量:
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"interface_name": "singbox-tun",
"inet4_address": "172.19.0.1/30",
"auto_route": true,
"strict_route": true,
"sniff": true
}
]
- auto_route: true:自动将系统默认网关流量重定向到 Sing-box,实现全局透明代理。
- sniff: true:开启域名嗅探,自动从 TLS ClientHello 中提取真实域名进行规则匹配。
模块二:outbounds 出站配置与节点分组
出站定义了数据包发往哪里。以下是一个经典的智能选路出站组示例:
"outbounds": [
{
"type": "selector",
"tag": "节点选择",
"outbounds": ["香港 01-IPLC", "日本 02-BGP", "自动选择"]
},
{
"type": "vless",
"tag": "香港 01-IPLC",
"server": "hk.example.com",
"server_port": 443,
"uuid": "your-uuid-here",
"tls": {
"enabled": true,
"server_name": "hk.example.com"
}
},
{
"type": "direct",
"tag": "direct"
}
]
模块三:route 域名与 IP 分流规则
在 route 模块中指定具体流量走哪一个出站策略:
"route": {
"rules": [
{
"geosite": ["private", "cn"],
"outbound": "direct"
},
{
"geosite": ["netflix", "youtube"],
"outbound": "节点选择"
},
{
"geoip": ["cn"],
"outbound": "direct"
}
],
"auto_detect_interface": true
}
Sing-box JSON 修改常见问题 (FAQ)
Q1:为什么编辑 JSON 后 Sing-box 报 syntax error 错?
JSON 格式非常严谨,最后一个元素后面绝对不能带多余的逗号,且属性名必须用双引号包裹。建议使用 VS Code 或 JSONLint 工具进行在线语法校验。
Q2:Sing-box v1.8+ 升级后某些旧 JSON 字段不生效了?
Sing-box 更新迭代较快。例如 v1.8 之后 geoip 和 geosite 正式废弃,推荐改用全新的 rule_set (规则集) 独立编译文件导入。
Sing-box JSON 高级编辑总结
掌握 Sing-box 的 JSON 结构后,你便拥有了对网络流量的终极控制权。不管是自定义 Fake-IP 域名段,还是实现多机场线路负载均衡分流,都能通过精简手写 JSON 轻松做到。