Files
ruleset/config/stash/111.MD
T
2026-08-31 01:33:32 +08:00

4.1 KiB
Raw Blame History

💡 direct-nameserver: - system direct-nameserver-follow-policy: false stash ios客户端支持吗

Stash iOS 客户端部分支持该字段,具体取决于你的版本。 由于 Stash 的内核深度兼容 Mihomo (Clash.Meta) 语法,这两个字段的支持情况如下:

  1. direct-nameserver结论:支持。说明:Stash 早已支持该字段。当你配置 - system 时,针对 DIRECT(直连)出口的域名,Stash 会直接使用 iOS 系统当前网络(如 Wi-Fi 或蜂窝网络)的底层 DNS 进行解析。
  2. direct-nameserver-follow-policy结论:较新版本支持。说明:该字段属于 Mihomo 较新引入的 DNS 进阶特性(默认值为 false)。如果你的 Stash 客户端保持在较新版本,它能够正常识别并读取该配置。

💡 nameserver-policy: 'geosite:geolocation-!cn': ['tls://1.1.1.1', 'tls://8.8.8.8'] #🚀节点选择这个规则是不是无效的,nameserverpolicy 执行时机:DNS 请求刚进来,只有域名,还没有解析出 IPgeolocation!cn 需要拿到解析后的 IP 才能判断 “是不是境外”,DNS 阶段没有 IP 数据,**完全无法完成匹配,这条 key 永远不会命中任何域名, 我的理解有问题吗,我需要删除这条规则吗

你的理解完全正确!在概念和原理上,你抓住了网络分流最核心的痛点。 你分析得非常准:nameserver-policy 发生在 DNS 解析前(只有域名),而类似 geoip:cn 这种规则,必须要先拿到 IP 地址 才能进行地理位置判断。 但是,在这条特定规则里,有一个绝大多数人都容易混淆的细节: 核心误区:你把 GEOSITE 和 GEOIP 搞混了 GEOIP: 基于 IP 的地理位置划分(需要先解析出 IP,DNS 阶段确实无法直接使用)。 GEOSITE:基于 域名 的分类预设列表。它不需要 IP geosite:geolocation-!cn 是由 V2Ray / Mihomo 社区维护的一个域名列表文件(文本文件)。 这个列表中收集了数万个明确属于海外(非中国大陆地区)的域名(例如 google.com、youtube.com、twitter.com)。 虽然名字叫 geolocation-!cn(地理位置非中国),但它本质上是一堆域名的死数据,而不是动态去探测 IP。

💡 结论:这条规则不是无效的,它能正常命中当一个 DNS 请求(比如 youtube.com)进来时: Stash 会去翻内置的 geosite 数据库。 发现 youtube.com 赫然写在 geolocation-!cn 这个域名列表里。 匹配成功!Stash 就会用你指定的 tls://1.1.1.1 去解析它。 所以,你不需要删除它,它是可以正常工作的。

💡 为什么现在不推荐这么写?(优化的理由) 虽然这条规则有效,但从配置优化的角度来看,依然建议你精简或修改它。

  1. 体积过大,浪费手机内存(iOS 痛点)geolocation-!cn 包含了几乎大半个国外的域名,列表极大。iOS 客户端(如 Stash)受到系统 Network Extension 的严格内存限制(通常不能超过 50MB)。在 DNS 阶段让 Stash 去反复匹配这么庞大的域名数据库,会增加内存开销和解析延迟。
  2. 逻辑重复(如果是 Fake-IP 模式)如果你使用的是 enhanced-mode: fake-ip:国外域名的 DNS 解析结果在本地根本不重要,因为 Stash 会直接返回一个 198.18.x.x 的虚假 IP。真正的 DNS 解析是在你远端的代理服务器上完成的。在本地大费周章用加密 DNS(DoT)去解析国外域名,属于“脱裤子放屁”,没有任何实质收益。

🛠️ 最佳实践:怎么改最清爽? 在目前主流的 Fake-IP 架构下,DNS 的核心原则是:“国内域名精准分流,国外域名不闻不问(交给默认/代理处理)”。 建议将你的 nameserver-policy 精简为只管国内和局域网,其余放行: nameserver-policy:

局域网和国内域名,用国内最快的传统 DNS 解析(保证国内 cdn 体验)

"geosite:private,cn": - 223.5.5.5 - 119.29.29.29

至于国外的域名,直接不写。

它们会自动走到你的默认 nameserver 或者直接被 fake-ip 接管,省电、省内存、速度最快。