经过了基础入门,相信你已经搞懂了在 outbounds 里面配置多个代理节点。但在日常高频使用中,如果你让所有的流量都走代理,不仅会耗费机场套餐的流量,访问国内的京东、淘宝时也会非常卡顿,甚至被判定为异地登录。
这个时候,我们就需要进入 route (路由) 的核心操作室了!
Table of contents
Open Table of contents
什么是分流规则?
分流的本质是“条件判断”:如果用户请求的目标访问符合某条规则,Sing-box 就会把它分发到指定的 outbound 出站去。Sing-box 在路由功能上提供了极其丰富的匹配方式。
1. 基础国内外分流 (基于 Geo)
最常用的也是最省心的方案,是利用 geosite 和 geoip 数据包直接一刀切。
在你的配置中的 route 模块增加以下代码:
"route": {
"geoip": {
"download_url": "https://github.com/SagerNet/sing-geoip/releases/latest/download/geoip.db",
"download_detour": "proxy"
},
"geosite": {
"download_url": "https://github.com/SagerNet/sing-geosite/releases/latest/download/geosite.db",
"download_detour": "proxy"
},
"rules": [
{
"geosite": ["cn"],
"geoip": ["cn", "private"],
"outbound": "direct"
}
],
"auto_detect_interface": true
}
解析:
我们首先引用了官方维护的 GEO 数据包(中国 IP 和域名的集合)。规则库中的意思是:如果是 cn 域名或是国内的 IP,就走我们名为 direct 的直连通道。
2. 屏蔽特定的垃圾网站或广告服务
假如你想在系统级别抛弃一些烦人的广告追踪器或者你不喜欢的网站,我们可以配置一个 block 出站,并在路由规则中最优先匹配它。
第一步:增加黑洞出站
"outbounds": [
{ ...你的主要节点代理... },
{ "type": "direct", "tag": "direct" },
{
"type": "block",
"tag": "block" // 流量到了这里会被直接丢弃
}
]
第二步:配置拦截规则
要注意,在 JSON 配置的 rules 数组里,排在越上面的规则优先级越高!我们要把拦截配置放在数组的最上面。
"route": {
"rules": [
{
"geosite": ["category-ads-all"],
"domain_suffix": ["baidu-ads.com", "spam.example"],
"outbound": "block"
},
{
"geosite": ["cn"],
"outbound": "direct"
}
]
}
3. 为特殊 App 分配专门的节点
有时候,你希望使用 ChatGPT 或 Netflix 时强制走某个解锁特定区域(比如美国)的节点,而其它的日常访问走香港节点。
假设你已经在 outbounds 里建好了名字叫 proxy-us 和 proxy-hk 两个节点,则:
"route": {
"rules": [
{
"geosite": ["openai", "netflix"],
"domain_suffix": ["chatgpt.com"],
"outbound": "proxy-us"
},
{
"geosite": ["telegram", "twitter"],
"outbound": "proxy-hk"
}
]
}
进阶玩法总结
Sing-box 路由能力的潜力是巨大的,它不仅仅支持域名和 IP 的匹配,还支持按发起请求的进程名 (process_name)、甚至是 WiFi 的 SSID (wifi_ssid)来进行灵活分流。
有了这套基础架构的认识,配合上社区丰富的规则集合(Rule Sets),你就能像配置路由器一样定制出一套独属于你的极速冲浪之旅!
⚠️ 提示
对于大多数普通用户,手写这么长段的规则非常容易漏掉半角逗号。大家可以使用现成的 GUI 客户端自带的规则组装功能,只需一键勾选就可以了!