sing-box 配置文件入门:config.json 基础结构与常用字段说明

很多网友在第一次接触 sing-box 时,最容易被 config.json 配置文件劝退。打开文件后,里面可能有 inbounds、outbounds、route、dns、route.rule_set 等字段,往往像一大段复杂代码。其实新用户不需要一开始就理解所有字段。学习 sing-box 配置文件,只要先搞清楚几个核心问题:流量从哪里进来、从哪里出去、DNS 怎么解析、规则怎么分流、出错时应该检查哪里。

image.png


本文用新手容易理解的方式,说明 sing-box 的 config.json 基础结构 和常用字段含义,帮助大家理解订阅转换工具生成的配置文件,也方便后续排查订阅导入失败、规则不生效、DNS 异常等问题。

一、config.json 配置文件的作用

config.json 是 sing-box 的配置文件。sing-box 本身是代理核心或代理平台,真正决定它怎么运行的,就是这个 JSON 配置文件。

简单理解:

  • 客户端:通过配置文件决定本机流量怎么进入 sing-box、走哪个节点、哪些网站直连、哪些网站代理。

  • 服务端:通过配置文件决定开放什么协议、监听哪个端口、客户端如何连接。

  • 订阅转换:本质上也是把机场订阅或节点信息转换成 sing-box 能识别的 JSON 配置。

所以,SFA、Windows 核心、Linux 服务端、OpenWrt 插件虽然使用场景不同,但背后都离不开配置文件。

二、sing-box 配置文件的基础结构

一个 sing-box 配置文件可以包含很多字段,新手先掌握下面几个常用模块即可:

复制复制
复制
{
  "log": {},
  "dns": {},
  "inbounds": [],
  "outbounds": [],
  "route": {
    "rules": [],
    "rule_set": []
  },
  "experimental": {}}

上面只是结构示意,不是完整可运行的配置。新手可以先记住这几个核心模块:

字段作用新手理解
log日志设置出错时检查日志,判断配置哪里有问题
dnsDNS 解析设置决定域名怎么解析,影响访问速度和 DNS 泄露
inbounds入站设置流量从哪里进入 sing-box,比如本地代理端口或 TUN
outbounds出站设置流量从哪里出去,比如直连、代理节点、阻断
route路由分流规则决定哪些网站直连,哪些网站走代理
route.rule_set规则集新版 sing-box 推荐用来管理域名、IP、广告、分流等规则
experimental实验功能部分高级功能或面板接口,新手前期可以不用处理

如果把 sing-box 想象成一个交通系统,那么 inbounds 是入口,outbounds 是出口,route 是红绿灯和导航规则,route.rule_set 是规则库,dns 是查询地址的系统,log 是运行记录。

三、常用字段说明:入口、出口、DNS 和路由

新手阅读配置文件时,可以先了解 inbounds、outbounds、dns、route.rules 和 route.rule_set 这几个部分。

1、inbounds:流量入口

inbounds 表示入站,也就是本机或局域网的流量通过什么方式进入 sing-box。

常见场景包括:

  • mixed / socks / http:本地代理端口,适合浏览器、系统代理或部分软件手动设置代理。

  • tun:虚拟网卡模式,可以接管更多系统流量,适合透明代理或全局接管场景。

  • redirect / tproxy:更常见于 Linux、OpenWrt、软路由等环境。

普通 Android 用户使用 SFA 时,很多时候是通过客户端界面开启 VPN / TUN 能力,不一定需要自己编写这一部分。

2、outbounds:节点与出站

outbounds 表示出站,也就是 sing-box 最终把流量发到哪里。

常见出站类型包括:

  • direct:直连,不经过代理节点。

  • block:阻断访问,常用于广告、恶意域名或不想访问的地址。

  • selector:节点选择组,用户可以手动选择不同节点。

  • urltest:自动测速选择延迟较低的节点。

  • shadowsocks / trojan / vless / hysteria2 等:具体代理协议节点。

如果您是通过机场订阅转换得到的 sing-box 配置,节点信息一般主要位于 outbounds 里面。

3、dns:域名解析

dns 负责域名解析。比如访问 example.com 时,系统要先知道它对应哪个 IP 地址,这一步就和 DNS 有关。

DNS 配置会影响:

  • 网站能不能正常打开;

  • 国内外域名解析是否准确;

  • 是否出现 DNS 污染或解析异常;

  • 是否存在 DNS 泄露风险;

  • 规则分流是否按预期工作。

新手不建议一开始就手动修改复杂的 DNS 规则。如果导入订阅后可以正常使用,先保持默认即可。只有遇到国内网站慢、国外网站打不开、解析异常时,再单独排查 DNS。

4、route 和 route.rule_set:路由分流与规则集

route 是 sing-box 配置里非常重要的一部分,它决定流量应该走哪个出站。

举例来说:

  • 国内网站走 direct;

  • 国外网站走代理节点;

  • 广告域名走 block;

  • 某些应用或端口走指定节点;

  • 规则匹配不到时走默认出站。

route.rule_set 可以理解为规则集。它一般用来管理大量域名、IP、广告拦截、地区分流等规则。相比把所有规则全部写入 route.rules,使用规则集更方便维护,也更适合远程更新。

重要提醒:新版 sing-box 已经不再推荐使用旧版 V2Ray 格式的 geoip 和 geosite 规则。sing-box 从 1.8.0 开始引入 rule_set 规则集,用来替代传统 GeoIP / Geosite;GeoIP 和 Geosite 已在 1.12.0 中移除。

因此,如果旧版订阅转换工具生成的配置里仍然带有 geoip、geosite、geoip-cn、geosite-cn 等旧规则写法,导入新版 SFA 或新版 sing-box 核心时,可能出现 geoip database is deprecated、规则弃用提示,部分版本还可能因为旧字段无法继续加载配置。

新版配置更推荐使用 route.rule_set 规则集,例如远程 .srs 规则文件。简单理解,旧写法引用 GeoIP / Geosite 数据库,新写法则通过 route.rule_set 定义规则集,再在 route.rules 中引用。

四、排查配置问题时应该检查哪些内容

如果您不是开发者,没有必要从第一行逐项检查到最后一行。遇到问题时,可以按照下面的顺序排查。

遇到的问题优先检查的位置排查方向
配置导入失败整个 JSON 格式检查是否缺少逗号、括号、引号,是否生成了错误格式
节点无法连接outbounds检查服务器地址、端口、协议、密码、UUID、TLS 等参数
规则不生效或提示 geoip database is deprecatedroute / route.rule_set检查是否仍使用旧版 geoip、geosite 写法,新版 sing-box 应优先使用 route.rule_set 规则集
域名打不开dns检查 DNS 服务器、解析规则、fake-ip 或直连解析问题
系统流量没走代理inbounds检查系统代理、TUN、VPN 授权或监听端口
无法确定错误位置log开启日志,根据报错关键词定位问题

新手最常见的错误,不是不会写高级配置,而是把不同版本的规则混在一起、复制了不完整的 JSON,或者把 Clash / V2Ray 格式当成 sing-box 配置导入。

如果您的配置来自订阅转换工具,建议优先确认转换时选择的客户端类型是否为 sing-box,不要误选 Clash、V2Ray、Surge 或其他格式。

五、总结

sing-box 的配置文件字段很多,不过核心结构可以从几个常用模块开始理解:

  • inbounds 负责流量入口;

  • outbounds 负责节点和出站;

  • dns 负责域名解析;

  • route 负责分流规则;

  • route.rule_set 负责规则集管理;

  • log 负责排查错误。

普通用户不需要一开始就自己编写完整 config.json。如果使用 Android 版 SFA,可以使用已有的 sing-box 兼容配置;订阅格式不兼容时,再通过订阅转换工具处理。遇到订阅导入失败、规则不生效、DNS 异常或节点无法连接时,可以根据问题检查对应字段。

理解配置文件结构以后,后续学习 sing-box DNS、Route 路由规则、TUN 模式、REALITY 或 Hysteria2 节点配置,也会更容易理解。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论