规则配置问题

配置Clash规则似乎很简单,哪些规则通过代理、哪些规则直连一个个添加上去就可以了。

这似乎很合理,但匹配规则是有先后顺序的,黑名单、白名单模式配置规则顺序也很重要。

你是否遇到过这样问题:

  1. 使用黑名单模式,访问google.com一会正常、一会儿就connection reset链接被重置了?
  2. 使用白名单模式,访问某个国内网站,却走了默认代理?

原因分析

上面两个示例很大概率就是DNS污染导致的。

  1. 黑名单模式时DNS查询国内DNS返回个国内地址,直接匹配了直连,一会儿DNS查询返回了真实IP地址,由走代理正常访问了。解决方法是优先配置URL规则、减少或不要配置直连规则。
  2. 白名单模式时,很难将所有国内网址和IP配置全,因此走默认代理可能性很大,解决方法是优先配置URL规则、再加上国内IP规则。

配置规则示例

下面是比较常规且通用的配置规则,自定义规则可以在最后一条之前添加即可。

黑名单模式规则示例

# 黑名单模式,命中规则使用代理
rules:
  - RULE-SET,applications,DIRECT
  - DOMAIN,clash.razord.top,DIRECT
  - DOMAIN,yacd.haishan.me,DIRECT
  - RULE-SET,private,DIRECT
  # 先匹配代理规则后直连
  - RULE-SET,tld-not-cn,默认代理组
  - RULE-SET,google,默认代理组
  - RULE-SET,gfw,默认代理组
  - RULE-SET,proxy,默认代理组
  - RULE-SET,greatfire,默认代理组
  - RULE-SET,telegramcidr,默认代理组
  ## 中间可以添加其他规则
  # 其他规则xxxxx
  #
  # 默认规则
  - MATCH,DIRECT

提示: 建议不要把- RULE-SET,direct,DIRECT这样的规则添加到黑名单模式,没必要且容易导致跟DNS污染有关的问题。

白名单模式

# 白名单模式,命中规则直连
rules:
  - RULE-SET,applications,DIRECT
  - DOMAIN,clash.razord.top,DIRECT
  - DOMAIN,yacd.haishan.me,DIRECT
  - RULE-SET,private,DIRECT
  - RULE-SET,lancidr,DIRECT
  # 直连URL规则
  - RULE-SET,direct,DIRECT
  # 直连IP规则
  - GEOIP,CN,DIRECT,no-resolve
  # 默认规则
  - MATCH,默认代理组