↓ 跳过正文
  1. 文章/

sing-box 规则怎么自定义?分流规则从入门到进阶

·1733 字·4 分钟
作者
吾便宜

装好 sing-box、导入订阅就能上网,但用一段时间总会遇到"这个网站想直连、那个 App 想走代理"的需求。这时候就要动分流规则了。本文假设你已经会用 sing-box(没装的先看 sing-box 入门),直接讲规则怎么写。

sing-box 自定义分流规则

规则到底在决定什么
#

sing-box 的路由(route)是一张"按条件分流"的表:每个请求进来,按顺序匹配规则,第一条命中的规则决定它走直连、走代理,还是被拦截。顺序就是一切——规则按从上到下匹配,命中即停,后面的规则再对也不会生效。

常见的匹配条件分四类:

  • 域名类:domain(精确域名)、domain_suffix(后缀,如 .google.com)、domain_keyword(关键词)、domain_regex(正则)。
  • IP 类:ip_cidr(IP 段,如 192.168.0.0/16)、ip_is_private(内网地址)。
  • 端口与协议类:port、protocol(如 dns、quic)。
  • 来源类:source_ip_cidr、inbound(入站标识),用来区分不同设备或入口。

一个典型的个人配置思路是三层:先写"特殊处理"(广告拦截、直连的国内服务),再写"分流"(国外走代理、国内直连),最后写一条 final 兜底(没命中的默认走代理或直连,二选一,别留空)。

远程规则集:不用手写几万条
#

国内直连、国外代理这种大名单,没人会手写。sing-box 支持 rule_set,可以引用别人维护好的规则集:

  • geosite:按域名分类,如 geosite-cn(国内网站集合)、geosite-geolocation-!cn(非国内网站集合)。
  • geoip:按 IP 归属分类,如 geoip-cn(国内 IP 段)、geoip-private(内网 IP 段)。

引用方式是先在 route.rule_set 里声明来源(本地文件或远程 URL),再在规则里用 rule_set: geosite-cn 这样的写法。远程规则集会定期更新,适合"一次配置、长期省心"的场景;缺点是更新时间不受你控制,某天规则集变了可能影响分流,介意的话可以下载到本地固定版本。

一个能直接用的骨架
#

下面是一份精简骨架(JSON 格式,写进 sing-box 配置的 route.rules),按"拦截→直连→代理→兜底"的顺序排:

{
  "route": {
    "rules": [
      { "protocol": "dns", "outbound": "dns-out" },
      { "rule_set": "geosite-ads", "outbound": "block" },
      { "rule_set": ["geosite-cn", "geoip-cn"], "outbound": "direct" },
      { "rule_set": "geosite-geolocation-!cn", "outbound": "proxy" },
      { "ip_is_private": true, "outbound": "direct" }
    ],
    "final": "proxy"
  }
}

读法:DNS 查询先走 DNS 出站;广告域名直接拦截;国内域名和国内 IP 直连;国外域名走代理;内网地址直连;其余没命中的,默认走代理。这份骨架里的 direct、proxy、block、dns-out 是出站(outbound)的名字,要和你配置里的出站名对应上,否则 sing-box 会报错启动失败。

五个最常见的坑
#

1. 规则顺序写反了。

把"国外走代理"写在"广告拦截"前面,广告域名先命中了代理规则,就永远不会被拦截。记住:越特殊的规则越靠前,越通用的越靠后。

2. final 没设或设错。

没命中的请求走到 final,如果你设的是直连,某些国外小众网站就会裸连;设的是代理,国内小众服务可能变慢。根据你的主要用途二选一,没有标准答案。

3. 只分域名、不分 DNS。

规则按域名分流,但 DNS 查询本身也要分流:直连域名的 DNS 应该走国内 DNS,代理域名的 DNS 应该走远程加密 DNS,否则会出现"域名走了代理、DNS 查询却泄露了"的情况。DNS 部分的设置见 小火箭 DNS 设置 里的分工思路,sing-box 同理。

4. 规则改完没生效。

sing-box 改配置后要重启核心或重新加载才生效。改完先检查配置格式(JSON 少个逗号是最常见的启动失败原因),再用日志看有没有报错。

5. 规则配错导致打不开网页。

比如把某个常用域名误写进拦截规则,或者出站名写错。排查时先把可疑规则临时注释掉,恢复上网后再逐条加回去。更完整的断网排查流程见 代理已连接却没网排查 8 步。

和 Clash 规则的区别
#

概念上两家是相通的:都是"条件→动作"的表。写法上 sing-box 用 JSON,Clash 用 YAML 的 rules: 列表;Clash 的 GEOSITE、GEOIP、MATCH 对应 sing-box 的 rule_set 和 final。如果你两边都用,可以参考 Clash Verge 全指南 里的规则章节对照着看,思路迁移过去就行,不用重新学。

相关文章

sing-box 怎么用?从安装到导入订阅全流程

·2055 字·5 分钟
这两年新出的客户端里,sing-box 是绕不开的名字。很多机场的订阅页面开始出现"sing-box 订阅",Hysteria2、TUIC 这些新协议也经常先在 sing-box 上得到支持。但 sing-box 本身是个命令行核心,没有图形界面——新手直接下载官方版常常一脸懵。这篇把"sing-box 到底是什么、用什么客户端、怎么导入订阅"一次讲清。

NekoBox 使用教程:安卓端 sing-box 客户端上手指南

·747 字·2 分钟
NekoBox(NB4A)是安卓上基于 sing-box 内核的免费开源客户端,界面干净、协议支持新,喜欢折腾 sing-box 生态的可以试试。 插图来源:Storyset NekoBox 是什么 # 简单说:sing-box 内核 + 安卓原生界面。支持 VLESS、Trojan、Shadowsocks、Hysteria2、TUIC、WireGuard 等主流协议,订阅链接和其他客户端通用。

Loon 插件与分流规则:iOS 进阶玩法指南

·1761 字·4 分钟
Loon 是 iOS 上很受欢迎的代理客户端,价格不便宜,但可玩性在同类里数一数二。它的核心进阶功能就两个:插件和分流规则。刚接触的人经常把这两样东西搞混,或者一股脑装了一堆来路不明的规则,最后把网络搞得一团糟。这篇把它们讲清楚。

节点测速怎么做?延迟、速度、丢包率的正确测法

·852 字·2 分钟
节点卡了,第一反应就是测速。但很多人测了半天看不懂数据——延迟、速度、丢包率到底看哪个?这篇把节点测速的正确姿势一次讲清。 插图来源:Storyset 什么时候需要测速 # 刚买机场,想知道哪些节点好用 感觉变卡了,想确认是节点问题还是本地网络问题 在多个节点之间做选择,拿数据说话而不是凭感觉 三个指标分别看什么 # 指标 含义 多少算好 延迟(Ping) 数据跑一趟的时间 <100ms 流畅,>200ms 明显卡顿 下载速度 每秒能下多少数据 看视频 10Mbps+ 够用,下载则多多益善 丢包率 传丢的数据比例 <1% 正常,>5% 会明显卡顿 新手最容易搞错的一点:延迟低 ≠ 速度快。延迟看的是"反应快不快"(打游戏、视频通话敏感),速度看的是"吞吐量"(下载、看 4K 敏感)。刷网页卡先看延迟,下载慢先看速度。