机场导航

分流规则进阶:GeoSite、规则集与自定义规则,把分流握在自己手里

更新时间:2026-10-30

在 出站模式 那篇里我们说过:规则模式是日常的唯一正确选择。但很多人用着用着会遇到这种困惑:"明明是规则模式,为什么国内网站走了代理?""ChatGPT 一会儿美国一会儿日本,账号被风控了。"这些问题的答案都在规则列表里。这篇讲清楚三件事:规则是怎么匹配的、机场订阅里那几百条规则是哪来的、以及怎么写自己的规则。

规则是怎么匹配的:从上到下,命中即停

所有主流内核(mihomo / sing-box / Surge)的规则匹配都遵循同一个原则:first-match-wins——拿着你的请求,从规则列表第一条开始逐条比对,命中哪条就按哪条走,后面的规则不再看。

规则匹配的层次

一条请求通常要经历这几层判断:

  1. 域名规则:直接拿请求的域名比对(DOMAIN-SUFFIX,google.com),不需要解析 IP,最快
  2. IP 规则:域名规则都没命中,内核才会做 DNS 解析,拿解析出的 IP 去比对(GEOIP,CN)
  3. 兜底规则:MATCH(mihomo)或 FINAL(Surge),谁都没命中时的默认去向

这个顺序带来一个直接推论:规则放错位置等于没写。如果你把自定义规则追加在列表末尾,而前面已有一条更宽泛的规则把它截胡,你的规则永远不会生效。

GeoSite 和 GeoIP:两份"数据库"决定了分流的智商

规则里出现的 GEOSITE,cn 和 GEOIP,CN 不是实时查询,而是查本地两份数据库:

数据库 内容 回答的问题
GeoSite(域名库) 按类别组织的域名清单:geosite:google、geosite:cn、geosite:openai "这个域名属于哪个阵营?"
GeoIP(IP 库) IP 段与国家的映射 "这个 IP 在哪个国家?"

规则集:别自己攒规则,用社区维护好的

机场订阅转换出来的配置里那几百上千条规则,并不是机场手写的,几乎都来自几个公开的规则集项目:

现代客户端的做法是远程规则集(rule-set / rule-provider):配置里只写一句"引用某个 URL 的规则",客户端定期自动更新。好处是规则永远新鲜,坏处是规则源失效时分流会退化——所以值得在客户端里看一眼上次更新日期。

实战:四个高频自定义场景

以下用 mihomo(Clash 系)语法举例。核心原则只有一句:写在 rules: 列表的最上方。其他客户端语法不同,逻辑完全一样。

场景 1:公司内网 / 校园网强制直连

rules:
  - DOMAIN-SUFFIX,corp.example.com,DIRECT
  - IP-CIDR,10.8.0.0/16,DIRECT,no-resolve

其实 RFC1918 私有网段默认就有直连规则,但有些公司用公网 IP 做内网,就需要自己补。

场景 2:AI 服务锁定一个地区的节点

ChatGPT、Claude 对 IP 归属敏感,IP 在国家之间乱跳是封号高危行为。把它们单独指向一个手动选定的策略组,而不是跟随自动测速组:

rules:
  - GEOSITE,openai,🤖 AI 专用
  - DOMAIN-SUFFIX,claude.ai,🤖 AI 专用

然后在客户端里给"🤖 AI 专用"组固定选一个家宽/原生节点,忍住别换。

场景 3:某个 App 强制直连

网银、外卖、政务类 App 对境外 IP 极其敏感,误走代理轻则验证码重则锁号:

rules:
  - PROCESS-NAME,bankApp.exe,DIRECT      # 桌面端按进程名
  - GEOSITE,category-bank-cn,DIRECT      # 或按银行域名类别

场景 4:广告域名拦截

rules:
  - GEOSITE,category-ads-all,REJECT

广告拦截属于"看着美好,用着添堵"的功能:误杀正常接口、App 内信息流广告去不掉、还可能导致个别 App 功能异常。建议只把它当作辅助,别指望替代专业去广告工具。

各客户端语法速查

功能 mihomo(Clash 系) sing-box Surge
域名后缀 DOMAIN-SUFFIX,xx.com,DIRECT "domain_suffix": "xx.com" DOMAIN-SUFFIX,xx.com,DIRECT
域名库 GEOSITE,cn,DIRECT 引用 rule_set RULE-SET,url,DIRECT
IP 库 GEOIP,CN,DIRECT "geoip": "cn" GEOIP,CN,DIRECT
进程名 PROCESS-NAME,app,DIRECT "process_name" PROCESS-NAME,app,DIRECT
兜底 MATCH,PROXY "final": "proxy" FINAL,PROXY

细节以各自官方文档为准,但记住"从上到下、命中即停"这八个字,语法只是写法问题。

常见坑


至此,"分流三部曲"齐了:出站模式 解决"走哪条路",TUN 模式 解决"哪些流量能被接管",本篇解决"规则判错了怎么办"。分流配置没有银弹,但理解了匹配顺序,你至少能自己定位问题出在第几层。