很多人第一次接触 sing-box,面对它的配置文件往往觉得无从下手——语法结构跟传统工具差别不小,门槛确实摆在那里。但实话实说,在当前网络环境下,花点时间搞懂它,回报远比想象中大。它不只是一个代理工具,更像一个可编程的网络调度中心。
sing-box 的设计思路很清晰:把代理协议、DNS、分流、TUN 虚拟网卡、规则集、自动测速这些能力全部收进一份配置里。换句话说,你不再需要东拼西凑各种零散工具,只要写好这一份配置,就能实现系统级代理和精细化分流。下面通过一份真实可用的实战配置,逐步拆解它的核心逻辑。
核心优势速览
一、一体化整合。VLESS、Reality、Vision、TUN、Fake IP、远程规则集等常用能力全部内建,一份配置搞定所有,省去维护多个工具的麻烦。
二、智能分流。不像传统工具只能做简单转发,sing-box 能根据域名、IP、规则集自动判断:哪些流量直连、哪些走代理、哪些域名需要特殊处理。
三、节点自动切换。自建节点写入 Outbounds,配合 urltest 自动测速。延迟超标或不可用时,无缝切换到备用节点,不用再手动切来切去。
四、DNS 精准控制。国内域名走国内 DNS,国外和 AI 服务走代理 DNS,配合 FakeIP 实现高精度分流,有效规避 DNS 污染导致的各类异常。
目录
一、LOG — 日志设置
配置文件的第一部分是日志。这份配置把日志级别设为 info,同时开启了时间戳。这意味着系统会记录基础运行信息并打上时间标记。往后排查问题时,你能清楚地看到某个连接或某条 DNS 请求具体是在什么时刻发生的,这一点在实际排障中非常实用。
如果你刚开始使用,建议就保持 info 级别。级别太高(比如 trace 或 debug)会产生大量日志,拖慢性能;级别太低(比如 warning 或 error)则在出问题时信息不够用。info 是一个比较平衡的选择。
二、DNS — 解析与分流
DNS 是整个配置的灵魂,很多代理”能用但不好用”的根源就在这里。这份配置定义了三套 DNS 策略,各司其职。
国内解析:Local DNS
第一个 DNS 叫 local,地址是 223.5.5.5(阿里公共 DNS),通过 DIRECT 直连出去。它的职责是处理国内域名、局域网地址以及国内服务的解析。走直连的好处是解析速度快、延迟低,而且不会因为走代理而产生不必要的额外开销。
防污染解析:Remote DNS
第二个叫 remote,用的是 Cloudflare 的 DOH(DNS over HTTPS)服务。注意这个 DNS 不是直连的——它通过 PROXY 走代理。目的很明确:防止国外域名的解析结果被污染或篡改,确保 Google、OpenAI、Telegram、GitHub 等服务能正常访问。
精确分流:FakeIP 机制
第三个叫 FakeIP。它不是一个真实的 DNS 服务器,而是 sing-box 内置的一套分流机制。原理是这样的:对于某些特定域名,sing-box 会给它们分配一个假的虚拟 IP(通常是 198.18.0.0/15 网段内的地址)。后面的路由规则一旦看到这个虚拟 IP,就知道这些流量应该走代理。
FakeIP 的优势在于:它把”该走代理”的判断从域名层面下沉到了 IP 层面,路由规则可以用简单的 IP 匹配替代复杂的域名匹配,性能更好、也更不容易出现遗漏。
在规则分配上,这份配置是这样安排的:
广告类规则集 → REJECT(直接拒绝) Bing / Copilot / GitHub / Apple TV → FakeIP 国内网络 / 私有IP / 苹果中国 / 微软中国 → Local DNS OpenAI / Google / YouTube 等非中国区域名 → FakeIP
总结起来,DNS 这块的核心思路就是三条:国内解析走国内、国外解析走代理、特殊服务用 FakeIP 做精准分流。这套组合能覆盖大多数日常使用场景。
三、INBOUND — 入站设置
这份配置使用了一个 TUN 入站。可以把 TUN 理解为一张系统级的虚拟网卡——开启后,整台设备的所有网络流量都会先流入 sing-box,由它接管,然后再根据路由规则决定每一份流量是直连还是走代理。
配置中开启了自动路由和严格路由两个选项。自动路由负责让系统流量正确流入 TUN 网卡;严格路由则能减少 DNS 泄露和流量绕过。网络栈使用了 system 模式。整体来看,这份配置的定位不只是给浏览器用的,而是致力于全面接管整台设备的网络——包括终端、系统更新、以及其他应用的流量。
需要注意的是,TUN 模式下权限要求比较高,Linux 需要 root 或 CAP_NET_ADMIN,Windows 需要管理员权限,macOS 需要系统扩展授权。这些准备工作做好之后,TUN 的体验会非常丝滑。
四、OUTBOUND — 出站设置
出站部分定义了四个出口,分别是自动测速策略组、两个自建节点,以及一个直连出口。
PROXY — 自动测速策略组
第一个出站叫 PROXY,类型是 urltest。它不是一个真实的节点,而是一个自动测速策略组,下面挂载了自建节点一和自建节点二。它会通过访问 Google 的测试链接,每隔 3 分钟检测一次节点延迟。
这里有几个关键参数值得留意:
tolerance: 50ms — 两个节点延迟差距在 50ms 以内时不切换,避免频繁跳动 idle_timeout: 30m — 空闲超时 30 分钟 interrupt_exist_connections: false — 切换节点时不断开已有连接
这几个参数加在一起,意味着你在看视频或下载大文件时体验会比较平稳。节点切换对已有连接是透明的,不会出现”切了一下就断了”的尴尬。
自建 VLESS 节点
第二和第三个出站是两个自建的 VLESS 节点,端口 443,开启了 uTLS 和 Reality,伪装域名设为微软,指纹为 Chrome。这里要特别提醒:Reality 的公钥(publicKey)、shortId 以及 UUID 必须和 VPS 服务端完全一致。填错任何一个都可能导致连不上、TLS 校验失败,或者看起来连上了但网页打不开。
两个节点本身配置一样,只是服务器地址不同。挂载到 urltest 策略组之后,sing-box 会自动选择延迟更低的那个。如果两个节点都不可用,urltest 会持续检测直到某个节点恢复。
DIRECT — 直连
第四个出站是 DIRECT,即直连。国内流量和局域网流量都会走这条路直接出去,不经过任何代理节点。这既节省了代理带宽,也保证了国内服务的访问速度。
五、ROUTE — 路由分流规则
路由部分是整个配置中最细致的一块,决定了每条流量最终走向哪里。规则从上到下依次匹配,命中即停止。
流量嗅探(SNIFF)
第一条规则开启了嗅探(sniff)。它的作用是提取流量中的真实域名——比如 TLS 里的 SNI 或者 HTTP 里的 Host 头。有了这个能力,sing-box 就不只是傻看 IP 地址了,而是能精确地知道”你在访问哪个网站”,后续的分流判断自然更准。
配置文件里还设置了 sniff_override_destination,意思是如果嗅探出了真实域名,就用域名来替代原始目标地址做路由匹配。这能显著提升域名规则(比如 geosite)的命中率。
DNS 劫持
接下来的规则是这样:所有 DNS 协议的流量,以及目标端口为 UDP 53 的流量,都会被强制交给 sing-box 自己的 DNS 模块处理。这一步很关键——如果不做这个劫持,某些应用可能会绕过配置走系统默认 DNS,导致解析泄露甚至被污染。
QUIC 屏蔽
再下一条规则是拒绝 UDP 443 端口。目标很明确——屏蔽 QUIC(也就是 HTTP/3)。很多网站会优先尝试 QUIC,但 QUIC 走的是 UDP,不容易被代理链路精确控制。如果它在某些网络环境下不稳定,会严重影响分流和代理体验。拒绝之后,浏览器会回退到 TCP + TLS,让代理链路更加可控。
要不要屏蔽 QUIC 因人而异。如果你的网络环境 QUIC 很稳定、延迟也低,关掉这条规则也未尝不可。但对于大多数需要代理的场景,屏蔽 QUIC 能让分流更可靠。
分流规则链
后续的规则链非常清晰,按优先级排列:
局域网 / 私有 IP → DIRECT(直连) 广告规则集 → REJECT(拒绝) FakeIP 网段 (198.18.x.x) → PROXY(代理) Bing / Copilot / Apple TV / OpenAI / Google / YouTube 等国外规则集 → PROXY 国内域名 / IP / 地理位置 → DIRECT(直连) 苹果中国 / 微软中国 → DIRECT(直连) 非中国区域名 → PROXY(代理) 最终默认规则 (FINAL) → PROXY(代理)
这套规则的策略可以概括为”全局代理 + 国内直连”——大部分国外服务走代理,国内服务走直连。如果你希望全局可控、国外的流量都稳定走节点,这个策略比较合适。FINAL 规则兜底默认走 PROXY,意味着任何没被前面规则匹配到的流量也会走代理,避免了”某个新域名忘记加规则就连不上”的尴尬。
六、RAWSET — 远程规则集
规则集(Rule Set)是 sing-box 的一大亮点。你不用手动维护成千上万条域名规则,只需要引用远程的 .srs 文件即可。这份配置一共引入了 12 个规则集,覆盖了广告、私有网络、各大科技公司以及国内外域名和 IP 的分类。
当前配置里,这些规则集是通过 PROXY 代理来下载的。好处很明显:即使本地网络访问规则集源地址不稳定,仍然可以借助代理节点把规则拉下来。
顺便提一句:如果你用的是 sing-box 1.14 或更新版本,当前的下载写法已经属于旧制式了。新版本推荐使用 http_clients 来管理规则集下载。不过旧写法目前仍然正常兼容,等以后大版本升级时再做迁移也来得及,不用急着改。
七、EXPERIMENTAL — 实验性功能
最后一部分是实验性功能。这份配置里开启了 cache_file(缓存文件),它会将远程规则集等运行数据缓存到本地磁盘。这样下次启动软件时,就不用每次都重新下载所有规则了。
这个选项对日常体验的提升非常明显——冷启动速度会快很多,运行也更加稳定。特别是在网络不稳定的环境下,本地缓存能保证即使规则集源临时不可达,sing-box 也能用上一次缓存的数据正常启动。
除了 cache_file,实验性功能区还有不少其他选项(比如 clash_api 兼容模式),但建议只开启自己确实需要的,避免引入不必要的复杂度。
以上就是这份 sing-box 配置的全貌。从日志到 DNS,从入站到出站,再到路由规则和规则集——每一块都有自己的职责,组合起来就构成了一个完整的代理调度系统。希望这份拆解能帮你更好地理解和调校自己的 sing-box 配置。