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

47 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
💡 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 请求刚进来,只有域名,还没有解析出 IP**。
`geolocation!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 接管,省电、省内存、速度最快。