规则模式和全局模式先按选择出口的方式对照
规则模式依据配置中的规则或规则集,决定从哪个节点或本地网络出去。全局模式则把已进入本地代理程序的流量交给手工选定的节点,直连模式让这些流量从本地网络出去。
这里的范围是进入代理程序的流量,不能把模式名称写成所有程序已经被接管。程序如何进入本地代理,仍属于系统代理或 TUN 等入站方式的核对内容。
| 模式 | 出口选择依据 |
|---|---|
| rule | 配置里的条件匹配 |
| global | GLOBAL 策略组选定的代理 |
| direct | 从本地网络直连 |
mihomo 文档默认使用 rule,但手上应用实际取值仍看当前配置。文档默认和当前设备状态分开记录,不能只因默认值就跳过模式核对。
域名条件和IP条件看的是不同对象
DOMAIN 匹配完整域名,DOMAIN-SUFFIX 匹配域名后缀,DOMAIN-KEYWORD 则按域名中的内容匹配。GEOIP 看 IP 所属国家代码,SRC-GEOIP 看来源地址的归属。
GeoSite 对应域名列表,GeoIP 对应地址段列表,两者不是名称不同的同一份内容。核对一条规则前先读规则类型,再看条件和策略,别只按后面的地区标签理解。
- 域名列表项目看 GeoSite,不把它写成 IP 段。
- 地址归属项目看 GeoIP,不把它写成完整域名。
- 源地址匹配与目标地址匹配分开,保留规则类型名称。
Xray 的 geoip:cn 使用国家代码,geoip:private 包含私有地址,带反选符号的写法另有相反范围。读取配置时保留这些前缀,不只摘取末尾的地区字样。
上面的规则优先处理而不是同时任选
mihomo 规则从上到下匹配,顶部规则优先于下面规则。MATCH 不需要条件,承担兜底作用,检查时要看它之前已经出现了哪些匹配项。
读规则要从顶部往下,条件与策略保持在同一条记录里。
- 读当前模式,确认是否按规则处理。
- 从规则顶部检查类型和条件,记录对应策略。
- 找到兜底位置,再核对需要的数据库或规则集。
还有一个具体条件:请求是 UDP 而节点不支持 UDP 时,mihomo 会继续向下匹配。规则行为要连同这个条件看,不能把前面出现过某条规则写成一定已经采用。
数据文件名称不能跨内核直接套用
Clash Verge Rev 安装目录中可见 Country.mmdb、geoip.dat 和 geosite.dat。它们的用途各有对应,看到文件名不等于已经知道当前规则引用了哪个项目。
sing-box 的 geoip 与 geosite 规则项从 1.8.0 起弃用,文档写将在 1.12.0 移除,转用 rule-set。读旧配置时保留内核和版本条件,不把其他工具的文件用法搬来。
GeoIP 的准确度数字没查到公开说明,因此不提供百分比。这里能对照的是规则对象与处理顺序,不能用数据库名称给某条实际连接下地理准确性结论。
需要换服务时再从此处查看
若要继续比较其他机场,下方提供收录项目的查看入口。
常见问题解答
开全局后为什么还要看程序有没有进入代理?
全局模式描述进入本地代理程序后的出口选择,入站方式另由系统代理或 TUN 等条件决定。模式与接管范围分开核对,不能从全局名称推定全部应用已进入。
GeoSite与GeoIP规则先看哪个字?
先看规则类型。GeoSite 对应域名列表,GeoIP 对应 IP 段归属,SRC-GEOIP 又针对来源地址,不要只看地区标签而省去它们匹配的对象。
一条规则没有采用时怎么读后续规则?
按 mihomo 从上到下的顺序继续核对条件与策略,注意 MATCH 的兜底位置。UDP 请求遇到不支持 UDP 的节点会继续匹配,这个条件也保留。
