Mihomo(Clash.Meta) 匹配路由规则的 DNS 配置

6 天前
 Rabbit52

参考资料:

先贴我的的 dns 配置

dns:
  enable: true
  listen: 0.0.0.0:7874
  ipv6: false
  enhanced-mode: redir-host
  respect-rules: true
  # 附加参数 #RULES 为遵守路由规则进行连接,等同于 respect-rules
  nameserver:
  # 指定使用 dns 路由规则进行连接
  # nameserver-policy 未匹配的域名将使用以下 dns 解析
    - tls://8.8.8.8#dns
    - tls://1.1.1.1#dns
  proxy-server-nameserver:
    - https://120.53.53.53/dns-query
    - https://223.5.5.5/dns-query
  nameserver-policy:
    # 白名单分组使用运营商 dns 解析
    "geosite:private,onedrive,microsoft@cn,apple,apple-cn,category-games@cn,cn":
      - 运营商 dns
    # 自定义白名单分组同样使用 运营商 dns 解析
    "rule-set:custom-direct":
      - 运营商 dns

解释一下我的场景,路由器上使用 mihomo 插件,白名单模式,未开启 ipv6 ,使用 geosite 规则,路由规则如下:

rules:
  - GEOIP,lan,DIRECT,no-resolve
  - GEOSITE,private,DIRECT
  # 高优先级标注需要代理的规则防止被后面的直连规则影响
  - GEOSITE,google,其他
  - GEOSITE,google-cn,其他
  - RULE-SET,openai,OpenAI
  # 以下为直连
  - GEOSITE,onedrive,DIRECT
  - GEOSITE,microsoft@cn,DIRECT
  - GEOSITE,apple,DIRECT
  - GEOSITE,apple-cn,DIRECT
  - GEOSITE,steam@cn,DIRECT
  - GEOSITE,category-games@cn,DIRECT
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT
  - RULE-SET,custom-direct,DIRECT
  # 剩余全代理
  - MATCH,其他

配置思路如下:

  1. 将我认为直连能获得更佳体验的分组打上 DIRECT 规则并且使用运营商 dns 进行解析,获得国内 CDN 加成,比如 apple, ms, dji, steam 等。
  2. 未使用 fallback 配置,避免直连解析耗时较长。
  3. 使用 rule-providers 自定义直连规则降低 nameserver-policy 配置复杂度。
1259 次点击
所在节点    宽带症候群
10 条回复
vvhy
6 天前
geoip 没加 no-resolve
可以用 wireshark 抓包确认一下
Rabbit52
5 天前
@vvhy 查了下确实很多人都像你说的这样配置,但是不理解为什么已经匹配到 ip 规则,说明已经解析过了,还需要指定不解析呢
Rebron1900
5 天前
大佬,openclash 的 meta 内核能用吗?
Rabbit52
5 天前
@Rebron1900 能用,但是注意根据自己的实际情况调整
vvhy
5 天前
@Rabbit52 比如浏览器发出一个域名的请求,如果不加 no-resolve ,clash 就会先把域名解析成 ip ,再判断 ip 规则是否满足
Rabbit52
5 天前
@vvhy 文档的意思好像 no-resolve 的参数只适用于 ip 集,不是域名,我就没搞懂了

https://wiki.metacubex.one/config/rules/#no-resolve
JohnSmith
4 天前
@Rabbit52 #2 mihomo 的实现,不会去依赖 rules 之间的顺序的,也就是不会带上下文
Rabbit52
4 天前
@JohnSmith 我的意思是 ip 集的规则它为什么需要 no-resolve 参数呢,本来就有 ip 了呀
remidre
17 小时 35 分钟前
@Rabbit52 解析是从上至下的,假如有个域名[www.google.com]要走你的规则,一上来碰到的是 ip 集,clash 会先把域名解析成 ip 去匹配你的 ip 集,如果命中了就走你的 ip 规则,没命中就走后面的域名规则,但它已经被解析成 ip 了,后续就不会走你的域名规则了。所以一般 ip 类规则的放后面,或者加 no-resolve ,强制不解析
Rabbit52
15 小时 59 分钟前
@remidre 感谢 解释的很清楚,那看来 match 前加 no-resolve 的可能会代理上一些没在列表内的 cn ip ,不过这本来就是预期内的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1074706

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX